<?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>226676</bug_id>
          
          <creation_ts>2021-06-04 22:06:13 -0700</creation_ts>
          <short_desc>Optimize compareStrictEq when neither side is a double and at least one is neither a string nor a BigInt</short_desc>
          <delta_ts>2021-06-18 12:40:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226755</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226786</blocked>
    
    <blocked>227119</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767103</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 22:06:13 -0700</bug_when>
    <thetext>NaN === NaN must return false, even if the bits are the same.
42 === 42.0 must return true, even if the bits are different
&quot;foo&quot; === &quot;foo&quot; must return true, even if the bits of the pointers to the strings are different
42n === 42n must return true, even if the bits of the pointers to the big integers are different

In all other cases we can do === by just comparing the bits of the JSValue

So we should speculate aggressively on this. According to profiling done by Phil, this optimization should be applicable to lots of functions in Speedometer2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767116</commentid>
    <comment_count>1</comment_count>
      <attachid>430646</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 23:00:07 -0700</bug_when>
    <thetext>Created attachment 430646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767117</commentid>
    <comment_count>2</comment_count>
      <attachid>430646</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 23:31:30 -0700</bug_when>
    <thetext>Comment on attachment 430646
Patch

I just realized that the optimization is wrong in the case of HeapBigInt/BigInt32 if they are allowed to be equal.

I will put a guard with #if !USE(BIGINT32) around the part in DFGFixupPhase, then whenever I restore BIGINT32 I will have to either fix this optimization, or (more and more likely in my opinion) add an invariant that we never have small HeapBigInts when BigInt32 are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767118</commentid>
    <comment_count>3</comment_count>
      <attachid>430646</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-04 23:33:02 -0700</bug_when>
    <thetext>Comment on attachment 430646
Patch

I&apos;ve also clearly broken the build on 32-bits, so taking this off the r? flag until I have fixed both problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767132</commentid>
    <comment_count>4</comment_count>
      <attachid>430649</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-05 08:19:14 -0700</bug_when>
    <thetext>Created attachment 430649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767138</commentid>
    <comment_count>5</comment_count>
      <attachid>430651</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-05 10:41:05 -0700</bug_when>
    <thetext>Created attachment 430651
Patch

Another attempt at fixing the 32-bit build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767142</commentid>
    <comment_count>6</comment_count>
      <attachid>430654</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-05 11:45:14 -0700</bug_when>
    <thetext>Created attachment 430654
Patch

Fixing yet another issue with 32-bits builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767519</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-07 12:55:36 -0700</bug_when>
    <thetext>Committed r278568 (238566@main): &lt;https://commits.webkit.org/238566@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430654.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767520</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-07 12:56:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/78959047&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430646</attachid>
            <date>2021-06-04 23:00:07 -0700</date>
            <delta_ts>2021-06-05 08:19:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226676</filename>
            <type>text/plain</type>
            <size>29199</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
M2NiODk4ZmIyZDEwLi4yMDMzMTVkYTYwMDAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDYtMDQgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBtYWRlIHR3byB2YXJpYW50cyBvZiB0aGUg
YWxyZWFkeSBleGlzdGluZyBwb2x5LXN0cmljdGVxIG1pY3JvYmVuY2htYXJrcyB3aXRoIGRpZmZl
cmVudCB0eXBlcyBpbiB0aGUgYXJyYXkuCisgICAgICAgIEkgYWxzbyB0d2Vha2VkIGFsbCB0aHJl
ZSBzbyB0aGF0IHdlIG1vcmUgcmVsaWFibHkgcmVhY2ggdGhlIEZUTC4KKyAgICAgICAgRmluYWxs
eSBJIGFkZGVkIGEgc3RyZXNzLXRlc3QgdG8gdmVyaWZ5IHRoYXQgSSBkaWQgbm90IGludHJvZHVj
ZSBhbiBPU1IgZXhpdCBidWcuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5v
dC1kb3VibGUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzOgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3Vi
bGUtbm9yLXN0cmluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFByaXZhdGUgc3RhdGljIG1ldGhvZCBzaG91bGQgZGVmaW5lIHByaXZh
dGVDbGFzc0JyYW5kSWRlbnRpZmllciBpbiBjbGFzcy1zY29wZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2MDlkYjM2
ODhjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3Ry
aWN0ZXEtbm90LWRvdWJsZS1ub3Itc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lw
IGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mt
c3RyZXNzLXRlc3QucHkKKy8vQCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ug
b2YgcG9seW1vcnBoaWMgc3RyaWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2Yg
dHlwZXMsIGJ1dCBub3QgRG91Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0
aGUgb25seSB2YWx1ZSB0aGF0IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYu
CisvLyBUaGlzIHRlc3QgZG9lcyBub3QgaGF2ZSBzdHJpbmdzIG9yIGJpZyBpbnRzIGVpdGhlci4g
VGhpcyBpcyByZWxldmFudCBiZWNhdXNlIHN0cmluZ3MvYmlnIGludHMgYXQgZGlmZmVyZW50IHBs
YWNlcyBpbiBtZW1vcnkgY2FuIGNvbXBhcmUgZXF1YWwuCisKK3ZhciBhcnJheSA9IFtdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGklMikgPT0g
MCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKFtpXSk7CisgICAgdmFyIG8g
PSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChvKTsKK30KKwor
dmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7CisgICAgaWYo
eCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3Vs
dDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCkKK3Rlc3QoKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91Ymxl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdlNjNiODJkM2QzCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1u
b3QtZG91YmxlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBw
bGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8v
QCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcG9seW1vcnBoaWMgc3Ry
aWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2YgdHlwZXMsIGJ1dCBub3QgRG91
Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0aGUgb25seSB2YWx1ZSB0aGF0
IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYuCisKK3ZhciBhcnJheSA9IFtd
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGkl
MikgPT0gMCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKCIiICsgaSk7Cisg
ICAgdmFyIG8gPSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChv
KTsKK30KKwordmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7
CisgICAgaWYoeCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3Jy
ZWN0IHJlc3VsdDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCk7Cit0ZXN0
KCk7CisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3Rl
cS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3RyaWN0ZXEuanMKaW5kZXggOWQw
NTMwNmU1MTU3Li5hNDY4NWQwYzlmNWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHktc3RyaWN0ZXEuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1z
dHJpY3RlcS5qcwpAQCAtNiw4ICs2LDggQEAKIHZhciBhcnJheSA9IFtdOwogCiBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgIGFycmF5LnB1c2goaSk7Ci0gICAgYXJyYXkucHVz
aCgoaSUyKSA9PSAwKTsKKyAgICBhcnJheS5wdXNoKChpICUgMikgPT0gMCk7CisgICAgYXJyYXku
cHVzaCgzLjE0ICogaSk7CiAgICAgYXJyYXkucHVzaCgiIiArIGkpOwogICAgIHZhciBvID0ge307
CiAgICAgb1siYSIgKyBpXSA9IGkgKyAxOwpAQCAtMTUsMTUgKzE1LDI1IEBAIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CiB9CiAKIHZhciBudW1TdHJpY3RFcXVhbCA9IDA7Ci1mb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9IGkg
KyAxOyBqIDwgYXJyYXkubGVuZ3RoOyArK2opIHsKLSAgICAgICAgaWYgKGFycmF5W2ldID09PSBh
cnJheVtqXSkKLSAgICAgICAgICAgIG51bVN0cmljdEVxdWFsKys7Ci0gICAgfQorCitmdW5jdGlv
biBmb28oeCwgeSkKK3sKKyAgICBpZih4ID09PSB5KQorICAgICAgICBudW1TdHJpY3RFcXVhbCsr
OwogfQogCi1pZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQotICAgIHRocm93ICJJbmNvcnJl
Y3QgcmVzdWx0OiAiICsgbnVtU3RyaWN0RXF1YWw7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFy
IGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28oYXJy
YXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIGlmIChudW1TdHJpY3RF
cXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsgbnVt
U3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KTsKK3Rlc3QoKTsKIAogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZy1mYWls
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmct
ZmFpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzZjZkOWVl
YTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nLWZhaWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHNraXAgaWYg
JG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJl
c3MtdGVzdC5weQorCit2YXIgYXJyYXkgPSBbXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICBhcnJheS5wdXNoKChpJTIpID09IDApOworICAgIGFycmF5LnB1c2goaSk7
CisgICAgYXJyYXkucHVzaChbaV0pOworICAgIHZhciBvID0ge307CisgICAgb1siYSIgKyBpXSA9
IGkgKyAxOworICAgIGFycmF5LnB1c2gobyk7Cit9CisKK3ZhciBudW1TdHJpY3RFcXVhbCA9IDA7
CisKK2Z1bmN0aW9uIGZvbyh4LCB5KQoreworICAgIGlmKHggPT09IHkpCisgICAgICAgIG51bVN0
cmljdEVxdWFsKys7Cit9Citub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28o
YXJyYXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChudW1TdHJp
Y3RFcXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsg
bnVtU3RyaWN0RXF1YWw7CisKKyAgICBmb28oNDIsIDQyLjApOworICAgIGZvbyhOYU4sIE5hTik7
CisgICAgZm9vKCJmb29iYXIiLCAiZm9vIiArICJiYXIiKQorCisgICAgaWYgKG51bVN0cmljdEVx
dWFsICE9IDI0OTUwMikKKyAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgYXQgdGhlIGVu
ZCAiICsgbnVtU3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KQordGVzdCgpOworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNjE3NWVkMWQ0N2UuLmE1OWExYmQ2NTVjMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDYtMDQgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBjb21wYXJl
U3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBp
cyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSB3aGVyZSB4
ID09PSB5IG11c3QgcmV0dXJuIGZhbHNlIGRlc3BpdGUgeCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3
aXRoIHRoZSBzYW1lIGJpdHM6CisgICAgICAgICAgICBOYU4gPT09IE5hTgorICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgY2FzZXMgd2hlcmUgeCA9PT0geSBtdXN0IHJldHVybiB0cnVlIGRlc3BpdGUg
eCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3aXRoIHBvdGVudGlhbGx5IGRpZmZlcmVudCBiaXRzOgor
ICAgICAgICAgICAgRG91YmxlID09PSBJbnQzMgorICAgICAgICAgICAgU3RyaW5nID09PSBTdHJp
bmcKKyAgICAgICAgICAgIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQKKyAgICAgICAgICAgIEhl
YXBCaWdJbnQgPT09IEJpZ0ludDMyIChpZiB0aGV5IGFyZSBlbmFibGVkKQorICAgICAgICBJZiB3
ZSBkb24ndCBoYXZlIGEgZG91YmxlIG9uIGVpdGhlciBzaWRlLCBhbmQgYXQgbGVhc3Qgb25lIHNp
ZGUgaGFzIG5laXRoZXIgYSBTdHJpbmcgbm9yIGEgSGVhcEJpZ0ludCwgd2UgY2FuIGNsZWFybHkg
aWdub3JlIGFsbCBvZiB0aGVzZSBwYXRob2xvZ2ljYWwgY2FzZXMuCisKKyAgICAgICAgVGhpcyBv
cHRpbWl6YXRpb24gd2FzIGRlY2lkZWQgYmFzZWQgb24gbG9va2luZyBhdCBERkcgZ3JhcGhzIG9m
IFNwZWVkb21ldGVyMjsgaGVyZSBpcyBhIHNhbXBsZSBvZiB0aGUgY29tcGFyZVN0cmljdEVxKFVu
dHlwZWQsIFVudHlwZWQpLCBjb3VydGVzeSBvZiBQaGlsOgorICAgICAgICAgICAgRmluYWx8QXJy
YXl8U3RyaW5nfEJvb2wsIEZpbmFsfEFycmF5fFN0cmluZ3xCb29sCisgICAgICAgICAgICBBcnJh
eXxTdHJpbmd8Qm9vbCwgU3RyaW5nfEJvb2wgKHR3aWNlKQorICAgICAgICAgICAgQXJyYXl8U3Ry
aW5nfEJvb2wsIFN0cmluZ3xJbnQzMiAob25jZSBpbiBERkcsIG9uY2UgaW4gRlRMKQorICAgICAg
ICAhICAgQXJyYXl8U3RyaW5nfEJvb2wsIEFycmF5fEJvb2wKKyAgICAgICAgISAgIEZpbmFsfE90
aGVyLCBGaW5hbHxPdGhlcgorICAgICAgICAhICAgSW50MzJ8T3RoZXIsIEludDMyCisgICAgICAg
ICAgICBGaW5hbHxTdHJpbmdJZGVudCwgRmluYWx8U3RyaW5nSWRlbnQgKDMgdGltZXMpCisgICAg
ICAgICAgICBGaW5hbHxTdHJpbmdJZGVudHxCb29sSW50MzIsIFN0cmluZ0lkZW50fEJvb2xJbnQz
MiAodHdpY2UpCisgICAgICAgICAgICBTdHJpbmd8Qm9vbCwgU3RyaW5nfEJvb2wgKDQgdGltZXMp
CisgICAgICAgICAgICBEb3VibGVQdXJlTmFOLCBTdHJpbmd8Qm9vbAorICAgICAgICAhICAgT3Ro
ZXIsIEZ1bmN0aW9ufE90aGVyCisgICAgICAgICEgICBGaW5hbHxPdGhlciwgRmluYWx8RnVuY3Rp
b258T3RoZXIgKHR3aWNlKQorICAgICAgICAgICAgRmluYWx8U3RyaW5nfEJvb2x8T3RoZXIsIEZp
bmFsfFN0cmluZ3xCb29sfE90aGVyICgzIHRpbWVzLCB0d28gaW4gdGhlIEZUTCkKKyAgICAgICAg
ICAgIEZpbmFsfFN0cmluZ3xJbnQzMiwgU3RyaW5nfEludDMyIChmb3VyIHRpbWVzKQorICAgICAg
ICAgICAgU3RyaW5nfEludDMyfEJvb2wsIEZ1bmN0aW9ufFN0cmluZ3xJbnQzMnxCb29sICh0d2lj
ZSkKKyAgICAgICAgICAgIFN0cmluZ3xEb3VibGVQdXJlTmFOLCBTdHJpbmd8Qm9vbCAodHdpY2Up
CisgICAgICAgICEgICBGaW5hbHxCb29sfE90aGVyLCBGaW5hbHxGdW5jdGlvbnxPdGhlciAoZm91
ciB0aW1lcywgdHdpY2UgaW4gRlRMKQorICAgICAgICBJIG1hcmtlZCB3aXRoIGEgISB0aG9zZSBm
b3Igd2hpY2ggdGhpcyBvcHRpbWl6YXRpb24gc2hvdWxkIGFwcGx5LgorCisgICAgICAgIFRoZSBv
bmx5IHNsaWdodGx5IGludGVyZXN0aW5nIHBhcnQgb2YgdGhpcyBwYXRjaCBpcyBERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyB3
aGVyZSBJIHRvb2sgY2FyZSB0byBza2lwIGV2ZXJ5IHRlc3Qgd2hvc2UgcmVzdWx0IHdlIGNhbiBw
cmVkaWN0IGZyb20gdGhlIGFic3RyYWN0IGludGVycHJldGVyLgorCisgICAgICAgIFJlc3VsdHMg
b24gbWljcm9iZW5jaG1hcmtzOgorICAgICAgICAgICAgcG9seS1zdHJpY3RlcS1ub3QtZG91Ymxl
ICAgICAgICAgICAgICAgICAgNDUuNTc5MystMC41MzA0ICAgICA/ICAgICA0Ni4wMzA2Ky0wLjU2
MjEgICAgICAgID8KKyAgICAgICAgICAgIHBvbHktc3RyaWN0ZXEtbm90LWRvdWJsZS1ub3Itc3Ry
aW5nICAgICAgIDQ1LjU4MjkrLTAuNTc1MCAgICAgXiAgICAgMTYuOTA4OSstMC4zMDcwICAgICAg
ICBeIGRlZmluaXRlbHkgMi42OTU4eCBmYXN0ZXIKKyAgICAgICAgICAgIHBvbHktc3RyaWN0ZXEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5Ljk3MTkrLTAuNjQ1MCAgICAgICAgICAgNDgu
OTg1NSstMC41MjI3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwMXggZmFzdGVyCisKKyAgICAgICAg
SSBhbHNvIG1lYXN1cmVkIHRoZSBhbW91bnQgb2YgY29kZSB0aGF0IHdlIGdlbmVyYXRlIGluIHRo
ZSBERkcgb24gSmV0U3RyZWFtMi4KKyAgICAgICAgVGhlIHJlc3VsdHMgaGVyZSBhcmUgZGlzYXBw
b2ludGluZyBidXQgc3RpbGwgbWVhc3VyYWJsZS4gQmVmb3JlOgorICAgICAgICAgICAgREZHX2Zh
c3RfQ29tcGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2ODQyNSBjb3VudDogMTA5NTEgYXZnOiA0
Mi43NzQ2MzIKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0b3RhbEJ5dGVz
OiA0NjgwMjAgY291bnQ6IDEwOTE3IGF2ZzogNDIuODcwNzUyCisgICAgICAgICAgICBERkdfZmFz
dF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY3NDI0IGNvdW50OiAxMDg4OCBhdmc6IDQy
LjkzMDE5OAorICAgICAgICBBZnRlcjoKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJp
Y3RFcSB0b3RhbEJ5dGVzOiA0NjM5NDYgY291bnQ6IDEwOTE3IGF2ZzogNDIuNDk3NTczCisgICAg
ICAgICAgICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDc0NDkyIGNvdW50
OiAxMTEzOCBhdmc6IDQyLjYwMTE4NQorICAgICAgICAgICAgREZHX2Zhc3RfQ29tcGFyZVN0cmlj
dEVxIHRvdGFsQnl0ZXM6IDQ2NzEzOCBjb3VudDogMTA5NzAgYXZnOiA0Mi41ODMyMjcKKworICAg
ICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAgIChKU0M6OmlzTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBDb21wYXJlU3RyaWN0RXFBbmRTYW1lVmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6Om9wZXJhdG9yKCkpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmdTdHJpY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU5vdERvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAgICAg
IChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6Y2hlY2tNYXlD
cmFzaElmSW5wdXRJc0VtcHR5KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1
bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKToKKwogMjAyMS0wNi0wNCAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogbWFyayByZWNlbnRseSBhZGRlZCBwcm90b2NvbCBjb21tYW5kcy9ldmVudHMgYXMgcGFnZS1v
bmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CmluZGV4IDY2MWVlYzZkOWRhMS4uOTY5Nzc4MzU1NzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApAQCAtNDQ0LDYgKzQ0NCwxMSBAQCBp
bmxpbmUgYm9vbCBpc05vdERvdWJsZVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAg
ICAgcmV0dXJuICEodHlwZSAmIFNwZWNGdWxsRG91YmxlKTsKIH0KIAoraW5saW5lIGJvb2wgaXNO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHR5cGUpCit7CisgICAgcmV0dXJuICEodHlwZSAmIChTcGVjRnVsbERvdWJsZSB8IFNwZWNI
ZWFwQmlnSW50IHwgU3BlY1N0cmluZykpOworfQorCiBpbmxpbmUgYm9vbCBpc090aGVyU3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlID09IFNwZWNP
dGhlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1MTAwYzVj
N2Q2NDUuLmFkY2I3MjlkZDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgLy8gICAgIDEuIEFsbG9jYXRlcyBhbnkgb2JqZWN0cy4KICAgICAvLyAgICAgMi4g
UmVzb2x2ZXMgYSByb3BlIHN0cmluZywgd2hpY2ggYWxsb2NhdGVzIGEgc3RyaW5nLgogICAgIC8v
ICAgICAzLiBQcm9kdWNlcyBhIHN0cmluZyAod2hpY2ggYWxsb2NhdGVzIHRoZSBzdHJpbmcpIGV4
Y2VwdCB3aGVuIHdlIGNhbiBwcm92ZSB0aGF0Ci0gICAgLy8gICAgICAgIHRoZSBzdHJpbmcgd2ls
bCBhbHdheXMgYmUgb25lIG9mIHRoZSBwcmUtYWxsY29hdGVkIFNtYWxsU3RyaW5ncy4KKyAgICAv
LyAgICAgICAgdGhlIHN0cmluZyB3aWxsIGFsd2F5cyBiZSBvbmUgb2YgdGhlIHByZS1hbGxvY2F0
ZWQgU21hbGxTdHJpbmdzLgogICAgIC8vICAgICA0LiBUcmlnZ2VycyBhIHN0cnVjdHVyZSB0cmFu
c2l0aW9uICh3aGljaCBjYW4gYWxsb2NhdGUgYSBuZXcgc3RydWN0dXJlKQogICAgIC8vICAgICAg
ICB1bmxlc3MgaXQgaXMgYSBrbm93biB0cmFuc2l0aW9uIGJldHdlZW4gcHJldmlvdXNseSBhbGxv
Y2F0ZWQgc3RydWN0dXJlcwogICAgIC8vICAgICAgICBzdWNoIGFzIGJldHdlZW4gQXJyYXkgdHlw
ZXMuCkBAIC00OTYsNyArNDk2LDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSwgVW50
eXBlZFVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE9iamVjdFVzZSkK
ICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UpCiAgICAgICAg
ICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkgfHwgbm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCi0gICAgICAgICAgICB8fCBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpKQor
ICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlLCBOb3RT
dHJpbmdWYXJVc2UpIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChOb3RTdHJpbmdWYXJVc2UsIFN0
cmluZ0lkZW50VXNlKQorICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERv
dWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpIHx8IG5vZGUt
PmlzQmluYXJ5VXNlS2luZChOb3REb3VibGVVc2UsIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nVXNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGExNGE1MzZhODRkYS4uMjhiNWRjMWY1NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTQ0MDgsNiArNDQwOCwyMCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFyZVN0cmljdEVxKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKCkK
KyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVOb3REb3VibGUo
KSkgeworICAgICAgICAgICAgZml4RWRnZTxOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZs
YWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOb3REb3VibGUoKQorICAg
ICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Tm90RG91Ymxl
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhDb21wYXJlU3RyaWN0RXEpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBmaXh1cENoZWNrc0luQmxvY2so
QmFzaWNCbG9jayogYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGUx
YzZjYTI1MmFiZC4uMzVjZDU0YzhhMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aApAQCAtMjgwMiw2ICsyODAyLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBp
c05vdERvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQorCisgICAgYm9vbCBz
aG91bGRTcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZygpCisgICAg
eworICAgICAgICByZXR1cm4gaXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Nw
ZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlVW50eXBlZEZvckFyaXRobWV0aWMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggOWRjN2NlMGY5MmU0Li5mNmM5MWUyM2Jm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBA
IC05Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAg
IGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICBjYXNlIE5vdERvdWJsZVVzZToKKyAg
ICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEtub3duSW50MzJVc2U6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDE2MmYxNmE3OTk3OS4uOTRhNzMxNWJkYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNjkzMyw3ICs2OTMzLDQwIEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlU3ltYm9sRXF1YWxpdHkobm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgCisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKSB7CisgICAgICAgIEVkZ2Ugbm90
RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgRWRnZSBuZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIHVu
c2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAg
ICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5v
ZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAg
ICAgICAgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlLCBub3REb3VibGVDaGlsZCwg
bmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CisgICAgICAgICAgICB1
c2Uobm90RG91YmxlQ2hpbGQpOworICAgICAgICAgICAgdXNlKG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nQ2hpbGQpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFu
Y2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVOb3RE
b3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KG5v
ZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0No
aWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLCBOb3REb3Vi
bGVVc2UpKSB7CisgICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJp
bmdDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIG5vdERvdWJsZUNoaWxkID0g
bm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRl
dGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0g
VUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChi
cmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlTm90RG91Ymxl
TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBi
cmFuY2hOb2RlLCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdDaGlsZCk7CisgICAgICAgICAgICB1c2Uobm90RG91YmxlQ2hpbGQpOworICAgICAgICAg
ICAgdXNlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpOworICAgICAg
ICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBt
X2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSGVhcEJpZ0ludFVzZSkpIHsK
ICAgICAgICAgY29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNzE2Myw2ICs3MTk2LDU0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUpCiAg
ICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTm90RG91YmxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiBub2RlLCBFZGdl
IG5vdERvdWJsZUNoaWxkLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
Q2hpbGQpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBub3REb3VibGVDaGlsZCwg
TWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlz
LCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworCisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgbGVmdCwgcmlnaHQpOworICAgIEpTVmFsdWVSZWdz
IGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVn
cyA9IHJpZ2h0LmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigp
OworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICBHUFJSZWcgcmlnaHRHUFIg
PSByaWdodC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgc3BlY3VsYXRlTm90RG91YmxlKG5vdERvdWJsZUNoaWxkLCBsZWZ0UmVncywgdGVtcEdQUik7
CisgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcobmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCwgcmlnaHRSZWdzLCB0ZW1wR1BSKTsK
KworICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdo
dEdQUiwgcmVzdWx0R1BSKTsKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU5vdERvdWJs
ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9kZSos
IE5vZGUqIGJyYW5jaE5vZGUsIEVkZ2Ugbm90RG91YmxlQ2hpbGQsIEVkZ2UgbmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0
KHRoaXMsIG5vdERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpT
VmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nQ2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3Mo
KTsKKyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOworICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQu
Z3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3ByKCk7CisKKyAgICBzcGVjdWxh
dGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQsIGxlZnRSZWdzLCB0ZW1wR1BSKTsKKyAgICBzcGVj
dWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhuZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCByaWdodFJlZ3MsIHRlbXBHUFIpOworCisgICAgQmFz
aWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwor
ICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RU
YWtlbi5ibG9jazsKKworICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBi
cmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgbm90VGFr
ZW4pOworICAgICAgICBqdW1wKHRha2VuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2hQ
dHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdodEdQUiwgdGFrZW4pOworICAgICAg
ICBqdW1wKG5vdFRha2VuKTsKKyAgICB9Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpbmdFcXVhbGl0eSgKICAgICBOb2RlKiBub2RlLCBHUFJSZWcgbGVmdEdQUiwgR1BSUmVn
IHJpZ2h0R1BSLCBHUFJSZWcgbGVuZ3RoR1BSLCBHUFJSZWcgbGVmdFRlbXBHUFIsCiAgICAgR1BS
UmVnIHJpZ2h0VGVtcEdQUiwgR1BSUmVnIGxlZnRUZW1wMkdQUiwgR1BSUmVnIHJpZ2h0VGVtcDJH
UFIsCkBAIC0xMTQzMiw2ICsxMTUxMywyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVOb3RDZWxsTm9yQmlnSW50KEVkZ2UgZWRnZSkKICNlbmRpZgogfQogCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBH
UFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjRnVs
bERvdWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7
CisKKyAgICBib29sIG1heUJlSW50MzIgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0ludDMy
T25seSk7CisgICAgaWYgKG1heUJlSW50MzIpCisgICAgICAgIGRvbmUgPSBtX2ppdC5icmFuY2hJ
ZkludDMyKHJlZ3MpOworCisgICAgREZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwgflNwZWNGdWxs
RG91YmxlLCBtX2ppdC5icmFuY2hJZk51bWJlcihyZWdzLCB0ZW1wR1BSKSk7CisKKyAgICBpZiAo
bWF5QmVJbnQzMikKKyAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCB+U3BlY0Z1bGxEb3VibGUpKQpAQCAtMTE0NDIsOSArMTE1NDAsNDQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91YmxlKEVkZ2UgZWRnZSkKICAg
ICBKU1ZhbHVlUmVncyByZWdzID0gb3BlcmFuZC5qc1ZhbHVlUmVncygpOwogICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0g
bV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKTsKKyAgICBzcGVjdWxhdGVOb3REb3VibGUoZWRnZSwg
cmVncywgdGVtcEdQUik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVn
cywgR1BSUmVnIHRlbXBHUFIpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNw
ZWNGdWxsRG91YmxlIHwgU3BlY1N0cmluZykpKQorICAgICAgICByZXR1cm47CisKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQzMiA9IG5lZWRz
VHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJbnQzMikKKyAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKSk7CisKICAgICBERkdf
VFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJyYW5jaElmTnVt
YmVyKHJlZ3MsIHRlbXBHUFIpKTsKLSAgICBkb25lLmxpbmsoJm1faml0KTsKKworICAgIGJvb2wg
bWF5Tm90QmVDZWxsID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwpOworICAgIGlmICht
YXlOb3RCZUNlbGwpCisgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChy
ZWdzKSk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY1N0cmluZywgbV9q
aXQuYnJhbmNoSWZTdHJpbmcocmVncy5ncHIoKSkpOworICAgIERGR19UWVBFX0NIRUNLKHJlZ3Ms
IGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KHJlZ3MuZ3By
KCkpKTsKKworICAgIGlmIChtYXlCZUludDMyIHx8IG1heU5vdEJlQ2VsbCkKKyAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjU3RyaW5nKSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSwgTWFu
dWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICBKU1ZhbHVlUmVncyByZWdzID0gb3BlcmFuZC5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nKGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJl
ZyB0ZW1wR1BSKQpAQCAtMTE2MzIsNiArMTE3NjUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGUoTm9kZSosIEVkZ2UgZWRnZSkKICAgICBjYXNlIE5vdERvdWJsZVVzZToKICAgICAg
ICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgorICAgICAgICBzcGVjdWxhdGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBPdGhlclVzZToKICAgICAgICAgc3BlY3VsYXRlT3RoZXIoZWRnZSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IGJhNTNmMGUyODU3Ny4uZjhiMjk5OGQ0ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMTg5LDYgKzExODksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21waWxlU3ltYm9sRXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhv
bGVTeW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CisgICAgdm9pZCBjb21w
aWxlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVh
bGl0eShOb2RlKiwgRWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nRWRnZSk7CisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVOb3REb3VibGVO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBO
b2RlKiBicmFuY2hOb2RlLCBFZGdlIG5vdERvdWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdFZGdlKTsKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xVbnR5cGVk
RXF1YWxpdHkoTm9kZSosIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7CiAKICAg
ICB2b2lkIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2UgdmFsdWUsIEJhc2ljQmxvY2sqIHRh
a2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbik7CkBAIC0xNjcxLDcgKzE2NzMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbE5vckJp
Z0ludChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdlLCBKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTm90RG91YmxlKEVkZ2UpOworICAg
IHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSwg
SlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIo
RWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVy
KEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXggZGQwOWRmNzJmOTJlLi40
YjQzYzc1ZGZkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNl
S2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcApA
QCAtMTczLDYgKzE3Myw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBV
c2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIG91dC5wcmlu
dCgiTm90RG91YmxlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgorICAgICAgICBvdXQucHJpbnQoIk5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtu
b3duT3RoZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25PdGhlciIpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IGMyNzY5NjVk
MWIzNy4uOTRlNTcxMDA1ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQu
aApAQCAtODIsNiArODIsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIE5vdENlbGxVc2UsCiAgICAg
Tm90Q2VsbE5vckJpZ0ludFVzZSwKICAgICBOb3REb3VibGVVc2UsCisgICAgTmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UsCiAgICAgS25vd25PdGhlclVzZSwKICAgICBPdGhl
clVzZSwKICAgICBNaXNjVXNlLApAQCAtMTkwLDYgKzE5MSw4IEBAIGlubGluZSBTcGVjdWxhdGVk
VHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJuIH5TcGVj
Q2VsbENoZWNrICYgflNwZWNCaWdJbnQ7CiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAg
IHJldHVybiB+U3BlY0Z1bGxEb3VibGU7CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgcmV0dXJuIH5TcGVjRnVsbERvdWJsZSAmIH5TcGVj
SGVhcEJpZ0ludCAmIH5TcGVjU3RyaW5nOwogICAgIGNhc2UgS25vd25PdGhlclVzZToKICAgICBj
YXNlIE90aGVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY090aGVyOwpAQCAtMzA5LDYgKzMxMiw3
IEBAIGlubGluZSBib29sIGNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eShVc2VLaW5kIGtpbmQp
CiAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgIGNhc2UgTm90Q2VsbE5vckJpZ0ludFVzZToKICAg
ICBjYXNlIE5vdERvdWJsZVVzZToKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nVXNlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggZGE2MjU0OTI5M2QxLi42NTRjZWI0ODQxOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTUyOSw2ICs1MjksNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAg
ICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBBbnlJbnRV
c2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgICAgICAgICAgICAg
Y2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDA1YjVkYmZmMDNlMi4uZjRlZmU2ZDBkMmYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05NTAyLDcg
Kzk1MDIsOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9u
b2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkKLSAgICAgICAgICAgIHx8
IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpKSB7CisgICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKQorICAg
ICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLCBO
b3REb3VibGVVc2UpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBM
VmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNw
ZWN1bGF0aW9uKTsKQEAgLTE4NDA2LDYgKzE4NDA4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBOb3REb3VibGVVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUoZWRnZSk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nKGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
T3RoZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVPdGhlcihlZGdlKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTg0NjksNiArMTg0NzQsMzEgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CisKKyAgICB2b2lkIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSkKKyAg
ICB7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVk
Z2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNO
b3RJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbEJs
b2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1
ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNOb3RJ
bnQzMikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
aXNOb3RJbnQzMiwgaXNDZWxsQmxvY2spOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVl
VmFsdWUodmFsdWUpLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKHZhbHVlKSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpLCB1bnN1
cmUoaXNDZWxsQmxvY2spLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oaXNDZWxsQmxvY2ssIGNvbnRpbnVhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NI
RUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjU3RyaW5nLCBpc1N0cmluZyh2YWx1
ZSkpOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCB+
U3BlY0hlYXBCaWdJbnQsIGlzSGVhcEJpZ0ludCh2YWx1ZSkpOworICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CisgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbE9yT3RoZXIoRWRn
ZSBlZGdlKQogICAgIHsK
</data>
<flag name="commit-queue"
          id="452171"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430649</attachid>
            <date>2021-06-05 08:19:14 -0700</date>
            <delta_ts>2021-06-05 10:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226676</filename>
            <type>text/plain</type>
            <size>30170</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
M2NiODk4ZmIyZDEwLi4yMDMzMTVkYTYwMDAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDYtMDQgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBtYWRlIHR3byB2YXJpYW50cyBvZiB0aGUg
YWxyZWFkeSBleGlzdGluZyBwb2x5LXN0cmljdGVxIG1pY3JvYmVuY2htYXJrcyB3aXRoIGRpZmZl
cmVudCB0eXBlcyBpbiB0aGUgYXJyYXkuCisgICAgICAgIEkgYWxzbyB0d2Vha2VkIGFsbCB0aHJl
ZSBzbyB0aGF0IHdlIG1vcmUgcmVsaWFibHkgcmVhY2ggdGhlIEZUTC4KKyAgICAgICAgRmluYWxs
eSBJIGFkZGVkIGEgc3RyZXNzLXRlc3QgdG8gdmVyaWZ5IHRoYXQgSSBkaWQgbm90IGludHJvZHVj
ZSBhbiBPU1IgZXhpdCBidWcuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5v
dC1kb3VibGUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzOgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3Vi
bGUtbm9yLXN0cmluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFByaXZhdGUgc3RhdGljIG1ldGhvZCBzaG91bGQgZGVmaW5lIHByaXZh
dGVDbGFzc0JyYW5kSWRlbnRpZmllciBpbiBjbGFzcy1zY29wZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2MDlkYjM2
ODhjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3Ry
aWN0ZXEtbm90LWRvdWJsZS1ub3Itc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lw
IGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mt
c3RyZXNzLXRlc3QucHkKKy8vQCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ug
b2YgcG9seW1vcnBoaWMgc3RyaWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2Yg
dHlwZXMsIGJ1dCBub3QgRG91Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0
aGUgb25seSB2YWx1ZSB0aGF0IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYu
CisvLyBUaGlzIHRlc3QgZG9lcyBub3QgaGF2ZSBzdHJpbmdzIG9yIGJpZyBpbnRzIGVpdGhlci4g
VGhpcyBpcyByZWxldmFudCBiZWNhdXNlIHN0cmluZ3MvYmlnIGludHMgYXQgZGlmZmVyZW50IHBs
YWNlcyBpbiBtZW1vcnkgY2FuIGNvbXBhcmUgZXF1YWwuCisKK3ZhciBhcnJheSA9IFtdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGklMikgPT0g
MCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKFtpXSk7CisgICAgdmFyIG8g
PSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChvKTsKK30KKwor
dmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7CisgICAgaWYo
eCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3Vs
dDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCkKK3Rlc3QoKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91Ymxl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdlNjNiODJkM2QzCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1u
b3QtZG91YmxlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBw
bGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8v
QCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcG9seW1vcnBoaWMgc3Ry
aWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2YgdHlwZXMsIGJ1dCBub3QgRG91
Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0aGUgb25seSB2YWx1ZSB0aGF0
IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYuCisKK3ZhciBhcnJheSA9IFtd
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGkl
MikgPT0gMCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKCIiICsgaSk7Cisg
ICAgdmFyIG8gPSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChv
KTsKK30KKwordmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7
CisgICAgaWYoeCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3Jy
ZWN0IHJlc3VsdDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCk7Cit0ZXN0
KCk7CisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3Rl
cS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3RyaWN0ZXEuanMKaW5kZXggOWQw
NTMwNmU1MTU3Li5hNDY4NWQwYzlmNWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHktc3RyaWN0ZXEuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1z
dHJpY3RlcS5qcwpAQCAtNiw4ICs2LDggQEAKIHZhciBhcnJheSA9IFtdOwogCiBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgIGFycmF5LnB1c2goaSk7Ci0gICAgYXJyYXkucHVz
aCgoaSUyKSA9PSAwKTsKKyAgICBhcnJheS5wdXNoKChpICUgMikgPT0gMCk7CisgICAgYXJyYXku
cHVzaCgzLjE0ICogaSk7CiAgICAgYXJyYXkucHVzaCgiIiArIGkpOwogICAgIHZhciBvID0ge307
CiAgICAgb1siYSIgKyBpXSA9IGkgKyAxOwpAQCAtMTUsMTUgKzE1LDI1IEBAIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CiB9CiAKIHZhciBudW1TdHJpY3RFcXVhbCA9IDA7Ci1mb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9IGkg
KyAxOyBqIDwgYXJyYXkubGVuZ3RoOyArK2opIHsKLSAgICAgICAgaWYgKGFycmF5W2ldID09PSBh
cnJheVtqXSkKLSAgICAgICAgICAgIG51bVN0cmljdEVxdWFsKys7Ci0gICAgfQorCitmdW5jdGlv
biBmb28oeCwgeSkKK3sKKyAgICBpZih4ID09PSB5KQorICAgICAgICBudW1TdHJpY3RFcXVhbCsr
OwogfQogCi1pZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQotICAgIHRocm93ICJJbmNvcnJl
Y3QgcmVzdWx0OiAiICsgbnVtU3RyaWN0RXF1YWw7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFy
IGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28oYXJy
YXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIGlmIChudW1TdHJpY3RF
cXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsgbnVt
U3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KTsKK3Rlc3QoKTsKIAogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZy1mYWls
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmct
ZmFpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzZjZkOWVl
YTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nLWZhaWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHNraXAgaWYg
JG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJl
c3MtdGVzdC5weQorCit2YXIgYXJyYXkgPSBbXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICBhcnJheS5wdXNoKChpJTIpID09IDApOworICAgIGFycmF5LnB1c2goaSk7
CisgICAgYXJyYXkucHVzaChbaV0pOworICAgIHZhciBvID0ge307CisgICAgb1siYSIgKyBpXSA9
IGkgKyAxOworICAgIGFycmF5LnB1c2gobyk7Cit9CisKK3ZhciBudW1TdHJpY3RFcXVhbCA9IDA7
CisKK2Z1bmN0aW9uIGZvbyh4LCB5KQoreworICAgIGlmKHggPT09IHkpCisgICAgICAgIG51bVN0
cmljdEVxdWFsKys7Cit9Citub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28o
YXJyYXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChudW1TdHJp
Y3RFcXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsg
bnVtU3RyaWN0RXF1YWw7CisKKyAgICBmb28oNDIsIDQyLjApOworICAgIGZvbyhOYU4sIE5hTik7
CisgICAgZm9vKCJmb29iYXIiLCAiZm9vIiArICJiYXIiKQorCisgICAgaWYgKG51bVN0cmljdEVx
dWFsICE9IDI0OTUwMikKKyAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgYXQgdGhlIGVu
ZCAiICsgbnVtU3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KQordGVzdCgpOworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNjE3NWVkMWQ0N2UuLjIwZTM2YmIyMTk2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDYtMDQgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBjb21wYXJl
U3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBp
cyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSB3aGVyZSB4
ID09PSB5IG11c3QgcmV0dXJuIGZhbHNlIGRlc3BpdGUgeCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3
aXRoIHRoZSBzYW1lIGJpdHM6CisgICAgICAgICAgICBOYU4gPT09IE5hTgorICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgY2FzZXMgd2hlcmUgeCA9PT0geSBtdXN0IHJldHVybiB0cnVlIGRlc3BpdGUg
eCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3aXRoIHBvdGVudGlhbGx5IGRpZmZlcmVudCBiaXRzOgor
ICAgICAgICAgICAgRG91YmxlID09PSBJbnQzMgorICAgICAgICAgICAgU3RyaW5nID09PSBTdHJp
bmcKKyAgICAgICAgICAgIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQKKyAgICAgICAgICAgIEhl
YXBCaWdJbnQgPT09IEJpZ0ludDMyIChpZiB0aGV5IGFyZSBlbmFibGVkKQorICAgICAgICBJZiB3
ZSBkb24ndCBoYXZlIGEgZG91YmxlIG9uIGVpdGhlciBzaWRlLCBhdCBsZWFzdCBvbmUgc2lkZSBo
YXMgbmVpdGhlciBhIFN0cmluZyBub3IgYSBIZWFwQmlnSW50LCBhbmQgQmlnSW50MzIgYXJlIGRp
c2FibGVkLCB3ZSBjYW4gY2xlYXJseSBpZ25vcmUgYWxsIG9mIHRoZXNlIHBhdGhvbG9naWNhbCBj
YXNlcy4KKworICAgICAgICBUaGlzIG9wdGltaXphdGlvbiB3YXMgZGVjaWRlZCBiYXNlZCBvbiBs
b29raW5nIGF0IERGRyBncmFwaHMgb2YgU3BlZWRvbWV0ZXIyOyBoZXJlIGlzIGEgc2FtcGxlIG9m
IHRoZSBjb21wYXJlU3RyaWN0RXEoVW50eXBlZCwgVW50eXBlZCksIGNvdXJ0ZXN5IG9mIFBoaWw6
CisgICAgICAgICAgICBGaW5hbHxBcnJheXxTdHJpbmd8Qm9vbCwgRmluYWx8QXJyYXl8U3RyaW5n
fEJvb2wKKyAgICAgICAgICAgIEFycmF5fFN0cmluZ3xCb29sLCBTdHJpbmd8Qm9vbCAodHdpY2Up
CisgICAgICAgICAgICBBcnJheXxTdHJpbmd8Qm9vbCwgU3RyaW5nfEludDMyIChvbmNlIGluIERG
Rywgb25jZSBpbiBGVEwpCisgICAgICAgICEgICBBcnJheXxTdHJpbmd8Qm9vbCwgQXJyYXl8Qm9v
bAorICAgICAgICAhICAgRmluYWx8T3RoZXIsIEZpbmFsfE90aGVyCisgICAgICAgICEgICBJbnQz
MnxPdGhlciwgSW50MzIKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50LCBGaW5hbHxTdHJp
bmdJZGVudCAoMyB0aW1lcykKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50fEJvb2xJbnQz
MiwgU3RyaW5nSWRlbnR8Qm9vbEludDMyICh0d2ljZSkKKyAgICAgICAgICAgIFN0cmluZ3xCb29s
LCBTdHJpbmd8Qm9vbCAoNCB0aW1lcykKKyAgICAgICAgICAgIERvdWJsZVB1cmVOYU4sIFN0cmlu
Z3xCb29sCisgICAgICAgICEgICBPdGhlciwgRnVuY3Rpb258T3RoZXIKKyAgICAgICAgISAgIEZp
bmFsfE90aGVyLCBGaW5hbHxGdW5jdGlvbnxPdGhlciAodHdpY2UpCisgICAgICAgICAgICBGaW5h
bHxTdHJpbmd8Qm9vbHxPdGhlciwgRmluYWx8U3RyaW5nfEJvb2x8T3RoZXIgKDMgdGltZXMsIHR3
byBpbiB0aGUgRlRMKQorICAgICAgICAgICAgRmluYWx8U3RyaW5nfEludDMyLCBTdHJpbmd8SW50
MzIgKGZvdXIgdGltZXMpCisgICAgICAgICAgICBTdHJpbmd8SW50MzJ8Qm9vbCwgRnVuY3Rpb258
U3RyaW5nfEludDMyfEJvb2wgKHR3aWNlKQorICAgICAgICAgICAgU3RyaW5nfERvdWJsZVB1cmVO
YU4sIFN0cmluZ3xCb29sICh0d2ljZSkKKyAgICAgICAgISAgIEZpbmFsfEJvb2x8T3RoZXIsIEZp
bmFsfEZ1bmN0aW9ufE90aGVyIChmb3VyIHRpbWVzLCB0d2ljZSBpbiBGVEwpCisgICAgICAgIEkg
bWFya2VkIHdpdGggYSAhIHRob3NlIGZvciB3aGljaCB0aGlzIG9wdGltaXphdGlvbiBzaG91bGQg
YXBwbHkuCisKKyAgICAgICAgVGhlIG9ubHkgc2xpZ2h0bHkgaW50ZXJlc3RpbmcgcGFydCBvZiB0
aGlzIHBhdGNoIGlzIERGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nIHdoZXJlIEkgdG9vayBjYXJlIHRvIHNraXAgZXZlcnkgdGVz
dCB3aG9zZSByZXN1bHQgd2UgY2FuIHByZWRpY3QgZnJvbSB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0
ZXIuCisKKyAgICAgICAgUmVzdWx0cyBvbiBtaWNyb2JlbmNobWFya3M6CisgICAgICAgICAgICBw
b2x5LXN0cmljdGVxLW5vdC1kb3VibGUgICAgICAgICAgICAgICAgICA0NS41NzkzKy0wLjUzMDQg
ICAgID8gICAgIDQ2LjAzMDYrLTAuNTYyMSAgICAgICAgPworICAgICAgICAgICAgcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcgICAgICAgNDUuNTgyOSstMC41NzUwICAgICBeICAg
ICAxNi45MDg5Ky0wLjMwNzAgICAgICAgIF4gZGVmaW5pdGVseSAyLjY5NTh4IGZhc3RlcgorICAg
ICAgICAgICAgcG9seS1zdHJpY3RlcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuOTcx
OSstMC42NDUwICAgICAgICAgICA0OC45ODU1Ky0wLjUyMjcgICAgICAgICAgbWlnaHQgYmUgMS4w
MjAxeCBmYXN0ZXIKKworICAgICAgICBJIGFsc28gbWVhc3VyZWQgdGhlIGFtb3VudCBvZiBjb2Rl
IHRoYXQgd2UgZ2VuZXJhdGUgaW4gdGhlIERGRyBvbiBKZXRTdHJlYW0yLgorICAgICAgICBUaGUg
cmVzdWx0cyBoZXJlIGFyZSBkaXNhcHBvaW50aW5nIGJ1dCBzdGlsbCBtZWFzdXJhYmxlLiBCZWZv
cmU6CisgICAgICAgICAgICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY4
NDI1IGNvdW50OiAxMDk1MSBhdmc6IDQyLjc3NDYzMgorICAgICAgICAgICAgREZHX2Zhc3RfQ29t
cGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2ODAyMCBjb3VudDogMTA5MTcgYXZnOiA0Mi44NzA3
NTIKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0b3RhbEJ5dGVzOiA0Njc0
MjQgY291bnQ6IDEwODg4IGF2ZzogNDIuOTMwMTk4CisgICAgICAgIEFmdGVyOgorICAgICAgICAg
ICAgREZHX2Zhc3RfQ29tcGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2Mzk0NiBjb3VudDogMTA5
MTcgYXZnOiA0Mi40OTc1NzMKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0
b3RhbEJ5dGVzOiA0NzQ0OTIgY291bnQ6IDExMTM4IGF2ZzogNDIuNjAxMTg1CisgICAgICAgICAg
ICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY3MTM4IGNvdW50OiAxMDk3
MCBhdmc6IDQyLjU4MzIyNworCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoK
KyAgICAgICAgKEpTQzo6aXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyk6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRl
RWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91YmxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdV
c2VLaW5kLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpjaGVja01heUNyYXNoSWZJbnB1dElzRW1wdHkpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcpOgorCiAyMDIxLTA2LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYXJrIHJlY2VudGx5IGFkZGVkIHByb3RvY29sIGNv
bW1hbmRzL2V2ZW50cyBhcyBwYWdlLW9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNjYxZWVjNmQ5ZGExLi45Njk3NzgzNTU3NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CkBAIC00NDQsNiArNDQ0LDExIEBAIGlubGluZSBib29sIGlzTm90RG91YmxlU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICByZXR1cm4gISh0eXBlICYgU3BlY0Z1bGxEb3VibGUp
OwogfQogCitpbmxpbmUgYm9vbCBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gISh0eXBlICYg
KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQgfCBTcGVjU3RyaW5nKSk7Cit9CisKIGlu
bGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gdmFsdWUgPT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDUxMDBjNWM3ZDY0NS4uYWRjYjcyOWRkMGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAvLyAgICAgMS4gQWxsb2NhdGVzIGFueSBv
YmplY3RzLgogICAgIC8vICAgICAyLiBSZXNvbHZlcyBhIHJvcGUgc3RyaW5nLCB3aGljaCBhbGxv
Y2F0ZXMgYSBzdHJpbmcuCiAgICAgLy8gICAgIDMuIFByb2R1Y2VzIGEgc3RyaW5nICh3aGljaCBh
bGxvY2F0ZXMgdGhlIHN0cmluZykgZXhjZXB0IHdoZW4gd2UgY2FuIHByb3ZlIHRoYXQKLSAgICAv
LyAgICAgICAgdGhlIHN0cmluZyB3aWxsIGFsd2F5cyBiZSBvbmUgb2YgdGhlIHByZS1hbGxjb2F0
ZWQgU21hbGxTdHJpbmdzLgorICAgIC8vICAgICAgICB0aGUgc3RyaW5nIHdpbGwgYWx3YXlzIGJl
IG9uZSBvZiB0aGUgcHJlLWFsbG9jYXRlZCBTbWFsbFN0cmluZ3MuCiAgICAgLy8gICAgIDQuIFRy
aWdnZXJzIGEgc3RydWN0dXJlIHRyYW5zaXRpb24gKHdoaWNoIGNhbiBhbGxvY2F0ZSBhIG5ldyBz
dHJ1Y3R1cmUpCiAgICAgLy8gICAgICAgIHVubGVzcyBpdCBpcyBhIGtub3duIHRyYW5zaXRpb24g
YmV0d2VlbiBwcmV2aW91c2x5IGFsbG9jYXRlZCBzdHJ1Y3R1cmVzCiAgICAgLy8gICAgICAgIHN1
Y2ggYXMgYmV0d2VlbiBBcnJheSB0eXBlcy4KQEAgLTQ5Niw3ICs0OTYsOCBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
VW50eXBlZFVzZSwgT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNj
VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlz
Y1VzZSkKLSAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVz
ZSwgTm90U3RyaW5nVmFyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFy
VXNlLCBTdHJpbmdJZGVudFVzZSkpCisgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYTE0YTUzNmE4NGRhLi5iNmRhYmI0Y2FmZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNDQwOCw2
ICs0NDA4LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cisj
aWYgIVVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gQXMgbG9uZyBhcyBhIEJpZ0ludDMyIGFuZCBh
IEhlYXBCaWdJbnQgY2FuIGNvbXBhcmUgZXF1YWwsIGl0IGlzIG5vdCBzb3VuZCB0byByZXBsYWNl
IGNvbXBhcmVTdHJpY3RFcSBieSBhIHNpbXBsZSBjb21wYXJpc29uIG9mIHRoZSBKU1ZhbHVlIGlu
IHRoZSBmb2xsb3dpbmcgY2FzZXMuCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpKSB7CisgICAg
ICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdERvdWJsZVVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpCisgICAgICAgICAgICAm
JiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmcoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBlMWM2
Y2EyNTJhYmQuLjM1Y2Q1NGM4YTIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
QEAgLTI4MDIsNiArMjgwMiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNO
b3REb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hv
dWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1
bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDlkYzdjZTBmOTJlNC4uZjZjOTFlMjNiZjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAt
OTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW55SW50VXNlOgogICAgICAgICBj
YXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAg
ICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAxNjJmMTZhNzk5NzkuLjgzMjYyNzI2YzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY5MzMsNyArNjkzMyw0NiBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCisjaWYgIVVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKSB7
CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAg
RWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkID0gbm9kZS0+Y2hp
bGQyKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJ
bkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKKyAgICAgICAgaWYgKGJyYW5jaEluZGV4
SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1f
YmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CisgICAgICAgICAgICBjb21waWxlUGVlcEhv
bGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFs
aXR5KG5vZGUsIGJyYW5jaE5vZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAgICAgICAgIHVzZShub3REb3VibGVDaGlsZCk7
CisgICAgICAgICAgICB1c2UobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGls
ZCk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAg
ICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBjb21waWxlTm90RG91YmxlTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBub3REb3Vi
bGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSwgTm90RG91YmxlVXNlKSkgewor
ICAgICAgICBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQgPSBu
b2RlLT5jaGlsZDEoKTsKKyAgICAgICAgRWRnZSBub3REb3VibGVDaGlsZCA9IG5vZGUtPmNoaWxk
MigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5C
bG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleElu
QmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Js
b2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
Tm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0
eShub2RlLCBicmFuY2hOb2RlLCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBC
aWdJbnROb3JTdHJpbmdDaGlsZCk7CisgICAgICAgICAgICB1c2Uobm90RG91YmxlQ2hpbGQpOwor
ICAgICAgICAgICAgdXNlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQp
OworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAg
ICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgY29tcGlsZU5vdERvdWJsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkobm9kZSwgbm90RG91Ymxl
Q2hpbGQsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNCaW5hcnlV
c2VLaW5kKEhlYXBCaWdJbnRVc2UpKSB7CiAgICAgICAgIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxp
dHkobm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxNjMsNiArNzIwMiw2OCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlKQogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0
RXF1YWxpdHkoTm9kZSogbm9kZSwgRWRnZSBub3REb3VibGVDaGlsZCwgRWRnZSBuZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKQoreworICAgIEpTVmFsdWVPcGVyYW5kIGxl
ZnQodGhpcywgbm90RG91YmxlQ2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
SlNWYWx1ZU9wZXJhbmQgcmlnaHQodGhpcywgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGxlZnQs
IHJpZ2h0KTsKKyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsK
KyAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOworICAgIEdQ
UlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworCisgICAgc3BlY3VsYXRlTm90RG91YmxlKG5vdERvdWJsZUNoaWxkLCBsZWZ0UmVn
cywgdGVtcEdQUik7CisgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcobmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCwgcmlnaHRSZWdz
LCB0ZW1wR1BSKTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbV9qaXQuY29tcGFyZTY0KEpJ
VENvbXBpbGVyOjpFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CisjZWxzZQorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSk7CisgICAgbV9qaXQu
Y29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBh
eWxvYWRHUFIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7Cisj
ZW5kaWYKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU5vdERvdWJsZU5laXRoZXJEb3Vi
bGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUsIEVkZ2Ugbm90RG91YmxlQ2hpbGQsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdDaGlsZCkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBsZWZ0KHRoaXMsIG5vdERv
dWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVPcGVyYW5k
IHJpZ2h0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1Zh
bHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3VibGVDaGls
ZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOworICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQs
IHJpZ2h0UmVncywgdGVtcEdQUik7CisKKyAgICBCYXNpY0Jsb2NrKiB0YWtlbiA9IGJyYW5jaE5v
ZGUtPmJyYW5jaERhdGEoKS0+dGFrZW4uYmxvY2s7CisgICAgQmFzaWNCbG9jayogbm90VGFrZW4g
PSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPm5vdFRha2VuLmJsb2NrOworCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNo
NjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgbm90VGFr
ZW4pOworICAgICAgICBqdW1wKHRha2VuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2g2
NChKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCB0YWtlbik7Cisg
ICAgICAgIGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbHNlCisgICAgYnJhbmNoMzIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnRhZ0dQUigpLCByaWdodC50YWdHUFIoKSwgbm90VGFrZW4p
OworICAgIGlmICh0YWtlbiA9PSBuZXh0QmxvY2soKSkgeworICAgICAgICBicmFuY2gzMihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCks
IG5vdFRha2VuKTsKKyAgICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5
bG9hZEdQUigpLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4pOworICAgIH0KKyNlbmRp
ZgorfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxpdHkoCiAgICAg
Tm9kZSogbm9kZSwgR1BSUmVnIGxlZnRHUFIsIEdQUlJlZyByaWdodEdQUiwgR1BSUmVnIGxlbmd0
aEdQUiwgR1BSUmVnIGxlZnRUZW1wR1BSLAogICAgIEdQUlJlZyByaWdodFRlbXBHUFIsIEdQUlJl
ZyBsZWZ0VGVtcDJHUFIsIEdQUlJlZyByaWdodFRlbXAyR1BSLApAQCAtMTE0MzIsNiArMTE1MzMs
MjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbE5vckJpZ0ludChFZGdl
IGVkZ2UpCiAjZW5kaWYKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91
YmxlKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCit7CisgICAg
aWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0Z1bGxEb3VibGUpKQorICAgICAgICByZXR1
cm47CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lOworCisgICAgYm9vbCBtYXlCZUludDMy
ID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9ubHkpOworICAgIGlmIChtYXlCZUlu
dDMyKQorICAgICAgICBkb25lID0gbV9qaXQuYnJhbmNoSWZJbnQzMihyZWdzKTsKKworICAgIERG
R19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZO
dW1iZXIocmVncywgdGVtcEdQUikpOworCisgICAgaWYgKG1heUJlSW50MzIpCisgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RE
b3VibGUoRWRnZSBlZGdlKQogewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNG
dWxsRG91YmxlKSkKQEAgLTExNDQyLDkgKzExNTYwLDQ0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdlIGVkZ2UpCiAgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IG9w
ZXJhbmQuanNWYWx1ZVJlZ3MoKTsKICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAg
ICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0LmJyYW5jaElmSW50MzIocmVn
cyk7CisgICAgc3BlY3VsYXRlTm90RG91YmxlKGVkZ2UsIHJlZ3MsIHRlbXBHUFIpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorewor
ICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgfihTcGVjRnVsbERvdWJsZSB8IFNwZWNTdHJp
bmcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRv
bmU7CisKKyAgICBib29sIG1heUJlSW50MzIgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0lu
dDMyT25seSk7CisgICAgaWYgKG1heUJlSW50MzIpCisgICAgICAgIGRvbmUuYXBwZW5kKG1faml0
LmJyYW5jaElmSW50MzIocmVncykpOworCiAgICAgREZHX1RZUEVfQ0hFQ0socmVncywgZWRnZSwg
flNwZWNGdWxsRG91YmxlLCBtX2ppdC5icmFuY2hJZk51bWJlcihyZWdzLCB0ZW1wR1BSKSk7Ci0g
ICAgZG9uZS5saW5rKCZtX2ppdCk7CisKKyAgICBib29sIG1heU5vdEJlQ2VsbCA9IG5lZWRzVHlw
ZUNoZWNrKGVkZ2UsIFNwZWNDZWxsKTsKKyAgICBpZiAobWF5Tm90QmVDZWxsKQorICAgICAgICBk
b25lLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocmVncykpOworCisgICAgREZHX1RZUEVf
Q0hFQ0socmVncywgZWRnZSwgflNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmU3RyaW5nKHJlZ3Mu
Z3ByKCkpKTsKKyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQs
IG1faml0LmJyYW5jaElmSGVhcEJpZ0ludChyZWdzLmdwcigpKSk7CisKKyAgICBpZiAobWF5QmVJ
bnQzMiB8fCBtYXlOb3RCZUNlbGwpCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworfQorCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNw
ZWNGdWxsRG91YmxlIHwgU3BlY1N0cmluZykpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1Zh
bHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7
CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IG9w
ZXJhbmQuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisK
KyAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlLCBy
ZWdzLCB0ZW1wR1BSKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIo
RWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKQEAgLTExNjMyLDYg
KzExNzg1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZGdlIGVk
Z2UpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShl
ZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZToKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmcoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3RoZXJVc2U6CiAg
ICAgICAgIHNwZWN1bGF0ZU90aGVyKGVkZ2UpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiYTUzZjBlMjg1Nzcu
LjBlZjhjY2Q3YWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMTE4OSw2ICsxMTg5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVTeW1ib2xFcXVhbGl0eShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSGVhcEJpZ0ludEVxdWFs
aXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KE5vZGUq
LCBOb2RlKiBicmFuY2hOb2RlKTsKKyAgICB2b2lkIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBFZGdlIG5vdERv
dWJsZUVkZ2UsIEVkZ2UgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdFZGdlKTsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwgTm9k
ZSogYnJhbmNoTm9kZSwgRWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nRWRnZSk7CisjZW5kaWYKICAgICB2b2lkIGNvbXBpbGVTeW1ib2xV
bnR5cGVkRXF1YWxpdHkoTm9kZSosIEVkZ2Ugc3ltYm9sRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSk7
CiAKICAgICB2b2lkIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2UgdmFsdWUsIEJhc2ljQmxv
Y2sqIHRha2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbik7CkBAIC0xNjcxLDcgKzE2NzUsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlLCBKU1ZhbHVlUmVncyk7CiAg
ICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2Vs
bE5vckJpZ0ludChFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdlLCBKU1Zh
bHVlUmVncywgR1BSUmVnIHRlbXApOwogICAgIHZvaWQgc3BlY3VsYXRlTm90RG91YmxlKEVkZ2Up
OworICAgIHZvaWQgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmco
RWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRl
T3RoZXIoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2b2lkIHNwZWN1bGF0
ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKaW5kZXggZGQwOWRmNzJm
OTJlLi40YjQzYzc1ZGZkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5k
LmNwcApAQCAtMTczLDYgKzE3Myw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBVc2VLaW5kIHVzZUtpbmQpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIG91
dC5wcmludCgiTm90RG91YmxlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIE5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlOgorICAgICAgICBvdXQucHJpbnQoIk5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nIik7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEtub3duT3RoZXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25PdGhlciIpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCmluZGV4IGMy
NzY5NjVkMWIzNy4uOTRlNTcxMDA1ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Vz
ZUtpbmQuaApAQCAtODIsNiArODIsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIE5vdENlbGxVc2Us
CiAgICAgTm90Q2VsbE5vckJpZ0ludFVzZSwKICAgICBOb3REb3VibGVVc2UsCisgICAgTmVpdGhl
ckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UsCiAgICAgS25vd25PdGhlclVzZSwKICAg
ICBPdGhlclVzZSwKICAgICBNaXNjVXNlLApAQCAtMTkwLDYgKzE5MSw4IEBAIGlubGluZSBTcGVj
dWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKFVzZUtpbmQgdXNlS2luZCkKICAgICAgICAgcmV0dXJu
IH5TcGVjQ2VsbENoZWNrICYgflNwZWNCaWdJbnQ7CiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAg
ICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGU7CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9y
SGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgcmV0dXJuIH5TcGVjRnVsbERvdWJsZSAm
IH5TcGVjSGVhcEJpZ0ludCAmIH5TcGVjU3RyaW5nOwogICAgIGNhc2UgS25vd25PdGhlclVzZToK
ICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICByZXR1cm4gU3BlY090aGVyOwpAQCAtMzA5LDYg
KzMxMiw3IEBAIGlubGluZSBib29sIGNoZWNrTWF5Q3Jhc2hJZklucHV0SXNFbXB0eShVc2VLaW5k
IGtpbmQpCiAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgIGNhc2UgTm90Q2VsbE5vckJpZ0ludFVz
ZToKICAgICBjYXNlIE5vdERvdWJsZVVzZToKKyAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nVXNlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKaW5kZXggZGE2MjU0OTI5M2QxLi42NTRjZWI0ODQxOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTUyOSw2ICs1
MjksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAg
ICAgICAgICAgY2FzZSBBbnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBB
bnlJbnRVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgICAgICAg
ICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDA1YjVkYmZmMDNlMi4uNDEzM2I4MjhiNjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC05
NTAyLDcgKzk1MDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UsIFVudHlwZWRVc2UpCi0gICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSkgewor
ICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1Vz
ZSkKKyNpZiAhVVNFKEJJR0lOVDMyKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Vz
ZSkKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLCBOb3REb3VibGVVc2UpKSB7CisjZWxzZQorICAgICAg
ICAgICAgKSB7CisjZW5kaWYKICAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
IExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwpAQCAtMTg0MDYsNiArMTg0MTIsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIE5vdERvdWJsZVVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShlZGdlKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nVXNlOgorICAgICAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhl
YXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBPdGhlclVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU90aGVyKGVkZ2UpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xODQ2OSw2ICsxODQ3OCwzMSBAQCBwcml2YXRlOgogCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KKworICAgIHZvaWQg
c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
ZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKworICAgICAgICBMQmFzaWNCbG9jayBp
c05vdEludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxs
QmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0ludDMyKHZh
bHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc05v
dEludDMyKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhpc05vdEludDMyLCBpc0NlbGxCbG9jayk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgaXNOdW1iZXIodmFsdWUpKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVu
c3VyZShpc0NlbGxCbG9jayksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICBtX291
dC5hcHBlbmRUbyhpc0NlbGxCbG9jaywgY29udGludWF0aW9uKTsKKyAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNTdHJpbmcsIGlzU3RyaW5nKHZh
bHVlKSk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Us
IH5TcGVjSGVhcEJpZ0ludCwgaXNIZWFwQmlnSW50KHZhbHVlKSk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVDZWxsT3JPdGhlcihF
ZGdlIGVkZ2UpCiAgICAgewo=
</data>
<flag name="commit-queue"
          id="452179"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430651</attachid>
            <date>2021-06-05 10:41:05 -0700</date>
            <delta_ts>2021-06-05 11:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226676</filename>
            <type>text/plain</type>
            <size>30099</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
M2NiODk4ZmIyZDEwLi4yMDMzMTVkYTYwMDAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDYtMDQgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBtYWRlIHR3byB2YXJpYW50cyBvZiB0aGUg
YWxyZWFkeSBleGlzdGluZyBwb2x5LXN0cmljdGVxIG1pY3JvYmVuY2htYXJrcyB3aXRoIGRpZmZl
cmVudCB0eXBlcyBpbiB0aGUgYXJyYXkuCisgICAgICAgIEkgYWxzbyB0d2Vha2VkIGFsbCB0aHJl
ZSBzbyB0aGF0IHdlIG1vcmUgcmVsaWFibHkgcmVhY2ggdGhlIEZUTC4KKyAgICAgICAgRmluYWxs
eSBJIGFkZGVkIGEgc3RyZXNzLXRlc3QgdG8gdmVyaWZ5IHRoYXQgSSBkaWQgbm90IGludHJvZHVj
ZSBhbiBPU1IgZXhpdCBidWcuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5v
dC1kb3VibGUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzOgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3Vi
bGUtbm9yLXN0cmluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFByaXZhdGUgc3RhdGljIG1ldGhvZCBzaG91bGQgZGVmaW5lIHByaXZh
dGVDbGFzc0JyYW5kSWRlbnRpZmllciBpbiBjbGFzcy1zY29wZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2MDlkYjM2
ODhjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3Ry
aWN0ZXEtbm90LWRvdWJsZS1ub3Itc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lw
IGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mt
c3RyZXNzLXRlc3QucHkKKy8vQCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ug
b2YgcG9seW1vcnBoaWMgc3RyaWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2Yg
dHlwZXMsIGJ1dCBub3QgRG91Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0
aGUgb25seSB2YWx1ZSB0aGF0IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYu
CisvLyBUaGlzIHRlc3QgZG9lcyBub3QgaGF2ZSBzdHJpbmdzIG9yIGJpZyBpbnRzIGVpdGhlci4g
VGhpcyBpcyByZWxldmFudCBiZWNhdXNlIHN0cmluZ3MvYmlnIGludHMgYXQgZGlmZmVyZW50IHBs
YWNlcyBpbiBtZW1vcnkgY2FuIGNvbXBhcmUgZXF1YWwuCisKK3ZhciBhcnJheSA9IFtdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGklMikgPT0g
MCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKFtpXSk7CisgICAgdmFyIG8g
PSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChvKTsKK30KKwor
dmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7CisgICAgaWYo
eCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3Vs
dDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCkKK3Rlc3QoKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91Ymxl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdlNjNiODJkM2QzCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1u
b3QtZG91YmxlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBw
bGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8v
QCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcG9seW1vcnBoaWMgc3Ry
aWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2YgdHlwZXMsIGJ1dCBub3QgRG91
Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0aGUgb25seSB2YWx1ZSB0aGF0
IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYuCisKK3ZhciBhcnJheSA9IFtd
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGkl
MikgPT0gMCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKCIiICsgaSk7Cisg
ICAgdmFyIG8gPSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChv
KTsKK30KKwordmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7
CisgICAgaWYoeCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3Jy
ZWN0IHJlc3VsdDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCk7Cit0ZXN0
KCk7CisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3Rl
cS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3RyaWN0ZXEuanMKaW5kZXggOWQw
NTMwNmU1MTU3Li5hNDY4NWQwYzlmNWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHktc3RyaWN0ZXEuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1z
dHJpY3RlcS5qcwpAQCAtNiw4ICs2LDggQEAKIHZhciBhcnJheSA9IFtdOwogCiBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgIGFycmF5LnB1c2goaSk7Ci0gICAgYXJyYXkucHVz
aCgoaSUyKSA9PSAwKTsKKyAgICBhcnJheS5wdXNoKChpICUgMikgPT0gMCk7CisgICAgYXJyYXku
cHVzaCgzLjE0ICogaSk7CiAgICAgYXJyYXkucHVzaCgiIiArIGkpOwogICAgIHZhciBvID0ge307
CiAgICAgb1siYSIgKyBpXSA9IGkgKyAxOwpAQCAtMTUsMTUgKzE1LDI1IEBAIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CiB9CiAKIHZhciBudW1TdHJpY3RFcXVhbCA9IDA7Ci1mb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9IGkg
KyAxOyBqIDwgYXJyYXkubGVuZ3RoOyArK2opIHsKLSAgICAgICAgaWYgKGFycmF5W2ldID09PSBh
cnJheVtqXSkKLSAgICAgICAgICAgIG51bVN0cmljdEVxdWFsKys7Ci0gICAgfQorCitmdW5jdGlv
biBmb28oeCwgeSkKK3sKKyAgICBpZih4ID09PSB5KQorICAgICAgICBudW1TdHJpY3RFcXVhbCsr
OwogfQogCi1pZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQotICAgIHRocm93ICJJbmNvcnJl
Y3QgcmVzdWx0OiAiICsgbnVtU3RyaWN0RXF1YWw7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFy
IGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28oYXJy
YXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIGlmIChudW1TdHJpY3RF
cXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsgbnVt
U3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KTsKK3Rlc3QoKTsKIAogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZy1mYWls
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmct
ZmFpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzZjZkOWVl
YTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nLWZhaWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHNraXAgaWYg
JG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJl
c3MtdGVzdC5weQorCit2YXIgYXJyYXkgPSBbXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICBhcnJheS5wdXNoKChpJTIpID09IDApOworICAgIGFycmF5LnB1c2goaSk7
CisgICAgYXJyYXkucHVzaChbaV0pOworICAgIHZhciBvID0ge307CisgICAgb1siYSIgKyBpXSA9
IGkgKyAxOworICAgIGFycmF5LnB1c2gobyk7Cit9CisKK3ZhciBudW1TdHJpY3RFcXVhbCA9IDA7
CisKK2Z1bmN0aW9uIGZvbyh4LCB5KQoreworICAgIGlmKHggPT09IHkpCisgICAgICAgIG51bVN0
cmljdEVxdWFsKys7Cit9Citub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28o
YXJyYXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChudW1TdHJp
Y3RFcXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsg
bnVtU3RyaWN0RXF1YWw7CisKKyAgICBmb28oNDIsIDQyLjApOworICAgIGZvbyhOYU4sIE5hTik7
CisgICAgZm9vKCJmb29iYXIiLCAiZm9vIiArICJiYXIiKQorCisgICAgaWYgKG51bVN0cmljdEVx
dWFsICE9IDI0OTUwMikKKyAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgYXQgdGhlIGVu
ZCAiICsgbnVtU3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KQordGVzdCgpOworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNjE3NWVkMWQ0N2UuLjIwZTM2YmIyMTk2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDYtMDQgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBjb21wYXJl
U3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBp
cyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSB3aGVyZSB4
ID09PSB5IG11c3QgcmV0dXJuIGZhbHNlIGRlc3BpdGUgeCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3
aXRoIHRoZSBzYW1lIGJpdHM6CisgICAgICAgICAgICBOYU4gPT09IE5hTgorICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgY2FzZXMgd2hlcmUgeCA9PT0geSBtdXN0IHJldHVybiB0cnVlIGRlc3BpdGUg
eCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3aXRoIHBvdGVudGlhbGx5IGRpZmZlcmVudCBiaXRzOgor
ICAgICAgICAgICAgRG91YmxlID09PSBJbnQzMgorICAgICAgICAgICAgU3RyaW5nID09PSBTdHJp
bmcKKyAgICAgICAgICAgIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQKKyAgICAgICAgICAgIEhl
YXBCaWdJbnQgPT09IEJpZ0ludDMyIChpZiB0aGV5IGFyZSBlbmFibGVkKQorICAgICAgICBJZiB3
ZSBkb24ndCBoYXZlIGEgZG91YmxlIG9uIGVpdGhlciBzaWRlLCBhdCBsZWFzdCBvbmUgc2lkZSBo
YXMgbmVpdGhlciBhIFN0cmluZyBub3IgYSBIZWFwQmlnSW50LCBhbmQgQmlnSW50MzIgYXJlIGRp
c2FibGVkLCB3ZSBjYW4gY2xlYXJseSBpZ25vcmUgYWxsIG9mIHRoZXNlIHBhdGhvbG9naWNhbCBj
YXNlcy4KKworICAgICAgICBUaGlzIG9wdGltaXphdGlvbiB3YXMgZGVjaWRlZCBiYXNlZCBvbiBs
b29raW5nIGF0IERGRyBncmFwaHMgb2YgU3BlZWRvbWV0ZXIyOyBoZXJlIGlzIGEgc2FtcGxlIG9m
IHRoZSBjb21wYXJlU3RyaWN0RXEoVW50eXBlZCwgVW50eXBlZCksIGNvdXJ0ZXN5IG9mIFBoaWw6
CisgICAgICAgICAgICBGaW5hbHxBcnJheXxTdHJpbmd8Qm9vbCwgRmluYWx8QXJyYXl8U3RyaW5n
fEJvb2wKKyAgICAgICAgICAgIEFycmF5fFN0cmluZ3xCb29sLCBTdHJpbmd8Qm9vbCAodHdpY2Up
CisgICAgICAgICAgICBBcnJheXxTdHJpbmd8Qm9vbCwgU3RyaW5nfEludDMyIChvbmNlIGluIERG
Rywgb25jZSBpbiBGVEwpCisgICAgICAgICEgICBBcnJheXxTdHJpbmd8Qm9vbCwgQXJyYXl8Qm9v
bAorICAgICAgICAhICAgRmluYWx8T3RoZXIsIEZpbmFsfE90aGVyCisgICAgICAgICEgICBJbnQz
MnxPdGhlciwgSW50MzIKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50LCBGaW5hbHxTdHJp
bmdJZGVudCAoMyB0aW1lcykKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50fEJvb2xJbnQz
MiwgU3RyaW5nSWRlbnR8Qm9vbEludDMyICh0d2ljZSkKKyAgICAgICAgICAgIFN0cmluZ3xCb29s
LCBTdHJpbmd8Qm9vbCAoNCB0aW1lcykKKyAgICAgICAgICAgIERvdWJsZVB1cmVOYU4sIFN0cmlu
Z3xCb29sCisgICAgICAgICEgICBPdGhlciwgRnVuY3Rpb258T3RoZXIKKyAgICAgICAgISAgIEZp
bmFsfE90aGVyLCBGaW5hbHxGdW5jdGlvbnxPdGhlciAodHdpY2UpCisgICAgICAgICAgICBGaW5h
bHxTdHJpbmd8Qm9vbHxPdGhlciwgRmluYWx8U3RyaW5nfEJvb2x8T3RoZXIgKDMgdGltZXMsIHR3
byBpbiB0aGUgRlRMKQorICAgICAgICAgICAgRmluYWx8U3RyaW5nfEludDMyLCBTdHJpbmd8SW50
MzIgKGZvdXIgdGltZXMpCisgICAgICAgICAgICBTdHJpbmd8SW50MzJ8Qm9vbCwgRnVuY3Rpb258
U3RyaW5nfEludDMyfEJvb2wgKHR3aWNlKQorICAgICAgICAgICAgU3RyaW5nfERvdWJsZVB1cmVO
YU4sIFN0cmluZ3xCb29sICh0d2ljZSkKKyAgICAgICAgISAgIEZpbmFsfEJvb2x8T3RoZXIsIEZp
bmFsfEZ1bmN0aW9ufE90aGVyIChmb3VyIHRpbWVzLCB0d2ljZSBpbiBGVEwpCisgICAgICAgIEkg
bWFya2VkIHdpdGggYSAhIHRob3NlIGZvciB3aGljaCB0aGlzIG9wdGltaXphdGlvbiBzaG91bGQg
YXBwbHkuCisKKyAgICAgICAgVGhlIG9ubHkgc2xpZ2h0bHkgaW50ZXJlc3RpbmcgcGFydCBvZiB0
aGlzIHBhdGNoIGlzIERGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nIHdoZXJlIEkgdG9vayBjYXJlIHRvIHNraXAgZXZlcnkgdGVz
dCB3aG9zZSByZXN1bHQgd2UgY2FuIHByZWRpY3QgZnJvbSB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0
ZXIuCisKKyAgICAgICAgUmVzdWx0cyBvbiBtaWNyb2JlbmNobWFya3M6CisgICAgICAgICAgICBw
b2x5LXN0cmljdGVxLW5vdC1kb3VibGUgICAgICAgICAgICAgICAgICA0NS41NzkzKy0wLjUzMDQg
ICAgID8gICAgIDQ2LjAzMDYrLTAuNTYyMSAgICAgICAgPworICAgICAgICAgICAgcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcgICAgICAgNDUuNTgyOSstMC41NzUwICAgICBeICAg
ICAxNi45MDg5Ky0wLjMwNzAgICAgICAgIF4gZGVmaW5pdGVseSAyLjY5NTh4IGZhc3RlcgorICAg
ICAgICAgICAgcG9seS1zdHJpY3RlcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuOTcx
OSstMC42NDUwICAgICAgICAgICA0OC45ODU1Ky0wLjUyMjcgICAgICAgICAgbWlnaHQgYmUgMS4w
MjAxeCBmYXN0ZXIKKworICAgICAgICBJIGFsc28gbWVhc3VyZWQgdGhlIGFtb3VudCBvZiBjb2Rl
IHRoYXQgd2UgZ2VuZXJhdGUgaW4gdGhlIERGRyBvbiBKZXRTdHJlYW0yLgorICAgICAgICBUaGUg
cmVzdWx0cyBoZXJlIGFyZSBkaXNhcHBvaW50aW5nIGJ1dCBzdGlsbCBtZWFzdXJhYmxlLiBCZWZv
cmU6CisgICAgICAgICAgICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY4
NDI1IGNvdW50OiAxMDk1MSBhdmc6IDQyLjc3NDYzMgorICAgICAgICAgICAgREZHX2Zhc3RfQ29t
cGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2ODAyMCBjb3VudDogMTA5MTcgYXZnOiA0Mi44NzA3
NTIKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0b3RhbEJ5dGVzOiA0Njc0
MjQgY291bnQ6IDEwODg4IGF2ZzogNDIuOTMwMTk4CisgICAgICAgIEFmdGVyOgorICAgICAgICAg
ICAgREZHX2Zhc3RfQ29tcGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2Mzk0NiBjb3VudDogMTA5
MTcgYXZnOiA0Mi40OTc1NzMKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0
b3RhbEJ5dGVzOiA0NzQ0OTIgY291bnQ6IDExMTM4IGF2ZzogNDIuNjAxMTg1CisgICAgICAgICAg
ICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY3MTM4IGNvdW50OiAxMDk3
MCBhdmc6IDQyLjU4MzIyNworCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoK
KyAgICAgICAgKEpTQzo6aXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyk6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRl
RWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91YmxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdV
c2VLaW5kLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpjaGVja01heUNyYXNoSWZJbnB1dElzRW1wdHkpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcpOgorCiAyMDIxLTA2LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYXJrIHJlY2VudGx5IGFkZGVkIHByb3RvY29sIGNv
bW1hbmRzL2V2ZW50cyBhcyBwYWdlLW9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNjYxZWVjNmQ5ZGExLi45Njk3NzgzNTU3NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CkBAIC00NDQsNiArNDQ0LDExIEBAIGlubGluZSBib29sIGlzTm90RG91YmxlU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICByZXR1cm4gISh0eXBlICYgU3BlY0Z1bGxEb3VibGUp
OwogfQogCitpbmxpbmUgYm9vbCBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gISh0eXBlICYg
KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQgfCBTcGVjU3RyaW5nKSk7Cit9CisKIGlu
bGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gdmFsdWUgPT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDUxMDBjNWM3ZDY0NS4uYWRjYjcyOWRkMGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAvLyAgICAgMS4gQWxsb2NhdGVzIGFueSBv
YmplY3RzLgogICAgIC8vICAgICAyLiBSZXNvbHZlcyBhIHJvcGUgc3RyaW5nLCB3aGljaCBhbGxv
Y2F0ZXMgYSBzdHJpbmcuCiAgICAgLy8gICAgIDMuIFByb2R1Y2VzIGEgc3RyaW5nICh3aGljaCBh
bGxvY2F0ZXMgdGhlIHN0cmluZykgZXhjZXB0IHdoZW4gd2UgY2FuIHByb3ZlIHRoYXQKLSAgICAv
LyAgICAgICAgdGhlIHN0cmluZyB3aWxsIGFsd2F5cyBiZSBvbmUgb2YgdGhlIHByZS1hbGxjb2F0
ZWQgU21hbGxTdHJpbmdzLgorICAgIC8vICAgICAgICB0aGUgc3RyaW5nIHdpbGwgYWx3YXlzIGJl
IG9uZSBvZiB0aGUgcHJlLWFsbG9jYXRlZCBTbWFsbFN0cmluZ3MuCiAgICAgLy8gICAgIDQuIFRy
aWdnZXJzIGEgc3RydWN0dXJlIHRyYW5zaXRpb24gKHdoaWNoIGNhbiBhbGxvY2F0ZSBhIG5ldyBz
dHJ1Y3R1cmUpCiAgICAgLy8gICAgICAgIHVubGVzcyBpdCBpcyBhIGtub3duIHRyYW5zaXRpb24g
YmV0d2VlbiBwcmV2aW91c2x5IGFsbG9jYXRlZCBzdHJ1Y3R1cmVzCiAgICAgLy8gICAgICAgIHN1
Y2ggYXMgYmV0d2VlbiBBcnJheSB0eXBlcy4KQEAgLTQ5Niw3ICs0OTYsOCBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
VW50eXBlZFVzZSwgT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNj
VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlz
Y1VzZSkKLSAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVz
ZSwgTm90U3RyaW5nVmFyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFy
VXNlLCBTdHJpbmdJZGVudFVzZSkpCisgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYTE0YTUzNmE4NGRhLi5iNmRhYmI0Y2FmZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNDQwOCw2
ICs0NDA4LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cisj
aWYgIVVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gQXMgbG9uZyBhcyBhIEJpZ0ludDMyIGFuZCBh
IEhlYXBCaWdJbnQgY2FuIGNvbXBhcmUgZXF1YWwsIGl0IGlzIG5vdCBzb3VuZCB0byByZXBsYWNl
IGNvbXBhcmVTdHJpY3RFcSBieSBhIHNpbXBsZSBjb21wYXJpc29uIG9mIHRoZSBKU1ZhbHVlIGlu
IHRoZSBmb2xsb3dpbmcgY2FzZXMuCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpKSB7CisgICAg
ICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdERvdWJsZVVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpCisgICAgICAgICAgICAm
JiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmcoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBlMWM2
Y2EyNTJhYmQuLjM1Y2Q1NGM4YTIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
QEAgLTI4MDIsNiArMjgwMiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNO
b3REb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hv
dWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1
bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDlkYzdjZTBmOTJlNC4uZjZjOTFlMjNiZjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAt
OTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW55SW50VXNlOgogICAgICAgICBj
YXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAg
ICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAxNjJmMTZhNzk5NzkuLjE5NGU2NDRkYWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY5MzMsNyArNjkzMyw0MiBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCisjaWYgIVVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKSB7
CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAg
RWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkID0gbm9kZS0+Y2hp
bGQyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBI
b2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgp
IHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRl
eEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2Rl
LCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGls
ZCk7CisgICAgICAgICAgICB1c2Uobm90RG91YmxlQ2hpbGQpOworICAgICAgICAgICAgdXNlKG5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpOworICAgICAgICAgICAgbV9p
bmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnRO
b2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
Z1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nVXNlLCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdl
IG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJp
Y3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlLCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CisgICAgICAgICAgICB1c2Uobm90RG91Ymxl
Q2hpbGQpOworICAgICAgICAgICAgdXNlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nQ2hpbGQpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxv
Y2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJs
ZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFs
aXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTYzLDYgKzcxOTgsNjggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmlj
dEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2Ugbm90RG91YmxlQ2hpbGQsIEVkZ2UgbmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vdERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
IEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nQ2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBsZWZ0
LCByaWdodCk7CisgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7
CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKyAgICBH
UFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgbGVmdFJl
Z3MsIHRlbXBHUFIpOworICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIHJpZ2h0UmVn
cywgdGVtcEdQUik7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIG1faml0LmNvbXBhcmU2NChK
SVRDb21waWxlcjo6RXF1YWwsIGxlZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkp
OworI2Vsc2UKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsK
KyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCkpOworICAgIG1faml0
LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5w
YXlsb2FkR1BSKCksIHJlc3VsdC5ncHIoKSk7CisgICAgbm90RXF1YWwubGluaygmbV9qaXQpOwor
I2VuZGlmCisgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFu
Y2hOb2RlLCBFZGdlIG5vdERvdWJsZUNoaWxkLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nQ2hpbGQpCit7CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBub3RE
b3VibGVDaGlsZCwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCByaWdodCh0aGlzLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworCisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CisgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hp
bGQsIGxlZnRSZWdzLCB0ZW1wR1BSKTsKKyAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZyhuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxk
LCByaWdodFJlZ3MsIHRlbXBHUFIpOworCisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hO
b2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2Vu
ID0gYnJhbmNoTm9kZS0+YnJhbmNoRGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKKworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgaWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGJyYW5j
aDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5vdFRh
a2VuKTsKKyAgICAgICAganVtcCh0YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNo
NjQoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgdGFrZW4pOwor
ICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CisjZWxzZQorICAgIGJyYW5jaDMyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCksIG5vdFRha2Vu
KTsKKyAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoMzIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBsZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigp
LCBub3RUYWtlbik7CisgICAgICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAgICAg
IGJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBh
eWxvYWRHUFIoKSwgdGFrZW4pOworICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CisjZW5k
aWYKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAg
IE5vZGUqIG5vZGUsIEdQUlJlZyBsZWZ0R1BSLCBHUFJSZWcgcmlnaHRHUFIsIEdQUlJlZyBsZW5n
dGhHUFIsIEdQUlJlZyBsZWZ0VGVtcEdQUiwKICAgICBHUFJSZWcgcmlnaHRUZW1wR1BSLCBHUFJS
ZWcgbGVmdFRlbXAyR1BSLCBHUFJSZWcgcmlnaHRUZW1wMkdQUiwKQEAgLTExNDMyLDYgKzExNTI5
LDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdENlbGxOb3JCaWdJbnQoRWRn
ZSBlZGdlKQogI2VuZGlmCiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdERv
dWJsZShFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQoreworICAg
IGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNGdWxsRG91YmxlKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQz
MiA9IG5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJ
bnQzMikKKyAgICAgICAgZG9uZSA9IG1faml0LmJyYW5jaElmSW50MzIocmVncyk7CisKKyAgICBE
RkdfVFlQRV9DSEVDSyhyZWdzLCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJyYW5jaElm
TnVtYmVyKHJlZ3MsIHRlbXBHUFIpKTsKKworICAgIGlmIChtYXlCZUludDMyKQorICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90
RG91YmxlKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVj
RnVsbERvdWJsZSkpCkBAIC0xMTQ0Miw5ICsxMTU1Niw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVOb3REb3VibGUoRWRnZSBlZGdlKQogICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBv
cGVyYW5kLmpzVmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwog
ICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hJZkludDMyKHJl
Z3MpOworICAgIHNwZWN1bGF0ZU5vdERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKK30KKwor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmcoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sK
KyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjU3Ry
aW5nKSkpCisgICAgICAgIHJldHVybjsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBk
b25lOworCisgICAgYm9vbCBtYXlCZUludDMyID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJ
bnQzMk9ubHkpOworICAgIGlmIChtYXlCZUludDMyKQorICAgICAgICBkb25lLmFwcGVuZChtX2pp
dC5icmFuY2hJZkludDMyKHJlZ3MpKTsKKwogICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2Us
IH5TcGVjRnVsbERvdWJsZSwgbV9qaXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOwot
ICAgIGRvbmUubGluaygmbV9qaXQpOworCisgICAgYm9vbCBtYXlOb3RCZUNlbGwgPSBuZWVkc1R5
cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCk7CisgICAgaWYgKG1heU5vdEJlQ2VsbCkKKyAgICAgICAg
ZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJlZ3MpKTsKKworICAgIERGR19UWVBF
X0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZlN0cmluZyhyZWdz
LnBheWxvYWRHUFIoKSkpOworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVh
cEJpZ0ludCwgbV9qaXQuYnJhbmNoSWZIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisK
KyAgICBpZiAobWF5QmVJbnQzMiB8fCBtYXlOb3RCZUNlbGwpCisgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91Ymxl
Tm9ySGVhcEJpZ0ludE5vclN0cmluZyhFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCB+KFNwZWNGdWxsRG91YmxlIHwgU3BlY1N0cmluZykpKQorICAgICAgICByZXR1
cm47CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNWYWx1
ZVJlZ3MgcmVncyA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9
IHRlbXAuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZyhlZGdlLCByZWdzLCB0ZW1wR1BSKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlT3RoZXIoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQ
UikKQEAgLTExNjMyLDYgKzExNzgxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
KE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHNwZWN1
bGF0ZU5vdERvdWJsZShlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgT3RoZXJVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU90aGVyKGVkZ2UpOwogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCBiYTUzZjBlMjg1NzcuLmY4YjI5OThkNGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTE4OSw2ICsxMTg5LDggQEAgcHVibGljOgog
ICAgIHZvaWQgY29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVI
ZWFwQmlnSW50RXF1YWxpdHkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9s
RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOworICAgIHZvaWQgY29tcGlsZU5vdERv
dWJsZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9k
ZSosIEVkZ2Ugbm90RG91YmxlRWRnZSwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ0VkZ2UpOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJh
bmNoTm9kZSwgRWRnZSBub3REb3VibGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmln
SW50Tm9yU3RyaW5nRWRnZSk7CiAgICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5
KE5vZGUqLCBFZGdlIHN5bWJvbEVkZ2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwogCiAgICAgdm9pZCBl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChFZGdlIHZhbHVlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFz
aWNCbG9jayogbm90VGFrZW4pOwpAQCAtMTY3MSw3ICsxNjczLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3Vs
YXRlTm90Q2VsbChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGxOb3JCaWdJbnQoRWRn
ZSk7CisgICAgdm9pZCBzcGVjdWxhdGVOb3REb3VibGUoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJl
ZyB0ZW1wKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdERvdWJsZShFZGdlKTsKKyAgICB2b2lkIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UsIEpTVmFsdWVS
ZWdzLCBHUFJSZWcgdGVtcCk7CisgICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZyhFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpT
VmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlLCBK
U1ZhbHVlUmVncyk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCmluZGV4IGRkMDlkZjcyZjkyZS4uNGI0M2M3NWRm
ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTE3Myw2
ICsxNzMsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1
c2VLaW5kKQogICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICBvdXQucHJpbnQoIk5vdERv
dWJsZSIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJp
Z0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgb3V0LnByaW50KCJOZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBLbm93bk90aGVy
VXNlOgogICAgICAgICBvdXQucHJpbnQoIktub3duT3RoZXIiKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAppbmRleCBjMjc2OTY1ZDFiMzcuLjk0
ZTU3MTAwNWViMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VL
aW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTgy
LDYgKzgyLDcgQEAgZW51bSBVc2VLaW5kIHsKICAgICBOb3RDZWxsVXNlLAogICAgIE5vdENlbGxO
b3JCaWdJbnRVc2UsCiAgICAgTm90RG91YmxlVXNlLAorICAgIE5laXRoZXJEb3VibGVOb3JIZWFw
QmlnSW50Tm9yU3RyaW5nVXNlLAogICAgIEtub3duT3RoZXJVc2UsCiAgICAgT3RoZXJVc2UsCiAg
ICAgTWlzY1VzZSwKQEAgLTE5MCw2ICsxOTEsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlw
ZUZpbHRlckZvcihVc2VLaW5kIHVzZUtpbmQpCiAgICAgICAgIHJldHVybiB+U3BlY0NlbGxDaGVj
ayAmIH5TcGVjQmlnSW50OwogICAgIGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICByZXR1cm4g
flNwZWNGdWxsRG91YmxlOworICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdVc2U6CisgICAgICAgIHJldHVybiB+U3BlY0Z1bGxEb3VibGUgJiB+U3BlY0hlYXBCaWdJ
bnQgJiB+U3BlY1N0cmluZzsKICAgICBjYXNlIEtub3duT3RoZXJVc2U6CiAgICAgY2FzZSBPdGhl
clVzZToKICAgICAgICAgcmV0dXJuIFNwZWNPdGhlcjsKQEAgLTMwOSw2ICszMTIsNyBAQCBpbmxp
bmUgYm9vbCBjaGVja01heUNyYXNoSWZJbnB1dElzRW1wdHkoVXNlS2luZCBraW5kKQogICAgIGNh
c2UgTm90Q2VsbFVzZToKICAgICBjYXNlIE5vdENlbGxOb3JCaWdJbnRVc2U6CiAgICAgY2FzZSBO
b3REb3VibGVVc2U6CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
Z1VzZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IGRhNjI1NDkyOTNkMS4uNjU0Y2ViNDg0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2Ug
QW55SW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgTm90RG91YmxlVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCAwNWI1ZGJmZjAzZTIuLjQxMzNiODI4YjY0YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTUwMiw3ICs5NTAyLDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlz
QmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQotICAgICAgICAgICAgfHwgbV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpIHsKKyAgICAgICAgICAgIHx8
IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisjaWYgIVVTRShC
SUdJTlQzMikKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJs
ZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpCisgICAgICAgICAg
ICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5v
clN0cmluZ1VzZSwgTm90RG91YmxlVXNlKSkgeworI2Vsc2UKKyAgICAgICAgICAgICkgeworI2Vu
ZGlmCiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
QEAgLTE4NDA2LDYgKzE4NDEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOb3REb3VibGVV
c2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3REb3VibGUoZWRnZSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1Vz
ZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nKGVkZ2UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT3RoZXJVc2U6CiAg
ICAgICAgICAgICBzcGVjdWxhdGVPdGhlcihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTg0NjksNiArMTg0NzgsMzEgQEAgcHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRo
ZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAg
IGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RJbnQzMiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGlzQ2VsbEJsb2NrID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNJbnQzMih2YWx1ZSwgcHJvdmVuVHlw
ZShlZGdlKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoaXNOb3RJbnQzMikpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNOb3RJbnQzMiwg
aXNDZWxsQmxvY2spOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCB+U3BlY0Z1bGxEb3VibGUsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgIG1fb3V0
LmJyYW5jaChpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpLCB1bnN1cmUoaXNDZWxsQmxv
Y2spLCB1bnN1cmUoY29udGludWF0aW9uKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXND
ZWxsQmxvY2ssIGNvbnRpbnVhdGlvbik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVW
YWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjU3RyaW5nLCBpc1N0cmluZyh2YWx1ZSkpOworICAgICAg
ICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCB+U3BlY0hlYXBCaWdJ
bnQsIGlzSGVhcEJpZ0ludCh2YWx1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQ2VsbE9yT3RoZXIoRWRnZSBlZGdlKQogICAg
IHsK
</data>
<flag name="commit-queue"
          id="452184"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430654</attachid>
            <date>2021-06-05 11:45:14 -0700</date>
            <delta_ts>2021-06-07 12:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226676</filename>
            <type>text/plain</type>
            <size>30192</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
M2NiODk4ZmIyZDEwLi4yMDMzMTVkYTYwMDAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDYtMDQgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBj
b21wYXJlU3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0
IG9uZSBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBtYWRlIHR3byB2YXJpYW50cyBvZiB0aGUg
YWxyZWFkeSBleGlzdGluZyBwb2x5LXN0cmljdGVxIG1pY3JvYmVuY2htYXJrcyB3aXRoIGRpZmZl
cmVudCB0eXBlcyBpbiB0aGUgYXJyYXkuCisgICAgICAgIEkgYWxzbyB0d2Vha2VkIGFsbCB0aHJl
ZSBzbyB0aGF0IHdlIG1vcmUgcmVsaWFibHkgcmVhY2ggdGhlIEZUTC4KKyAgICAgICAgRmluYWxs
eSBJIGFkZGVkIGEgc3RyZXNzLXRlc3QgdG8gdmVyaWZ5IHRoYXQgSSBkaWQgbm90IGludHJvZHVj
ZSBhbiBPU1IgZXhpdCBidWcuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5v
dC1kb3VibGUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzOgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3Vi
bGUtbm9yLXN0cmluZy1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0
ZXN0KToKKwogMjAyMS0wNi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFByaXZhdGUgc3RhdGljIG1ldGhvZCBzaG91bGQgZGVmaW5lIHByaXZh
dGVDbGFzc0JyYW5kSWRlbnRpZmllciBpbiBjbGFzcy1zY29wZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0
cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2MDlkYjM2
ODhjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3Ry
aWN0ZXEtbm90LWRvdWJsZS1ub3Itc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lw
IGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mt
c3RyZXNzLXRlc3QucHkKKy8vQCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ug
b2YgcG9seW1vcnBoaWMgc3RyaWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2Yg
dHlwZXMsIGJ1dCBub3QgRG91Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0
aGUgb25seSB2YWx1ZSB0aGF0IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYu
CisvLyBUaGlzIHRlc3QgZG9lcyBub3QgaGF2ZSBzdHJpbmdzIG9yIGJpZyBpbnRzIGVpdGhlci4g
VGhpcyBpcyByZWxldmFudCBiZWNhdXNlIHN0cmluZ3MvYmlnIGludHMgYXQgZGlmZmVyZW50IHBs
YWNlcyBpbiBtZW1vcnkgY2FuIGNvbXBhcmUgZXF1YWwuCisKK3ZhciBhcnJheSA9IFtdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGklMikgPT0g
MCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKFtpXSk7CisgICAgdmFyIG8g
PSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChvKTsKK30KKwor
dmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7CisgICAgaWYo
eCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgeworICAgICAgICAg
ICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
bnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3Vs
dDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCkKK3Rlc3QoKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91Ymxl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdlNjNiODJkM2QzCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS1u
b3QtZG91YmxlLmpzCkBAIC0wLDAgKzEsNDAgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBw
bGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKKy8v
QCBydW5Ob0ZUTAorCisvLyBUZXN0cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcG9seW1vcnBoaWMgc3Ry
aWN0IGVxdWFsaXR5LgorLy8gSXQgaGFzIG1vc3Qga2luZHMgb2YgdHlwZXMsIGJ1dCBub3QgRG91
Ymxlcy4gVGhpcyBpcyByZWxldmFudCBiZWNhdXNlIE5hTiBpcyB0aGUgb25seSB2YWx1ZSB0aGF0
IHJldHVybnMgZmFsc2Ugd2hlbiBjb21wYXJlZCB0byBpdHNlbGYuCisKK3ZhciBhcnJheSA9IFtd
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgIGFycmF5LnB1c2goKGkl
MikgPT0gMCk7CisgICAgYXJyYXkucHVzaChpKTsKKyAgICBhcnJheS5wdXNoKCIiICsgaSk7Cisg
ICAgdmFyIG8gPSB7fTsKKyAgICBvWyJhIiArIGldID0gaSArIDE7CisgICAgYXJyYXkucHVzaChv
KTsKK30KKwordmFyIG51bVN0cmljdEVxdWFsID0gMDsKKworZnVuY3Rpb24gZm9vKHgsIHkpCit7
CisgICAgaWYoeCA9PT0geSkKKyAgICAgICAgbnVtU3RyaWN0RXF1YWwrKzsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
eworICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBhcnJheS5sZW5ndGg7ICsraikgewor
ICAgICAgICAgICAgZm9vKGFycmF5W2ldLCBhcnJheVtqXSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQorICAgICAgICB0aHJvdyAiSW5jb3Jy
ZWN0IHJlc3VsdDogIiArIG51bVN0cmljdEVxdWFsOworfQorbm9JbmxpbmUodGVzdCk7Cit0ZXN0
KCk7CisKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3Rl
cS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHktc3RyaWN0ZXEuanMKaW5kZXggOWQw
NTMwNmU1MTU3Li5hNDY4NWQwYzlmNWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHktc3RyaWN0ZXEuanMKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1z
dHJpY3RlcS5qcwpAQCAtNiw4ICs2LDggQEAKIHZhciBhcnJheSA9IFtdOwogCiBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgIGFycmF5LnB1c2goaSk7Ci0gICAgYXJyYXkucHVz
aCgoaSUyKSA9PSAwKTsKKyAgICBhcnJheS5wdXNoKChpICUgMikgPT0gMCk7CisgICAgYXJyYXku
cHVzaCgzLjE0ICogaSk7CiAgICAgYXJyYXkucHVzaCgiIiArIGkpOwogICAgIHZhciBvID0ge307
CiAgICAgb1siYSIgKyBpXSA9IGkgKyAxOwpAQCAtMTUsMTUgKzE1LDI1IEBAIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CiB9CiAKIHZhciBudW1TdHJpY3RFcXVhbCA9IDA7Ci1mb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9IGkg
KyAxOyBqIDwgYXJyYXkubGVuZ3RoOyArK2opIHsKLSAgICAgICAgaWYgKGFycmF5W2ldID09PSBh
cnJheVtqXSkKLSAgICAgICAgICAgIG51bVN0cmljdEVxdWFsKys7Ci0gICAgfQorCitmdW5jdGlv
biBmb28oeCwgeSkKK3sKKyAgICBpZih4ID09PSB5KQorICAgICAgICBudW1TdHJpY3RFcXVhbCsr
OwogfQogCi1pZiAobnVtU3RyaWN0RXF1YWwgIT0gMjQ5NTAwKQotICAgIHRocm93ICJJbmNvcnJl
Y3QgcmVzdWx0OiAiICsgbnVtU3RyaWN0RXF1YWw7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAodmFy
IGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28oYXJy
YXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIGlmIChudW1TdHJpY3RF
cXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsgbnVt
U3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KTsKK3Rlc3QoKTsKIAogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wb2x5LXN0cmljdGVxLW5vdC1kb3VibGUtbm9yLXN0cmluZy1mYWls
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcG9seS1zdHJpY3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmct
ZmFpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzZjZkOWVl
YTQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3BvbHktc3RyaWN0ZXEtbm90
LWRvdWJsZS1ub3Itc3RyaW5nLWZhaWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHNraXAgaWYg
JG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJl
c3MtdGVzdC5weQorCit2YXIgYXJyYXkgPSBbXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICBhcnJheS5wdXNoKChpJTIpID09IDApOworICAgIGFycmF5LnB1c2goaSk7
CisgICAgYXJyYXkucHVzaChbaV0pOworICAgIHZhciBvID0ge307CisgICAgb1siYSIgKyBpXSA9
IGkgKyAxOworICAgIGFycmF5LnB1c2gobyk7Cit9CisKK3ZhciBudW1TdHJpY3RFcXVhbCA9IDA7
CisKK2Z1bmN0aW9uIGZvbyh4LCB5KQoreworICAgIGlmKHggPT09IHkpCisgICAgICAgIG51bVN0
cmljdEVxdWFsKys7Cit9Citub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAo
dmFyIGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBmb28o
YXJyYXlbaV0sIGFycmF5W2pdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChudW1TdHJp
Y3RFcXVhbCAhPSAyNDk1MDApCisgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0OiAiICsg
bnVtU3RyaWN0RXF1YWw7CisKKyAgICBmb28oNDIsIDQyLjApOworICAgIGZvbyhOYU4sIE5hTik7
CisgICAgZm9vKCJmb29iYXIiLCAiZm9vIiArICJiYXIiKQorCisgICAgaWYgKG51bVN0cmljdEVx
dWFsICE9IDI0OTUwMikKKyAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgYXQgdGhlIGVu
ZCAiICsgbnVtU3RyaWN0RXF1YWw7Cit9Citub0lubGluZSh0ZXN0KQordGVzdCgpOworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNjE3NWVkMWQ0N2UuLjIwZTM2YmIyMTk2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMjEtMDYtMDQgIFJvYmluIE1v
cmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBjb21wYXJl
U3RyaWN0RXEgd2hlbiBuZWl0aGVyIHNpZGUgaXMgYSBkb3VibGUgYW5kIGF0IGxlYXN0IG9uZSBp
cyBuZWl0aGVyIGEgc3RyaW5nIG5vciBhIEJpZ0ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgaXMgZXhhY3RseSBvbmUgY2FzZSB3aGVyZSB4
ID09PSB5IG11c3QgcmV0dXJuIGZhbHNlIGRlc3BpdGUgeCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3
aXRoIHRoZSBzYW1lIGJpdHM6CisgICAgICAgICAgICBOYU4gPT09IE5hTgorICAgICAgICBUaGVy
ZSBhcmUgYSBmZXcgY2FzZXMgd2hlcmUgeCA9PT0geSBtdXN0IHJldHVybiB0cnVlIGRlc3BpdGUg
eCBhbmQgeSBiZWluZyBKU1ZhbHVlcyB3aXRoIHBvdGVudGlhbGx5IGRpZmZlcmVudCBiaXRzOgor
ICAgICAgICAgICAgRG91YmxlID09PSBJbnQzMgorICAgICAgICAgICAgU3RyaW5nID09PSBTdHJp
bmcKKyAgICAgICAgICAgIEhlYXBCaWdJbnQgPT09IEhlYXBCaWdJbnQKKyAgICAgICAgICAgIEhl
YXBCaWdJbnQgPT09IEJpZ0ludDMyIChpZiB0aGV5IGFyZSBlbmFibGVkKQorICAgICAgICBJZiB3
ZSBkb24ndCBoYXZlIGEgZG91YmxlIG9uIGVpdGhlciBzaWRlLCBhdCBsZWFzdCBvbmUgc2lkZSBo
YXMgbmVpdGhlciBhIFN0cmluZyBub3IgYSBIZWFwQmlnSW50LCBhbmQgQmlnSW50MzIgYXJlIGRp
c2FibGVkLCB3ZSBjYW4gY2xlYXJseSBpZ25vcmUgYWxsIG9mIHRoZXNlIHBhdGhvbG9naWNhbCBj
YXNlcy4KKworICAgICAgICBUaGlzIG9wdGltaXphdGlvbiB3YXMgZGVjaWRlZCBiYXNlZCBvbiBs
b29raW5nIGF0IERGRyBncmFwaHMgb2YgU3BlZWRvbWV0ZXIyOyBoZXJlIGlzIGEgc2FtcGxlIG9m
IHRoZSBjb21wYXJlU3RyaWN0RXEoVW50eXBlZCwgVW50eXBlZCksIGNvdXJ0ZXN5IG9mIFBoaWw6
CisgICAgICAgICAgICBGaW5hbHxBcnJheXxTdHJpbmd8Qm9vbCwgRmluYWx8QXJyYXl8U3RyaW5n
fEJvb2wKKyAgICAgICAgICAgIEFycmF5fFN0cmluZ3xCb29sLCBTdHJpbmd8Qm9vbCAodHdpY2Up
CisgICAgICAgICAgICBBcnJheXxTdHJpbmd8Qm9vbCwgU3RyaW5nfEludDMyIChvbmNlIGluIERG
Rywgb25jZSBpbiBGVEwpCisgICAgICAgICEgICBBcnJheXxTdHJpbmd8Qm9vbCwgQXJyYXl8Qm9v
bAorICAgICAgICAhICAgRmluYWx8T3RoZXIsIEZpbmFsfE90aGVyCisgICAgICAgICEgICBJbnQz
MnxPdGhlciwgSW50MzIKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50LCBGaW5hbHxTdHJp
bmdJZGVudCAoMyB0aW1lcykKKyAgICAgICAgICAgIEZpbmFsfFN0cmluZ0lkZW50fEJvb2xJbnQz
MiwgU3RyaW5nSWRlbnR8Qm9vbEludDMyICh0d2ljZSkKKyAgICAgICAgICAgIFN0cmluZ3xCb29s
LCBTdHJpbmd8Qm9vbCAoNCB0aW1lcykKKyAgICAgICAgICAgIERvdWJsZVB1cmVOYU4sIFN0cmlu
Z3xCb29sCisgICAgICAgICEgICBPdGhlciwgRnVuY3Rpb258T3RoZXIKKyAgICAgICAgISAgIEZp
bmFsfE90aGVyLCBGaW5hbHxGdW5jdGlvbnxPdGhlciAodHdpY2UpCisgICAgICAgICAgICBGaW5h
bHxTdHJpbmd8Qm9vbHxPdGhlciwgRmluYWx8U3RyaW5nfEJvb2x8T3RoZXIgKDMgdGltZXMsIHR3
byBpbiB0aGUgRlRMKQorICAgICAgICAgICAgRmluYWx8U3RyaW5nfEludDMyLCBTdHJpbmd8SW50
MzIgKGZvdXIgdGltZXMpCisgICAgICAgICAgICBTdHJpbmd8SW50MzJ8Qm9vbCwgRnVuY3Rpb258
U3RyaW5nfEludDMyfEJvb2wgKHR3aWNlKQorICAgICAgICAgICAgU3RyaW5nfERvdWJsZVB1cmVO
YU4sIFN0cmluZ3xCb29sICh0d2ljZSkKKyAgICAgICAgISAgIEZpbmFsfEJvb2x8T3RoZXIsIEZp
bmFsfEZ1bmN0aW9ufE90aGVyIChmb3VyIHRpbWVzLCB0d2ljZSBpbiBGVEwpCisgICAgICAgIEkg
bWFya2VkIHdpdGggYSAhIHRob3NlIGZvciB3aGljaCB0aGlzIG9wdGltaXphdGlvbiBzaG91bGQg
YXBwbHkuCisKKyAgICAgICAgVGhlIG9ubHkgc2xpZ2h0bHkgaW50ZXJlc3RpbmcgcGFydCBvZiB0
aGlzIHBhdGNoIGlzIERGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nIHdoZXJlIEkgdG9vayBjYXJlIHRvIHNraXAgZXZlcnkgdGVz
dCB3aG9zZSByZXN1bHQgd2UgY2FuIHByZWRpY3QgZnJvbSB0aGUgYWJzdHJhY3QgaW50ZXJwcmV0
ZXIuCisKKyAgICAgICAgUmVzdWx0cyBvbiBtaWNyb2JlbmNobWFya3M6CisgICAgICAgICAgICBw
b2x5LXN0cmljdGVxLW5vdC1kb3VibGUgICAgICAgICAgICAgICAgICA0NS41NzkzKy0wLjUzMDQg
ICAgID8gICAgIDQ2LjAzMDYrLTAuNTYyMSAgICAgICAgPworICAgICAgICAgICAgcG9seS1zdHJp
Y3RlcS1ub3QtZG91YmxlLW5vci1zdHJpbmcgICAgICAgNDUuNTgyOSstMC41NzUwICAgICBeICAg
ICAxNi45MDg5Ky0wLjMwNzAgICAgICAgIF4gZGVmaW5pdGVseSAyLjY5NTh4IGZhc3RlcgorICAg
ICAgICAgICAgcG9seS1zdHJpY3RlcSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuOTcx
OSstMC42NDUwICAgICAgICAgICA0OC45ODU1Ky0wLjUyMjcgICAgICAgICAgbWlnaHQgYmUgMS4w
MjAxeCBmYXN0ZXIKKworICAgICAgICBJIGFsc28gbWVhc3VyZWQgdGhlIGFtb3VudCBvZiBjb2Rl
IHRoYXQgd2UgZ2VuZXJhdGUgaW4gdGhlIERGRyBvbiBKZXRTdHJlYW0yLgorICAgICAgICBUaGUg
cmVzdWx0cyBoZXJlIGFyZSBkaXNhcHBvaW50aW5nIGJ1dCBzdGlsbCBtZWFzdXJhYmxlLiBCZWZv
cmU6CisgICAgICAgICAgICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY4
NDI1IGNvdW50OiAxMDk1MSBhdmc6IDQyLjc3NDYzMgorICAgICAgICAgICAgREZHX2Zhc3RfQ29t
cGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2ODAyMCBjb3VudDogMTA5MTcgYXZnOiA0Mi44NzA3
NTIKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0b3RhbEJ5dGVzOiA0Njc0
MjQgY291bnQ6IDEwODg4IGF2ZzogNDIuOTMwMTk4CisgICAgICAgIEFmdGVyOgorICAgICAgICAg
ICAgREZHX2Zhc3RfQ29tcGFyZVN0cmljdEVxIHRvdGFsQnl0ZXM6IDQ2Mzk0NiBjb3VudDogMTA5
MTcgYXZnOiA0Mi40OTc1NzMKKyAgICAgICAgICAgIERGR19mYXN0X0NvbXBhcmVTdHJpY3RFcSB0
b3RhbEJ5dGVzOiA0NzQ0OTIgY291bnQ6IDExMTM4IGF2ZzogNDIuNjAxMTg1CisgICAgICAgICAg
ICBERkdfZmFzdF9Db21wYXJlU3RyaWN0RXEgdG90YWxCeXRlczogNDY3MTM4IGNvdW50OiAxMDk3
MCBhdmc6IDQyLjU4MzIyNworCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoK
KyAgICAgICAgKEpTQzo6aXNOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1NwZWN1
bGF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENvbXBhcmVTdHJpY3RFcUFuZFNhbWVWYWx1ZSk6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRT
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyk6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRl
RWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5vdERvdWJsZU5laXRoZXJE
b3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91
YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91YmxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnRO
b3JTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdV
c2VLaW5kLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogZGZn
L0RGR1VzZUtpbmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjp0eXBlRmlsdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpjaGVja01heUNyYXNoSWZJbnB1dElzRW1wdHkpOgorICAgICAgICAqIGZ0
bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcpOgorCiAyMDIxLTA2LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtYXJrIHJlY2VudGx5IGFkZGVkIHByb3RvY29sIGNv
bW1hbmRzL2V2ZW50cyBhcyBwYWdlLW9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKaW5kZXggNjYxZWVjNmQ5ZGExLi45Njk3NzgzNTU3NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CkBAIC00NDQsNiArNDQ0LDExIEBAIGlubGluZSBib29sIGlzTm90RG91YmxlU3BlY3VsYXRpb24o
U3BlY3VsYXRlZFR5cGUgdHlwZSkKICAgICByZXR1cm4gISh0eXBlICYgU3BlY0Z1bGxEb3VibGUp
OwogfQogCitpbmxpbmUgYm9vbCBpc05laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5n
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gISh0eXBlICYg
KFNwZWNGdWxsRG91YmxlIHwgU3BlY0hlYXBCaWdJbnQgfCBTcGVjU3RyaW5nKSk7Cit9CisKIGlu
bGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gdmFsdWUgPT0gU3BlY090aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDUxMDBjNWM3ZDY0NS4uYWRjYjcyOWRkMGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAvLyAgICAgMS4gQWxsb2NhdGVzIGFueSBv
YmplY3RzLgogICAgIC8vICAgICAyLiBSZXNvbHZlcyBhIHJvcGUgc3RyaW5nLCB3aGljaCBhbGxv
Y2F0ZXMgYSBzdHJpbmcuCiAgICAgLy8gICAgIDMuIFByb2R1Y2VzIGEgc3RyaW5nICh3aGljaCBh
bGxvY2F0ZXMgdGhlIHN0cmluZykgZXhjZXB0IHdoZW4gd2UgY2FuIHByb3ZlIHRoYXQKLSAgICAv
LyAgICAgICAgdGhlIHN0cmluZyB3aWxsIGFsd2F5cyBiZSBvbmUgb2YgdGhlIHByZS1hbGxjb2F0
ZWQgU21hbGxTdHJpbmdzLgorICAgIC8vICAgICAgICB0aGUgc3RyaW5nIHdpbGwgYWx3YXlzIGJl
IG9uZSBvZiB0aGUgcHJlLWFsbG9jYXRlZCBTbWFsbFN0cmluZ3MuCiAgICAgLy8gICAgIDQuIFRy
aWdnZXJzIGEgc3RydWN0dXJlIHRyYW5zaXRpb24gKHdoaWNoIGNhbiBhbGxvY2F0ZSBhIG5ldyBz
dHJ1Y3R1cmUpCiAgICAgLy8gICAgICAgIHVubGVzcyBpdCBpcyBhIGtub3duIHRyYW5zaXRpb24g
YmV0d2VlbiBwcmV2aW91c2x5IGFsbG9jYXRlZCBzdHJ1Y3R1cmVzCiAgICAgLy8gICAgICAgIHN1
Y2ggYXMgYmV0d2VlbiBBcnJheSB0eXBlcy4KQEAgLTQ5Niw3ICs0OTYsOCBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
VW50eXBlZFVzZSwgT2JqZWN0VXNlKQogICAgICAgICAgICAgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNj
VXNlLCBVbnR5cGVkVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlz
Y1VzZSkKLSAgICAgICAgICAgIHx8IG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVz
ZSwgTm90U3RyaW5nVmFyVXNlKSB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTm90U3RyaW5nVmFy
VXNlLCBTdHJpbmdJZGVudFVzZSkpCisgICAgICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UsIE5vdFN0cmluZ1ZhclVzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE5vdFN0cmluZ1ZhclVzZSwgU3RyaW5nSWRlbnRVc2UpCisgICAgICAgICAgICB8fCBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTm90RG91YmxlVXNlLCBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0lu
dE5vclN0cmluZ1VzZSkgfHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVp
dGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYTE0YTUzNmE4NGRhLi5iNmRhYmI0Y2FmZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNDQwOCw2
ICs0NDA4LDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDb21wYXJlU3RyaWN0RXEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Cisj
aWYgIVVTRShCSUdJTlQzMikKKyAgICAgICAgLy8gQXMgbG9uZyBhcyBhIEJpZ0ludDMyIGFuZCBh
IEhlYXBCaWdJbnQgY2FuIGNvbXBhcmUgZXF1YWwsIGl0IGlzIG5vdCBzb3VuZCB0byByZXBsYWNl
IGNvbXBhcmVTdHJpY3RFcSBieSBhIHNpbXBsZSBjb21wYXJpc29uIG9mIHRoZSBKU1ZhbHVlIGlu
IHRoZSBmb2xsb3dpbmcgY2FzZXMuCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgICAgICAg
ICAgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpKSB7CisgICAg
ICAgICAgICBmaXhFZGdlPE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPE5vdERvdWJsZVVzZT4obm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29tcGFy
ZVN0cmljdEVxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU5vdERvdWJsZSgpCisgICAgICAgICAgICAm
JiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmcoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3REb3VibGVVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8TmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldE9w
QW5kRGVmYXVsdEZsYWdzKENvbXBhcmVTdHJpY3RFcSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZml4dXBDaGVja3NJbkJsb2NrKEJh
c2ljQmxvY2sqIGJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBlMWM2
Y2EyNTJhYmQuLjM1Y2Q1NGM4YTIxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
QEAgLTI4MDIsNiArMjgwMiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gaXNO
b3REb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hv
dWxkU3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlzTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1
bGF0ZVVudHlwZWRGb3JBcml0aG1ldGljKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDlkYzdjZTBmOTJlNC4uZjZjOTFlMjNiZjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAt
OTMsNiArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQW55SW50VXNlOgogICAgICAgICBj
YXNlIERvdWJsZVJlcEFueUludFVzZToKICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAg
ICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBLbm93bkludDMyVXNlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCAxNjJmMTZhNzk5NzkuLjdlODczNTNjMmYyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTY5MzMsNyArNjkzMyw0MiBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgIAorCisjaWYgIVVTRShCSUdJTlQzMikKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpKSB7
CisgICAgICAgIEVkZ2Ugbm90RG91YmxlQ2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAg
RWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkID0gbm9kZS0+Y2hp
bGQyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBI
b2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgp
IHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRl
eEluQmxvY2spOworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJpY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2Rl
LCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGls
ZCk7CisgICAgICAgICAgICB1c2Uobm90RG91YmxlQ2hpbGQpOworICAgICAgICAgICAgdXNlKG5l
aXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpOworICAgICAgICAgICAgbV9p
bmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnRO
b2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
Z1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJsZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVh
cEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nVXNlLCBOb3REb3VibGVVc2UpKSB7CisgICAgICAgIEVkZ2UgbmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdl
IG5vdERvdWJsZUNoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyYW5j
aEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CisgICAgICAgIGlmIChicmFu
Y2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5v
ZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOworICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdTdHJp
Y3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlLCBub3REb3VibGVDaGlsZCwgbmVpdGhlckRvdWJs
ZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCk7CisgICAgICAgICAgICB1c2Uobm90RG91Ymxl
Q2hpbGQpOworICAgICAgICAgICAgdXNlKG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3Ry
aW5nQ2hpbGQpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxv
Y2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVOb3REb3VibGVOZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmljdEVxdWFsaXR5KG5vZGUsIG5vdERvdWJs
ZUNoaWxkLCBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChIZWFwQmlnSW50VXNlKSkgewogICAgICAgICBjb21waWxlSGVhcEJpZ0ludEVxdWFs
aXR5KG5vZGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTYzLDYgKzcxOTgsNzIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1N0cmlj
dEVxdWFsaXR5KE5vZGUqIG5vZGUsIEVkZ2Ugbm90RG91YmxlQ2hpbGQsIEVkZ2UgbmVpdGhlckRv
dWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdDaGlsZCkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBs
ZWZ0KHRoaXMsIG5vdERvdWJsZUNoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAg
IEpTVmFsdWVPcGVyYW5kIHJpZ2h0KHRoaXMsIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9y
U3RyaW5nQ2hpbGQsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisKKyAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIGxlZnQsIHJpZ2h0KTsKKyNlbHNlCisgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBSZXVzZSwgbGVmdCwgUGF5bG9hZFdvcmQpOworI2VuZGlmCisgICAgSlNWYWx1
ZVJlZ3MgbGVmdFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3Mgcmln
aHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAu
Z3ByKCk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgIHNwZWN1
bGF0ZU5vdERvdWJsZShub3REb3VibGVDaGlsZCwgbGVmdFJlZ3MsIHRlbXBHUFIpOworICAgIHNw
ZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKG5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQsIHJpZ2h0UmVncywgdGVtcEdQUik7CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGxl
ZnQuZ3ByKCksIHJpZ2h0LmdwcigpLCByZXN1bHQuZ3ByKCkpOworI2Vsc2UKKyAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKKyAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVmdC50
YWdHUFIoKSwgcmlnaHQudGFnR1BSKCkpOworICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxl
cjo6RXF1YWwsIGxlZnQucGF5bG9hZEdQUigpLCByaWdodC5wYXlsb2FkR1BSKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgbm90RXF1YWwubGluaygmbV9qaXQpOworI2VuZGlmCisgICAgdW5ibGVzc2Vk
Qm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGVlcEhvbGVOb3REb3VibGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1N0cmljdEVxdWFsaXR5KE5vZGUqLCBOb2RlKiBicmFuY2hOb2RlLCBFZGdlIG5vdERvdWJs
ZUNoaWxkLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nQ2hpbGQpCit7
CisgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBub3REb3VibGVDaGlsZCwgTWFudWFsT3Bl
cmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCBuZWl0aGVy
RG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOworCisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgbGVm
dFJlZ3MgPSBsZWZ0LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0g
cmlnaHQuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisK
KyAgICBzcGVjdWxhdGVOb3REb3VibGUobm90RG91YmxlQ2hpbGQsIGxlZnRSZWdzLCB0ZW1wR1BS
KTsKKyAgICBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhuZWl0
aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0NoaWxkLCByaWdodFJlZ3MsIHRlbXBHUFIp
OworCisgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRh
a2VuLmJsb2NrOworICAgIEJhc2ljQmxvY2sqIG5vdFRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNo
RGF0YSgpLT5ub3RUYWtlbi5ibG9jazsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKHRh
a2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwgbGVmdC5ncHIoKSwgcmlnaHQuZ3ByKCksIG5vdFRha2VuKTsKKyAgICAgICAganVtcCh0
YWtlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFs
LCBsZWZ0LmdwcigpLCByaWdodC5ncHIoKSwgdGFrZW4pOworICAgICAgICBqdW1wKG5vdFRha2Vu
KTsKKyAgICB9CisjZWxzZQorICAgIGJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgbGVm
dC50YWdHUFIoKSwgcmlnaHQudGFnR1BSKCksIG5vdFRha2VuKTsKKyAgICBpZiAodGFrZW4gPT0g
bmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBs
ZWZ0LnBheWxvYWRHUFIoKSwgcmlnaHQucGF5bG9hZEdQUigpLCBub3RUYWtlbik7CisgICAgICAg
IGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGJyYW5jaDMyKEpJVENvbXBpbGVy
OjpFcXVhbCwgbGVmdC5wYXlsb2FkR1BSKCksIHJpZ2h0LnBheWxvYWRHUFIoKSwgdGFrZW4pOwor
ICAgICAgICBqdW1wKG5vdFRha2VuKTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIE5vZGUqIG5vZGUsIEdQUlJlZyBs
ZWZ0R1BSLCBHUFJSZWcgcmlnaHRHUFIsIEdQUlJlZyBsZW5ndGhHUFIsIEdQUlJlZyBsZWZ0VGVt
cEdQUiwKICAgICBHUFJSZWcgcmlnaHRUZW1wR1BSLCBHUFJSZWcgbGVmdFRlbXAyR1BSLCBHUFJS
ZWcgcmlnaHRUZW1wMkdQUiwKQEAgLTExNDMyLDYgKzExNTMzLDIzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZU5vdENlbGxOb3JCaWdJbnQoRWRnZSBlZGdlKQogI2VuZGlmCiB9CiAK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdERvdWJsZShFZGdlIGVkZ2UsIEpTVmFs
dWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQoreworICAgIGlmICghbmVlZHNUeXBlQ2hlY2so
ZWRnZSwgflNwZWNGdWxsRG91YmxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZTsKKworICAgIGJvb2wgbWF5QmVJbnQzMiA9IG5lZWRzVHlwZUNoZWNrKGVk
Z2UsIH5TcGVjSW50MzJPbmx5KTsKKyAgICBpZiAobWF5QmVJbnQzMikKKyAgICAgICAgZG9uZSA9
IG1faml0LmJyYW5jaElmSW50MzIocmVncyk7CisKKyAgICBERkdfVFlQRV9DSEVDSyhyZWdzLCBl
ZGdlLCB+U3BlY0Z1bGxEb3VibGUsIG1faml0LmJyYW5jaElmTnVtYmVyKHJlZ3MsIHRlbXBHUFIp
KTsKKworICAgIGlmIChtYXlCZUludDMyKQorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90RG91YmxlKEVkZ2UgZWRnZSkKIHsK
ICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIH5TcGVjRnVsbERvdWJsZSkpCkBAIC0xMTQ0
Miw5ICsxMTU2MCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3REb3VibGUo
RWRnZSBlZGdlKQogICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCk7
CiAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwogICAgIAotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5icmFuY2hJZkludDMyKHJlZ3MpOworICAgIHNwZWN1bGF0ZU5v
dERvdWJsZShlZGdlLCByZWdzLCB0ZW1wR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmcoRWRnZSBlZGdlLCBK
U1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNo
ZWNrKGVkZ2UsIH4oU3BlY0Z1bGxEb3VibGUgfCBTcGVjU3RyaW5nKSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lOworCisgICAgYm9vbCBtYXlC
ZUludDMyID0gbmVlZHNUeXBlQ2hlY2soZWRnZSwgflNwZWNJbnQzMk9ubHkpOworICAgIGlmICht
YXlCZUludDMyKQorICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hJZkludDMyKHJlZ3Mp
KTsKKwogICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjRnVsbERvdWJsZSwgbV9q
aXQuYnJhbmNoSWZOdW1iZXIocmVncywgdGVtcEdQUikpOwotICAgIGRvbmUubGluaygmbV9qaXQp
OworCisgICAgYm9vbCBtYXlOb3RCZUNlbGwgPSBuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2Vs
bCk7CisgICAgaWYgKG1heU5vdEJlQ2VsbCkKKyAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKHJlZ3MpKTsKKworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5T
cGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZlN0cmluZyhyZWdzLnBheWxvYWRHUFIoKSkpOworICAg
IERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjSGVhcEJpZ0ludCwgbV9qaXQuYnJhbmNo
SWZIZWFwQmlnSW50KHJlZ3MucGF5bG9hZEdQUigpKSk7CisKKyAgICBpZiAobWF5QmVJbnQzMiB8
fCBtYXlOb3RCZUNlbGwpCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworfQorCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmlu
ZyhFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+KFNwZWNGdWxs
RG91YmxlIHwgU3BlY1N0cmluZykpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVncyA9IG9wZXJhbmQu
anNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisKKyAgICBz
cGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhlZGdlLCByZWdzLCB0
ZW1wR1BSKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIoRWRnZSBl
ZGdlLCBKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKQEAgLTExNjMyLDYgKzExNzg1
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZGdlIGVkZ2UpCiAg
ICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU5vdERvdWJsZShlZGdlKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0
cmluZ1VzZToKKyAgICAgICAgc3BlY3VsYXRlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmcoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3RoZXJVc2U6CiAgICAgICAg
IHNwZWN1bGF0ZU90aGVyKGVkZ2UpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiYTUzZjBlMjg1NzcuLmY4YjI5
OThkNGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTE4OSw2ICsxMTg5LDggQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVN5bWJv
bEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVIZWFwQmlnSW50RXF1YWxpdHkoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUq
IGJyYW5jaE5vZGUpOworICAgIHZvaWQgY29tcGlsZU5vdERvdWJsZU5laXRoZXJEb3VibGVOb3JI
ZWFwQmlnSW50Tm9yU3RyaW5nU3RyaWN0RXF1YWxpdHkoTm9kZSosIEVkZ2Ugbm90RG91YmxlRWRn
ZSwgRWRnZSBuZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ0VkZ2UpOworICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlTm90RG91YmxlTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JT
dHJpbmdTdHJpY3RFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSwgRWRnZSBub3REb3Vi
bGVFZGdlLCBFZGdlIG5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nRWRnZSk7CiAg
ICAgdm9pZCBjb21waWxlU3ltYm9sVW50eXBlZEVxdWFsaXR5KE5vZGUqLCBFZGdlIHN5bWJvbEVk
Z2UsIEVkZ2UgdW50eXBlZEVkZ2UpOwogCiAgICAgdm9pZCBlbWl0T2JqZWN0T3JPdGhlckJyYW5j
aChFZGdlIHZhbHVlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG9jayogbm90VGFrZW4pOwpA
QCAtMTY3MSw3ICsxNjczLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwo
RWRnZSwgSlNWYWx1ZVJlZ3MpOwogICAgIHZvaWQgc3BlY3VsYXRlTm90Q2VsbChFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZU5vdENlbGxOb3JCaWdJbnQoRWRnZSk7CisgICAgdm9pZCBzcGVjdWxh
dGVOb3REb3VibGUoRWRnZSwgSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wKTsKICAgICB2b2lkIHNw
ZWN1bGF0ZU5vdERvdWJsZShFZGdlKTsKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVO
b3JIZWFwQmlnSW50Tm9yU3RyaW5nKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcCk7Cisg
ICAgdm9pZCBzcGVjdWxhdGVOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyhFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UsIEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVt
cCk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlLCBKU1ZhbHVlUmVncyk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVPdGhlcihFZGdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtp
bmQuY3BwCmluZGV4IGRkMDlkZjcyZjkyZS4uNGI0M2M3NWRmZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKQEAgLTE3Myw2ICsxNzMsOSBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVXNlS2luZCB1c2VLaW5kKQogICAgIGNhc2UgTm90
RG91YmxlVXNlOgogICAgICAgICBvdXQucHJpbnQoIk5vdERvdWJsZSIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAg
ICAgICAgb3V0LnByaW50KCJOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZyIpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBLbm93bk90aGVyVXNlOgogICAgICAgICBvdXQucHJp
bnQoIktub3duT3RoZXIiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuaAppbmRleCBjMjc2OTY1ZDFiMzcuLjk0ZTU3MTAwNWViMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKQEAgLTgyLDYgKzgyLDcgQEAgZW51bSBVc2VL
aW5kIHsKICAgICBOb3RDZWxsVXNlLAogICAgIE5vdENlbGxOb3JCaWdJbnRVc2UsCiAgICAgTm90
RG91YmxlVXNlLAorICAgIE5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nVXNlLAog
ICAgIEtub3duT3RoZXJVc2UsCiAgICAgT3RoZXJVc2UsCiAgICAgTWlzY1VzZSwKQEAgLTE5MCw2
ICsxOTEsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLaW5kIHVz
ZUtpbmQpCiAgICAgICAgIHJldHVybiB+U3BlY0NlbGxDaGVjayAmIH5TcGVjQmlnSW50OwogICAg
IGNhc2UgTm90RG91YmxlVXNlOgogICAgICAgICByZXR1cm4gflNwZWNGdWxsRG91YmxlOworICAg
IGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJbnROb3JTdHJpbmdVc2U6CisgICAgICAgIHJl
dHVybiB+U3BlY0Z1bGxEb3VibGUgJiB+U3BlY0hlYXBCaWdJbnQgJiB+U3BlY1N0cmluZzsKICAg
ICBjYXNlIEtub3duT3RoZXJVc2U6CiAgICAgY2FzZSBPdGhlclVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNPdGhlcjsKQEAgLTMwOSw2ICszMTIsNyBAQCBpbmxpbmUgYm9vbCBjaGVja01heUNyYXNo
SWZJbnB1dElzRW1wdHkoVXNlS2luZCBraW5kKQogICAgIGNhc2UgTm90Q2VsbFVzZToKICAgICBj
YXNlIE5vdENlbGxOb3JCaWdJbnRVc2U6CiAgICAgY2FzZSBOb3REb3VibGVVc2U6CisgICAgY2Fz
ZSBOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGRhNjI1NDkyOTNkMS4u
NjU0Y2ViNDg0MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
R3JhcGgmIGdyYXBoKQogICAgICAgICAgICAgICAgIGNhc2UgQW55SW50VXNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgRG91YmxlUmVwQW55SW50VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTm90
RG91YmxlVXNlOgorICAgICAgICAgICAgICAgIGNhc2UgTmVpdGhlckRvdWJsZU5vckhlYXBCaWdJ
bnROb3JTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAwNWI1ZGJm
ZjAzZTIuLjQxMzNiODI4YjY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtOTUwMiw3ICs5NTAyLDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNl
LCBVbnR5cGVkVXNlKQotICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSwgTWlzY1VzZSkpIHsKKyAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpCisjaWYgIVVTRShCSUdJTlQzMikKKyAgICAgICAgICAg
IHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE5vdERvdWJsZVVzZSwgTmVpdGhlckRvdWJsZU5v
ckhlYXBCaWdJbnROb3JTdHJpbmdVc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5
VXNlS2luZChOZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZSwgTm90RG91Ymxl
VXNlKSkgeworI2Vsc2UKKyAgICAgICAgICAgICkgeworI2VuZGlmCiAgICAgICAgICAgICBzcGVj
dWxhdGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKQEAgLTE4NDA2LDYgKzE4NDEyLDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOb3REb3VibGVVc2U6CiAgICAgICAgICAgICBzcGVj
dWxhdGVOb3REb3VibGUoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBO
ZWl0aGVyRG91YmxlTm9ySGVhcEJpZ0ludE5vclN0cmluZ1VzZToKKyAgICAgICAgICAgIHNwZWN1
bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50Tm9yU3RyaW5nKGVkZ2UpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT3RoZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVP
dGhlcihlZGdlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg0NjksNiArMTg0NzgsMzEgQEAg
cHJpdmF0ZToKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKICAgICB9CisKKyAgICB2b2lkIHNwZWN1bGF0ZU5laXRoZXJEb3VibGVOb3JIZWFwQmlnSW50
Tm9yU3RyaW5nKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5u
ZWVkc1R5cGVDaGVjayhlZGdlKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBMVmFs
dWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisK
KyAgICAgICAgTEJhc2ljQmxvY2sgaXNOb3RJbnQzMiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGlzQ2VsbEJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAg
TEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBt
X291dC5icmFuY2goaXNJbnQzMih2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSksIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUoaXNOb3RJbnQzMikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxh
c3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNOb3RJbnQzMiwgaXNDZWxsQmxvY2spOworICAgICAg
ICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCB+U3BlY0Z1bGxEb3Vi
bGUsIGlzTnVtYmVyKHZhbHVlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUs
IHByb3ZlblR5cGUoZWRnZSkpLCB1bnN1cmUoaXNDZWxsQmxvY2spLCB1bnN1cmUoY29udGludWF0
aW9uKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNDZWxsQmxvY2ssIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5T
cGVjU3RyaW5nLCBpc1N0cmluZyh2YWx1ZSkpOworICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1Zh
bHVlVmFsdWUodmFsdWUpLCBlZGdlLCB+U3BlY0hlYXBCaWdJbnQsIGlzSGVhcEJpZ0ludCh2YWx1
ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgfQogICAgIAogICAgIHZvaWQg
c3BlY3VsYXRlQ2VsbE9yT3RoZXIoRWRnZSBlZGdlKQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>