<?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>205759</bug_id>
          
          <creation_ts>2020-01-03 16:28:20 -0800</creation_ts>
          <short_desc>Further simplify StringBuilder usage by standardizing hex formating to a single hex() function</short_desc>
          <delta_ts>2020-01-05 16:22:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602640</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-03 16:28:20 -0800</bug_when>
    <thetext>Further simplify StringBuilder usage by standardizing hex formating to a single hex() function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602655</commentid>
    <comment_count>1</comment_count>
      <attachid>386729</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-03 16:38:51 -0800</bug_when>
    <thetext>Created attachment 386729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602656</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-03 16:43:10 -0800</bug_when>
    <thetext>Darin, you have been working in this area a bit, any thoughts on this simplification? It applies the mapping:

appendByteAsHex(value, builder, case) 
  -&gt; builder.append(hex(static_cast&lt;unsigned char&gt;(value), 2, case))
appendUnsignedAsHex(value, builder, case) 
  -&gt; builder.append(hex(value, case))
appendUnsignedAsHexFixedSize(value, builder, size, case)
  -&gt; builder.append(hex(value, size, case))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602675</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-03 18:10:03 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #2)
&gt; appendByteAsHex(value, builder, case) 
&gt;   -&gt; builder.append(hex(static_cast&lt;unsigned char&gt;(value), 2, case))

This seems a bit clumsy. But I suppose only a bit.

&gt; appendUnsignedAsHex(value, builder, case) 
&gt;   -&gt; builder.append(hex(value, case))
&gt; appendUnsignedAsHexFixedSize(value, builder, size, case)
&gt;   -&gt; builder.append(hex(value, size, case))

These seem great to me. However, I don’t think we are being consistent in style. Sometimes we name these things:

    FormattedNumber::fixedWidth

Other times we name something similar:

    hex

We should decide what style we are after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602776</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-04 12:21:22 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; (In reply to Sam Weinig from comment #2)
&gt; &gt; appendByteAsHex(value, builder, case) 
&gt; &gt;   -&gt; builder.append(hex(static_cast&lt;unsigned char&gt;(value), 2, case))
&gt; 
&gt; This seems a bit clumsy. But I suppose only a bit.
&gt; 
&gt; &gt; appendUnsignedAsHex(value, builder, case) 
&gt; &gt;   -&gt; builder.append(hex(value, case))
&gt; &gt; appendUnsignedAsHexFixedSize(value, builder, size, case)
&gt; &gt;   -&gt; builder.append(hex(value, size, case))
&gt; 
&gt; These seem great to me. However, I don’t think we are being consistent in
&gt; style. Sometimes we name these things:
&gt; 
&gt;     FormattedNumber::fixedWidth
&gt; 
&gt; Other times we name something similar:
&gt; 
&gt;     hex
&gt; 
&gt; We should decide what style we are after.

We definitely need to decide on the style. I am leaning toward the shorter, unqualified names (hex(...), pad(...), fixedWidth(...), fixedPrecision(...), etc), and putting them all in a shared header for easier discovery. I could be convinced having some qualifier namespace might be helpful, e.g. all in a Format namespace (Format::hex(...), Format::pad(...), etc).

Do you have a particular preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602785</commentid>
    <comment_count>5</comment_count>
      <attachid>386768</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-04 14:52:30 -0800</bug_when>
    <thetext>Created attachment 386768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602786</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-04 14:53:03 -0800</bug_when>
    <thetext>I will unify the style with fixedWidth/fixedPrecision in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602791</commentid>
    <comment_count>7</comment_count>
      <attachid>386771</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-04 15:38:24 -0800</bug_when>
    <thetext>Created attachment 386771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602814</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-04 20:08:05 -0800</bug_when>
    <thetext>I like the short names for clarity at the point of use. I like the long names for searching the entire source tree to see where things are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602892</commentid>
    <comment_count>9</comment_count>
      <attachid>386771</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-01-05 14:33:20 -0800</bug_when>
    <thetext>Comment on attachment 386771
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/HexNumber.cpp:34
&gt; +// Not using builder.toString() or builder.toStringPreserveCapacity() because they all
&gt; +// change internal state of builder.

Why does that matter? You never use the builder again after the expect() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602896</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-01-05 15:22:35 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #9)
&gt; Comment on attachment 386771 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386771&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/HexNumber.cpp:34
&gt; &gt; +// Not using builder.toString() or builder.toStringPreserveCapacity() because they all
&gt; &gt; +// change internal state of builder.
&gt; 
&gt; Why does that matter? You never use the builder again after the expect()
&gt; method.

Oh, that comment was copied from another test. That was silly of me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602906</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-05 16:20:10 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 386771:

transitions/default-timing-function.html bug 138901 (authors: dino@apple.com and graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602907</commentid>
    <comment_count>12</comment_count>
      <attachid>386771</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-05 16:21:05 -0800</bug_when>
    <thetext>Comment on attachment 386771
Patch

Clearing flags on attachment: 386771

Committed r254046: &lt;https://trac.webkit.org/changeset/254046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602908</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-05 16:21:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602909</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-05 16:22:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58328979&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386729</attachid>
            <date>2020-01-03 16:38:51 -0800</date>
            <delta_ts>2020-01-04 14:52:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205759-20200103163850.patch</filename>
            <type>text/plain</type>
            <size>25874</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBG
dXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXgg
Zm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorCiAyMDIwLTAx
LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpSZWR1
Y2VMb29wU3RyZW5ndGggc2hvdWxkIG5vdCBkbyByYW5nZSBiYXNlZCBpdGVyYXRpb24gb24gYSB2
ZWN0b3IgaXQncyBtdXRhdGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NjQsOSArNDY0LDkgQEAgU3RyaW5nIEhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24o
RnVuY3RpbwogICAgICAgICAgICAganNvbi5hcHBlbmQoJywnKTsKICAgICAgICAgICAgIGpzb24u
YXBwZW5kTnVtYmVyKGxhYmVsSW5kZXgpOwogICAgICAgICAgICAganNvbi5hcHBlbmRMaXRlcmFs
KCIsXCIweCIpOwotICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwganNvbiwgTG93ZXJjYXNlKTsKKyAgICAgICAgICAg
IGpzb24uYXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obm9kZS5jZWxsKSwg
TG93ZXJjYXNlKSk7CiAgICAgICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiLFwiMHgiKTsK
LSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHdyYXBwZWRBZGRyZXNzKSwganNvbiwgTG93ZXJjYXNlKTsKKyAgICAgICAgICAgIGpzb24u
YXBwZW5kKGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBlZEFkZHJlc3MpLCBM
b3dlcmNhc2UpKTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kKCciJyk7CiAgICAgICAgIH0KICAg
ICB9OwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDEtMDMgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgc2ltcGxpZnkgU3RyaW5nQnVpbGRl
ciB1c2FnZSBieSBzdGFuZGFyZGl6aW5nIGhleCBmb3JtYXRpbmcgdG8gYSBzaW5nbGUgaGV4KCkg
ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTc1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZW5j
b2RlRm9yRmlsZU5hbWUpOgorICAgICAgICAqIHd0Zi9IZXhOdW1iZXIuaDoKKyAgICAgICAgKFdU
Rjo6YXBwZW5kQnl0ZUFzSGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6YXBwZW5kVW5zaWdu
ZWRBc0hleCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXhGaXhl
ZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9Mb2dnZXIuY3BwOgorICAgICAgICAoV1RG
OjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChX
VEY6Oj46OnRvU3RyaW5nKToKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6
OmNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAyMC0wMS0wMiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPiBhbmQgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBFeHBlcmltZW50OiBjcmVhdGUgbG90cyBvZiBkaWZmZXJlbnQg
bWFsbG9jIHpvbmVzIGZvciBlYXNpZXIgYWNjb3VudGluZyBvZiBtZW1vcnkgdXNlCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjU0MDAwKQorKysgU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMSArMTI1LDExIEBAIFN0cmluZyBl
bmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgaWYgKHNob3VsZEVzY2Fw
ZVVDaGFyKGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgewogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVy
LCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNoYXJhY3RlciksIDIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAg
ICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyID4+
IDgpLCAyKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0hleE51
bWJlci5oCShyZXZpc2lvbiAyNTQwMDApCisrKyBTb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMzIgKzQ3LDYgQEAgaW5saW5lIHN0ZDo6cGFpcjxMQ2hhcios
IHVuc2lnbmVkPiBhcHBlbgogCiB9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXBwZW5kQnl0ZUFzSGV4KHVuc2lnbmVkIGNoYXIgYnl0
ZSwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCi17
Ci0gICAgYXV0byogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUobW9kZSk7
Ci0gICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERpZ2l0c1tieXRlID4+IDRdKTsKLSAgICBkZXN0
aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW2J5dGUgJiAweEZdKTsKLX0KLQotLy8gRklYTUU6IENv
bnNpZGVyIHJlbmFtaW5nIHRvIGFwcGVuZEhleC4KLXRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5
cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZT4KLWlubGluZSB2b2lkIGFwcGVuZFVuc2lnbmVk
QXNIZXgoTnVtYmVyVHlwZSBudW1iZXIsIERlc3RpbmF0aW9uVHlwZSYgZGVzdGluYXRpb24sIEhl
eENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCi17Ci0gICAgYXBwZW5kVW5zaWduZWRB
c0hleEZpeGVkU2l6ZShudW1iZXIsIGRlc3RpbmF0aW9uLCAwLCBtb2RlKTsKLX0KLQotLy8gRklY
TUU6IENvbnNpZGVyIHJlbmFtaW5nIHRvIGFwcGVuZEhleC4KLS8vIFNhbWUgYXMgYXBwZW5kVW5z
aWduZWRBc0hleCwgYnV0IHplcm8tcGFkZGluZyB0byBnZXQgYXQgbGVhc3QgdGhlIGRlc2lyZWQg
bnVtYmVyIG9mIGRpZ2l0cy4KLXRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+Ci1pbmxpbmUg
dm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKE51bWJlclR5cGUgbnVtYmVyLCBTdHJp
bmdCdWlsZGVyJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4Q29udmVy
c2lvbk1vZGUgbW9kZSA9IFVwcGVyY2FzZSkKLXsKLSAgICAvLyBFYWNoIGJ5dGUgY2FuIGdlbmVy
YXRlIHVwIHRvIHR3byBkaWdpdHMuCi0gICAgc3RkOjphcnJheTxMQ2hhciwgc2l6ZW9mKE51bWJl
clR5cGUpICogMj4gYnVmZmVyOwotICAgIGF1dG8gcmVzdWx0ID0gSW50ZXJuYWw6OmFwcGVuZEhl
eChidWZmZXIsIG51bWJlciwgbWluaW11bURpZ2l0cywgbW9kZSk7Ci0gICAgZGVzdGluYXRpb24u
YXBwZW5kQ2hhcmFjdGVycyhyZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQpOwotfQotCiBzdHJ1
Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAKQEAgLTExNCw4ICs4OCw1IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11
c2luZyBXVEY6OmFwcGVuZEJ5dGVBc0hleDsKLXVzaW5nIFdURjo6YXBwZW5kVW5zaWduZWRBc0hl
eDsKLXVzaW5nIFdURjo6YXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZTsKIHVzaW5nIFdURjo6
aGV4OwogdXNpbmcgV1RGOjpMb3dlcmNhc2U7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAJKHJldmlzaW9uIDI1
NDAwMCkKKysrIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDI5ICszMywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nIExvZ2dlcjo6TG9nU2l0ZUlk
ZW50aWZpZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0KLSAgICBpZiAoY2xhc3NOYW1lKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNsYXNzTmFt
ZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsKLSAgICB9Ci0gICAgYnVp
bGRlci5hcHBlbmQobWV0aG9kTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBh
cHBlbmRVbnNpZ25lZEFzSGV4KG9iamVjdFB0ciwgYnVpbGRlcik7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIpICIpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgaWYg
KGNsYXNzTmFtZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2xhc3NOYW1lLCAiOjoiLCBt
ZXRob2ROYW1lLCAnKCcsIGhleChvYmplY3RQdHIpLCAiKSAiKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhtZXRob2ROYW1lLCAnKCcsIGhleChvYmplY3RQdHIpLCAiKSAiKTsKIH0KIAogU3RyaW5n
IExvZ0FyZ3VtZW50PGNvbnN0IHZvaWQqPjo6dG9TdHJpbmcoY29uc3Qgdm9pZCogYXJndW1lbnQp
CiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7
Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYXJn
dW1lbnQpLCBidWlsZGVyKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJygnLCBoZXgocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGFyZ3VtZW50KSksICcpJyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgotCi11c2luZyBXVEY6OkxvZ2dlcjsKLXVzaW5nIFdURjo6SlNPTkxvZ1ZhbHVlOwpJ
bmRleDogU291cmNlL1dURi93dGYvVVVJRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvVVVJRC5jcHAJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VVSUQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwyMCArNDgsMTkgQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHJhbmRvbURhdGEpLCBzaXplb2YocmFuZG9tRGF0YSkp
OwogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSgzNik7Ci0gICAgYXBwZW5kVW5z
aWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzBdLCBidWlsZGVyLCA4LCBMb3dlcmNhc2Up
OwotICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVk
U2l6ZShyYW5kb21EYXRhWzFdID4+IDE2LCBidWlsZGVyLCA0LCBMb3dlcmNhc2UpOwotICAgIGJ1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTQiKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRT
aXplKHJhbmRvbURhdGFbMV0gJiAweDAwMDAwZmZmLCBidWlsZGVyLCAzLCBMb3dlcmNhc2UpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6
ZSgocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgsIGJ1aWxkZXIsIDEsIExvd2VyY2FzZSk7Ci0g
ICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSgocmFuZG9tRGF0YVsyXSA+PiAxNikgJiAw
eDAwMDAwZmZmLCBidWlsZGVyLCAzLCBMb3dlcmNhc2UpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCct
Jyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzJdICYgMHgw
MDAwZmZmZiwgYnVpbGRlciwgNCwgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKHJhbmRvbURhdGFbM10sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7Ci0gICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAg
aGV4KHJhbmRvbURhdGFbMF0sIDgsIExvd2VyY2FzZSksCisgICAgICAgICctJywKKyAgICAgICAg
aGV4KHJhbmRvbURhdGFbMV0gPj4gMTYsIDQsIExvd2VyY2FzZSksCisgICAgICAgICItNCIsCisg
ICAgICAgIGhleChyYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZiwgMywgTG93ZXJjYXNlKSwKKyAg
ICAgICAgJy0nLAorICAgICAgICBoZXgoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4LCAxLCBM
b3dlcmNhc2UpLAorICAgICAgICBoZXgoKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgwMDAwMGZm
ZiwgMywgTG93ZXJjYXNlKSwKKyAgICAgICAgJy0nLAorICAgICAgICBoZXgocmFuZG9tRGF0YVsy
XSAmIDB4MDAwMGZmZmYsIDQsIExvd2VyY2FzZSksCisgICAgICAgIGhleChyYW5kb21EYXRhWzNd
LCA4LCBMb3dlcmNhc2UpCisgICAgKTsKIH0KIAogU3RyaW5nIGJvb3RTZXNzaW9uVVVJRFN0cmlu
ZygpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCShyZXZpc2lvbiAyNTQwMDApCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MjAsNyArMTEyMCw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZ0ltcGwqIGltcGwK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1xcJyk7CiAgICAg
ICAgICAgICBidWZmZXIuYXBwZW5kKCd1Jyk7Ci0gICAgICAgICAgICBhcHBlbmRVbnNpZ25lZEFz
SGV4Rml4ZWRTaXplKGNoLCBidWZmZXIsIDQpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCho
ZXgoY2gsIDQpKTsKICAgICAgICAgfQogICAgIH0KICAgICBDU3RyaW5nIG5hcnJvd1N0cmluZyA9
IGJ1ZmZlci50b1N0cmluZygpLmFzY2lpKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQw
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMyBAQAorMjAyMC0wMS0wMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJkaXpp
bmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVByb3RvY29sU3RyaW5nKToK
KyAgICAgICAgKiBjc3MvQ1NTTWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6
ZUNoYXJhY3RlckFzQ29kZVBvaW50KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxpemUgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlSGFzaGVkTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVBbmRFc2NhcGVOb25Qcmlu
dGFibGVzKToKKwogMjAyMC0wMS0wMyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCAiY3JlYXRlIGEgcG90ZW50aWFsLUNPUlMgcmVxdWVzdCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCShy
ZXZpc2lvbiAyNTQwMDApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBTdHJp
bmcgZW5jb2RlUHJvdG9jb2xTdHJpbmcoY29uc3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgaWYgKHByb3RvY29sW2ldIDwgMHgy
MCB8fCBwcm90b2NvbFtpXSA+IDB4N0UpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXFx1Iik7Ci0gICAgICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHBy
b3RvY29sW2ldLCBidWlsZGVyLCA0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChw
cm90b2NvbFtpXSwgNCkpOwogICAgICAgICB9IGVsc2UgaWYgKHByb3RvY29sW2ldID09IDB4NWMp
CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxcXFwiKTsKICAgICAgICAgZWxz
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3
OSw3IEBAIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZUNoYXJhY3RlcihVQ2hhcjMyIGMKIHN0YXRpYyB2
b2lkIHNlcmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KFVDaGFyMzIgYywgU3RyaW5nQnVpbGRl
ciYgYXBwZW5kVG8pCiB7CiAgICAgYXBwZW5kVG8uYXBwZW5kKCdcXCcpOwotICAgIGFwcGVuZFVu
c2lnbmVkQXNIZXgoYywgYXBwZW5kVG8sIExvd2VyY2FzZSk7CisgICAgYXBwZW5kVG8uYXBwZW5k
KGhleChjLCBMb3dlcmNhc2UpKTsKICAgICBhcHBlbmRUby5hcHBlbmQoJyAnKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHJldmlz
aW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsOSArNDM0LDkgQEAgdm9pZCBDU1NQYXJzZXJUb2tl
bjo6c2VyaWFsaXplKFN0cmluZ0J1aQogICAgICAgICBicmVhazsKICAgICBjYXNlIFVuaWNvZGVS
YW5nZVRva2VuOgogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlUrIik7Ci0gICAgICAg
IGFwcGVuZFVuc2lnbmVkQXNIZXgodW5pY29kZVJhbmdlU3RhcnQoKSwgYnVpbGRlcik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGhleCh1bmljb2RlUmFuZ2VTdGFydCgpKSk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCctJyk7Ci0gICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgodW5pY29kZVJh
bmdlRW5kKCksIGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgodW5pY29kZVJh
bmdlRW5kKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUb2tlbjoKICAgICAg
ICAgc2VyaWFsaXplU3RyaW5nKHZhbHVlKCkudG9TdHJpbmcoKSwgYnVpbGRlcik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkocmV2aXNp
b24gMjU0MDAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNDks
MTQgKzIzNDksMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlcwog
ICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgIkVTX2luZm9fbGVuZ3RoIiBmaWVsZC4g
VGhlIHRleHQgdHJhY2sgaW4tYmFuZCBtZXRhZGF0YSB0cmFjayBkaXNwYXRjaCB0eXBlIG11c3Qg
YmUKICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0
cmVhbSB0eXBlIGJ5dGUgYW5kIHRoZSB6ZXJvIG9yIG1vcmUgZGVzY3JpcHRvciBieXRlcyBieXRl
cywKICAgICAgICAgICAgICAgICAvLyBleHByZXNzZWQgaW4gaGV4YWRlY2ltYWwgdXNpbmcgdXBw
ZXJjYXNlIEFTQ0lJIGhleCBkaWdpdHMuCi0gICAgICAgICAgICAgICAgU3RyaW5nIGluYmFuZE1l
dGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRB
c0hleEZpeGVkU2l6ZShzdHJlYW0tPnN0cmVhbV90eXBlLCBpbmJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlLCAyKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGluYmFuZE1ldGFk
YXRhVHJhY2tEaXNwYXRjaFR5cGU7CisgICAgICAgICAgICAgICAgaW5iYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZS5hcHBlbmQoaGV4KHN0cmVhbS0+c3RyZWFtX3R5cGUsIDIpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc3RyZWFtLT5kZXNjcmlwdG9ycy0+
bGVuOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgR3N0TXBlZ3RzRGVzY3JpcHRv
ciogZGVzY3JpcHRvciA9IHN0YXRpY19jYXN0PGNvbnN0IEdzdE1wZWd0c0Rlc2NyaXB0b3IqPihn
X3B0cl9hcnJheV9pbmRleChzdHJlYW0tPmRlc2NyaXB0b3JzLCBqKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBkZXNjcmlwdG9yLT5sZW5ndGg7ICsraykK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChkZXNjcmlwdG9yLT5kYXRh
W2tdLCBpbmJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluYmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUuYXBwZW5kKGhleChkZXNjcmlw
dG9yLT5kYXRhW2tdLCAyKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRy
YWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKGluYmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGUpOworICAgICAgICAgICAgICAgIHRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKGluYmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUudG9TdHJp
bmcoKSk7CiAKICAgICAgICAgICAgICAgICBtX21ldGFkYXRhVHJhY2tzLmFkZChwaWQsIHRyYWNr
KTsKICAgICAgICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKCp0cmFjayk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlz
aW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NSwx
MCArOTg1LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUhhc2hlZE5hbWUoY29uc3QgUwogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgdWludDY0X3Qg
bnVtYmVyID0gbmFtZUhhc2hGb3JTaGFkZXIobmFtZS51dGY4KCkuZGF0YSgpLCBuYW1lLmxlbmd0
aCgpKTsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ3ZWJnbF8iKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KG51bWJlciwgYnVpbGRlciwg
TG93ZXJjYXNlKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCJ3ZWJnbF8iLCBoZXgobnVtYmVyLCBMb3dlcmNhc2UpKTsKIH0KIAogT3B0aW9u
YWw8U3RyaW5nPiBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sSW5TaGFkZXJTb3VyY2VN
YXAoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEFOR0xFU2hhZGVyU3ltYm9sVHlwZSBzeW1ib2xU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiAyNTQwMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MCw3ICsxNjAsNyBAQCBTdHJpbmcgcXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKFN0cmluCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcXHh7Iik7Ci0gICAgICAgICAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleChjLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoaGV4KGMpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwMDApCisr
KyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBG
dXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXgg
Zm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpj
b21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0Ojpsb2dnaW5nU3RyaW5nKToKKwogMjAyMC0wMS0wMyAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG5vbi1saWJ3ZWJydGMgYnVpbGRzIGFmdGVy
IHIyNTM5NTcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE1LDcgKzIxNSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGUK
ICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLnJlc2VydmVD
YXBhY2l0eShoYXNoU2FsdFNpemUpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmFuZG9tRGF0YVNpemU7IGkrKykKLSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmFu
ZG9tRGF0YVtpXSwgYnVpbGRlcik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgocmFu
ZG9tRGF0YVtpXSkpOwogCiAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0ID0gYnVpbGRl
ci50b1N0cmluZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDI1NDAwMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4NCw3ICs0
ODQsNyBAQCBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTCiAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJXZWJCYWNr
Rm9yd2FyZExpc3QgMHgiKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90Pih0aGlzKSwgYnVpbGRlcik7CisgICAgYnVpbGRlci5hcHBlbmQoaGV4KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSkpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiIC0gIik7CiAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobV9lbnRyaWVzLnNpemUoKSk7
CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50cmllcywgaGFzIGN1cnJlbnQgaW5kZXgg
Iik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQwMjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0wMS0wMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5k
YXJkaXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hleE51bWJlci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMjAtMDEtMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXBkYXRlIHRlc3QyNjIgdGVzdHMgdG8gY29tbWl0IDE1N2IxOGQKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjU0MDAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA
QCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0hhc2hNYXAuY3BwCiAgICAgVGVz
dHMvV1RGL0hhc2hTZXQuY3BwCiAgICAgVGVzdHMvV1RGL0hhc2hlci5jcHAKKyAgICBUZXN0cy9X
VEYvSGV4TnVtYmVyLmNwcAogICAgIFRlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmNwcAogICAgIFRlc3RzL1dURi9JdGVyYXRvclJhbmdlLmNwcAogICAgIFRlc3RzL1dURi9KU09O
VmFsdWUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU0MDAwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2OCw2ICs1NjgsNyBAQAogCQk3Qzg4MkUwOTFDODBD
NjMwMDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAv
KiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovOyB9OwogCQk3Qzg4MkUwQTFDODBDNzY0MDA2
QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyRTAzMUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVu
dFdvcmxkLm1tICovOyB9OwogCQk3Qzg5RDJBQzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29u
ZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAg
Ki87IH07CisJCTdDOEJGRjcxMjNDMDEwN0EwMEMwMDlCMyAvKiBIZXhOdW1iZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4QkZGNzAyM0MwMTA2
NzAwQzAwOUIzIC8qIEhleE51bWJlci5jcHAgKi87IH07CiAJCTdDOUVEOThCMTdBMTlGNEIwMEU0
REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUVEOThBMTdBMTlEMDYw
MEU0REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sICovOyB9OwogCQk3
Q0IxODRDNjFBQTNGMjEwMDA2NkVERkQgLyogQ29udGVudEV4dGVuc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTg0QzQxQUEzRjIxMDAw
NjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJN0NCRDVBMjMyMkRFNDJB
NjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JENUEyMjIyREU0MkE2MDA0QTlFMzIgLyogV1RG
U3RyaW5nVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAgLTIwODQsNiArMjA4NSw3IEBACiAJCTdDODgy
RTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4ODJFMDUxQzgwQzYyNDAwNkJGNzMx
IC8qIFVzZXJDb250ZW50V29ybGRQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29uZmlndXJh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOEJGRjcwMjNDMDEwNjcw
MEMwMDlCMyAvKiBIZXhOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGV4TnVtYmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RERBQTkxNzM1REUxRDAwRUE1QUMw
IC8qIENsb3NlVGhlblRlcm1pbmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9zZVRoZW5U
ZXJtaW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlFRDk4QTE3QTE5
RDA2MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IGF0dHJpYnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQjE4NEM0MUFBM0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5z
aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzQ3LDYgKzM3NDksNyBA
QAogCQkJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovLAogCQkJCTBC
Q0Q4MzM0MTQ4NTdDRTQwMEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAqLywKIAkJCQkyNkIyREZGODE1
QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNldC5jcHAgKi8sCisJCQkJN0M4QkZGNzAyM0MwMTA2NzAw
QzAwOUIzIC8qIEhleE51bWJlci5jcHAgKi8sCiAJCQkJMjY2RkFGRDIxNUU1Nzc1MjAwRjYxRDVC
IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovLAogCQkJCTdDRUI2MkE5MjIzNjA4
NkMwMDY5Q0JCMCAvKiBJdGVyYXRvclJhbmdlLmNwcCAqLywKIAkJCQk3QTA1MDk0MDFGQjlGMDQ0
MDBCMzNGQjggLyogSlNPTlZhbHVlLmNwcCAqLywKQEAgLTQ0NDAsNiArNDQ0Myw3IEBACiAJCQkJ
OTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVEMjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVENDFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaFNldC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QzhCRkY3MTIzQzAxMDdBMDBDMDA5QjMgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERUUwMUQwQTU5MEMwMEZFQkNGMyAvKiBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRkNERTZCMjI5RUZGQjkwMDU5OEVD
RiAvKiBJc29IZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUI2MkFCMjIzNjA5REUwMDY5
Q0JCMCAvKiBJdGVyYXRvclJhbmdlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGV4TnVtYmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IZXhOdW1iZXIuY3BwCShub25leGlzdGVudCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hleE51bWJlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gTm90IHVzaW5nIGJ1aWxkZXIudG9T
dHJpbmcoKSBvciBidWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpIGJlY2F1c2UgdGhl
eSBhbGwKKy8vIGNoYW5nZSBpbnRlcm5hbCBzdGF0ZSBvZiBidWlsZGVyLgorI2RlZmluZSBleHBl
Y3RCdWlsZGVyQ29udGVudChleHBlY3RlZCwgYnVpbGRlcikgXAorICAgIHsgXAorICAgICAgICBp
ZiAoYnVpbGRlci5pczhCaXQoKSkgXAorICAgICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhleHBl
Y3RlZCksIFN0cmluZyhidWlsZGVyLmNoYXJhY3RlcnM4KCksIGJ1aWxkZXIubGVuZ3RoKCkpKTsg
XAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZXhwZWN0ZWQp
LCBTdHJpbmcoYnVpbGRlci5jaGFyYWN0ZXJzMTYoKSwgYnVpbGRlci5sZW5ndGgoKSkpOyBcCisg
ICAgfSBcCisKK1RFU1QoV1RGLCBIZXhOdW1iZXIpCit7CisgICAgdWludDMyX3QgaW50ZWdlciA9
IDEwOworICAgIHVpbnQzMl90IGxhcmdlSW50ZWdlciA9IDY0MjA2OworICAgIHVuc2lnbmVkIGNo
YXIgYnl0ZSA9IDEyODsKKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoaW50ZWdlcikpOworICAgICAgICBleHBlY3RCdWls
ZGVyQ29udGVudCgiQSIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoaW50ZWdlciwgTG93
ZXJjYXNlKSk7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJhIiwgYnVpbGRlcik7Cisg
ICAgfQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGhleChpbnRlZ2VyLCAxLCBMb3dlcmNhc2UpKTsKKyAgICAgICAgZXhwZWN0
QnVpbGRlckNvbnRlbnQoImEiLCBidWlsZGVyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGludGVnZXIs
IDIsIExvd2VyY2FzZSkpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMGEiLCBidWls
ZGVyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGludGVnZXIsIDMsIExvd2VyY2FzZSkpOworICAgICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiMDBhIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgewor
ICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhl
eChpbnRlZ2VyLCA0LCBMb3dlcmNhc2UpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQo
IjAwMGEiLCBidWlsZGVyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGxhcmdlSW50ZWdlcikpOworICAg
ICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiRkFDRSIsIGJ1aWxkZXIpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVu
ZChoZXgobGFyZ2VJbnRlZ2VyLCAyKSk7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJG
QUNFIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChieXRlKSk7CisgICAgICAgIGV4cGVj
dEJ1aWxkZXJDb250ZW50KCI4MCIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oaW50ZWdlciksIDIpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRl
ckNvbnRlbnQoIjBBIiwgYnVpbGRlcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386768</attachid>
            <date>2020-01-04 14:52:30 -0800</date>
            <delta_ts>2020-01-04 14:58:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205759-20200104145229.patch</filename>
            <type>text/plain</type>
            <size>27068</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBG
dXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXgg
Zm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICBS
ZXBsYWNlIGFwcGVuZFVuc2lnbmVkQXNIZXgoKSB3aXRoIGFwcGVuZChoZXgoKSkuCisKIDIwMjAt
MDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBNYXJrZWRCbG9jazo6SGFuZGxlIGFuZCBCbG9ja0RpcmVjdG9yeSBzaG91bGQgYmUgc2hydW5r
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RC
dWlsZGVyLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw5ICs0NjQs
OSBAQCBTdHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvCiAgICAgICAgICAg
ICBqc29uLmFwcGVuZCgnLCcpOwogICAgICAgICAgICAganNvbi5hcHBlbmROdW1iZXIobGFiZWxJ
bmRleCk7CiAgICAgICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcIjB4Iik7Ci0gICAgICAg
ICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihub2Rl
LmNlbGwpLCBqc29uLCBMb3dlcmNhc2UpOworICAgICAgICAgICAganNvbi5hcHBlbmQoaGV4KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihub2RlLmNlbGwpLCBMb3dlcmNhc2UpKTsKICAgICAg
ICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCIsXCIweCIpOwotICAgICAgICAgICAgYXBwZW5k
VW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4od3JhcHBlZEFkZHJlc3Mp
LCBqc29uLCBMb3dlcmNhc2UpOworICAgICAgICAgICAganNvbi5hcHBlbmQoaGV4KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pih3cmFwcGVkQWRkcmVzcyksIExvd2VyY2FzZSkpOwogICAgICAg
ICAgICAganNvbi5hcHBlbmQoJyInKTsKICAgICAgICAgfQogICAgIH07CkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMjU0MDM2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0NSBAQAorMjAyMC0wMS0wMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJk
aXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyBhcHBlbmRCeXRl
QXNIZXgsIGFwcGVuZFVuc2lnbmVkQXNIZXggYW5kIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNp
emUgd2l0aCB0aGUKKyAgICAgICAgZm9sbG93aW5nIG1hcHBpbmdzOgorCisgICAgICAgICAgICBh
cHBlbmRCeXRlQXNIZXgodmFsdWUsIGJ1aWxkZXIsIGNhc2UpIAorICAgICAgICAgICAgICAtPiBi
dWlsZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odmFsdWUpLCAyLCBj
YXNlKSkKKyAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgodmFsdWUsIGJ1aWxkZXIsIGNh
c2UpIAorICAgICAgICAgICAgICAtPiBidWlsZGVyLmFwcGVuZChoZXgodmFsdWUsIGNhc2UpKQor
ICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSh2YWx1ZSwgYnVpbGRlciwg
c2l6ZSwgY2FzZSkKKyAgICAgICAgICAgICAgLT4gYnVpbGRlci5hcHBlbmQoaGV4KHZhbHVlLCBz
aXplLCBjYXNlKSkKKyAgICAgICAgCisgICAgICAgIEFkZHMgbmV3IEFQSSB0ZXN0IGZvciBIZXhO
dW1iZXIuY3BwCisKKyAgICAgICAgKiB3dGYvSGV4TnVtYmVyLmg6CisgICAgICAgIChXVEY6OmFw
cGVuZEJ5dGVBc0hleCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNI
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIG5vdyB1bnVzZWQgaGVscGVyIGZ1bmN0aW9ucy4K
KyAgICAgICAgCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpG
aWxlU3lzdGVtSW1wbDo6ZW5jb2RlRm9yRmlsZU5hbWUpOgorICAgICAgICBSZXBsYWNlIGFwcGVu
ZEJ5dGVBc0hleCB3aXRoIGRpcmVjdCB1c2Ugb2YgaGV4KHgsIDIpLiBUaGUgc3RhdGljX2Nhc3Qg
aXMgbmVlZGVkCisgICAgICAgIHNpbmNlIHRoZXJlIHdhcyBhbiBpbXBsaWNpdCBkb3duIGNhc3Qg
d2hlbiBhcHBlbmRCeXRlQXNIZXggd2FzIHVzZWQuCisgCisgICAgICAgICogd3RmL0xvZ2dlci5j
cHA6CisgICAgICAgIChXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKFdURjo6Pjo6dG9TdHJpbmcpOgorICAgICAgICAqIHd0Zi9VVUlELmNw
cDoKKyAgICAgICAgKFdURjo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZyk6CisgICAgICAgIFJl
cGxhY2UgYXBwZW5kVW5zaWduZWRBc0hleC9hcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplIHdp
dGggaGV4KCkuIFVzZSBtYWtlU3RyaW5nKCkgCisgICAgICAgIHJhdGhlciBTdHJpbmdCdWlsZGVy
IHRvIHNpbXBsaWZ5IHRoaW5ncyBmdXJ0aGVyLgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcDoKKyAgICAgICAgKGFzY2lpRGVidWcpOgorICAgICAgICBSZXBsYWNlIGFwcGVuZFVu
c2lnbmVkQXNIZXhGaXhlZFNpemUgd2l0aCBhcHBlbmQoaGV4KCkpLgorCiAyMDIwLTAxLTAzICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIEVuYWJsZSBB
TkdMRSBieSBkZWZhdWx0IGZvciBDb2NvYSBwbGF0Zm9ybXMgKGV4Y2VwdCBzaW11bGF0b3IpCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwxMSArMTI1LDExIEBAIFN0
cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25zdCBTdHJpbmcmIGkKICAgICAgICAgaWYgKHNob3Vs
ZEVzY2FwZVVDaGFyKGNoYXJhY3RlciwgcHJldmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIp
KSB7CiAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyIDw9IDI1NSkgewogICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyUnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hh
cmFjdGVyLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoYXJhY3RlciksIDIpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNoYXJhY3RlciA+PiA4LCByZXN1bHQpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChjaGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFj
dGVyID4+IDgpLCAyKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyKSwgMikpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0hleE51bWJlci5oCShyZXZpc2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IZXhOdW1i
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMzIgKzQ3LDYgQEAgaW5saW5lIHN0ZDo6cGFpcjxM
Q2hhciosIHVuc2lnbmVkPiBhcHBlbgogCiB9IC8vIG5hbWVzcGFjZSBJbnRlcm5hbAogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXBwZW5kQnl0ZUFzSGV4KHVuc2lnbmVkIGNo
YXIgYnl0ZSwgVCYgZGVzdGluYXRpb24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNh
c2UpCi17Ci0gICAgYXV0byogaGV4RGlnaXRzID0gSW50ZXJuYWw6OmhleERpZ2l0c0Zvck1vZGUo
bW9kZSk7Ci0gICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERpZ2l0c1tieXRlID4+IDRdKTsKLSAg
ICBkZXN0aW5hdGlvbi5hcHBlbmQoaGV4RGlnaXRzW2J5dGUgJiAweEZdKTsKLX0KLQotLy8gRklY
TUU6IENvbnNpZGVyIHJlbmFtaW5nIHRvIGFwcGVuZEhleC4KLXRlbXBsYXRlPHR5cGVuYW1lIE51
bWJlclR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZT4KLWlubGluZSB2b2lkIGFwcGVuZFVu
c2lnbmVkQXNIZXgoTnVtYmVyVHlwZSBudW1iZXIsIERlc3RpbmF0aW9uVHlwZSYgZGVzdGluYXRp
b24sIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBlcmNhc2UpCi17Ci0gICAgYXBwZW5kVW5z
aWduZWRBc0hleEZpeGVkU2l6ZShudW1iZXIsIGRlc3RpbmF0aW9uLCAwLCBtb2RlKTsKLX0KLQot
Ly8gRklYTUU6IENvbnNpZGVyIHJlbmFtaW5nIHRvIGFwcGVuZEhleC4KLS8vIFNhbWUgYXMgYXBw
ZW5kVW5zaWduZWRBc0hleCwgYnV0IHplcm8tcGFkZGluZyB0byBnZXQgYXQgbGVhc3QgdGhlIGRl
c2lyZWQgbnVtYmVyIG9mIGRpZ2l0cy4KLXRlbXBsYXRlPHR5cGVuYW1lIE51bWJlclR5cGU+Ci1p
bmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKE51bWJlclR5cGUgbnVtYmVy
LCBTdHJpbmdCdWlsZGVyJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgbWluaW11bURpZ2l0cywgSGV4
Q29udmVyc2lvbk1vZGUgbW9kZSA9IFVwcGVyY2FzZSkKLXsKLSAgICAvLyBFYWNoIGJ5dGUgY2Fu
IGdlbmVyYXRlIHVwIHRvIHR3byBkaWdpdHMuCi0gICAgc3RkOjphcnJheTxMQ2hhciwgc2l6ZW9m
KE51bWJlclR5cGUpICogMj4gYnVmZmVyOwotICAgIGF1dG8gcmVzdWx0ID0gSW50ZXJuYWw6OmFw
cGVuZEhleChidWZmZXIsIG51bWJlciwgbWluaW11bURpZ2l0cywgbW9kZSk7Ci0gICAgZGVzdGlu
YXRpb24uYXBwZW5kQ2hhcmFjdGVycyhyZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQpOwotfQot
CiBzdHJ1Y3QgSGV4TnVtYmVyQnVmZmVyIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAKQEAgLTExNCw4ICs4OCw1IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCi11c2luZyBXVEY6OmFwcGVuZEJ5dGVBc0hleDsKLXVzaW5nIFdURjo6YXBwZW5kVW5zaWdu
ZWRBc0hleDsKLXVzaW5nIFdURjo6YXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZTsKIHVzaW5n
IFdURjo6aGV4OwogdXNpbmcgV1RGOjpMb3dlcmNhc2U7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9M
b2dnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAJKHJldmlz
aW9uIDI1NDAzNikKKysrIFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDI5ICszMywxNCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nIExvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0KLSAgICBpZiAoY2xhc3NOYW1lKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGNs
YXNzTmFtZSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsKLSAgICB9Ci0g
ICAgYnVpbGRlci5hcHBlbmQobWV0aG9kTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJygnKTsK
LSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KG9iamVjdFB0ciwgYnVpbGRlcik7Ci0gICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpICIpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cisg
ICAgaWYgKGNsYXNzTmFtZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoY2xhc3NOYW1lLCAi
OjoiLCBtZXRob2ROYW1lLCAnKCcsIGhleChvYmplY3RQdHIpLCAiKSAiKTsKKyAgICByZXR1cm4g
bWFrZVN0cmluZyhtZXRob2ROYW1lLCAnKCcsIGhleChvYmplY3RQdHIpLCAiKSAiKTsKIH0KIAog
U3RyaW5nIExvZ0FyZ3VtZW50PGNvbnN0IHZvaWQqPjo6dG9TdHJpbmcoY29uc3Qgdm9pZCogYXJn
dW1lbnQpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5k
KCcoJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oYXJndW1lbnQpLCBidWlsZGVyKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJygnLCBoZXgo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGFyZ3VtZW50KSksICcpJyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OkxvZ2dlcjsKLXVzaW5nIFdURjo6SlNPTkxvZ1Zh
bHVlOwpJbmRleDogU291cmNlL1dURi93dGYvVVVJRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvVVVJRC5jcHAJKHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9XVEYvd3RmL1VV
SUQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyMCArNDgsMTkgQEAgU3RyaW5nIGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHJhbmRvbURhdGEpLCBzaXplb2YocmFuZG9t
RGF0YSkpOwogCiAgICAgLy8gRm9ybWF0IGFzIFZlcnNpb24gNCBVVUlELgotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSgzNik7Ci0gICAgYXBw
ZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzBdLCBidWlsZGVyLCA4LCBMb3dl
cmNhc2UpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hl
eEZpeGVkU2l6ZShyYW5kb21EYXRhWzFdID4+IDE2LCBidWlsZGVyLCA0LCBMb3dlcmNhc2UpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLTQiKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKHJhbmRvbURhdGFbMV0gJiAweDAwMDAwZmZmLCBidWlsZGVyLCAzLCBMb3dlcmNh
c2UpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZp
eGVkU2l6ZSgocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgsIGJ1aWxkZXIsIDEsIExvd2VyY2Fz
ZSk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSgocmFuZG9tRGF0YVsyXSA+PiAx
NikgJiAweDAwMDAwZmZmLCBidWlsZGVyLCAzLCBMb3dlcmNhc2UpOwotICAgIGJ1aWxkZXIuYXBw
ZW5kKCctJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZShyYW5kb21EYXRhWzJd
ICYgMHgwMDAwZmZmZiwgYnVpbGRlciwgNCwgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRVbnNpZ25l
ZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbM10sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7Ci0g
ICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAg
ICAgICAgaGV4KHJhbmRvbURhdGFbMF0sIDgsIExvd2VyY2FzZSksCisgICAgICAgICctJywKKyAg
ICAgICAgaGV4KHJhbmRvbURhdGFbMV0gPj4gMTYsIDQsIExvd2VyY2FzZSksCisgICAgICAgICIt
NCIsCisgICAgICAgIGhleChyYW5kb21EYXRhWzFdICYgMHgwMDAwMGZmZiwgMywgTG93ZXJjYXNl
KSwKKyAgICAgICAgJy0nLAorICAgICAgICBoZXgoKHJhbmRvbURhdGFbMl0gPj4gMzApIHwgMHg4
LCAxLCBMb3dlcmNhc2UpLAorICAgICAgICBoZXgoKHJhbmRvbURhdGFbMl0gPj4gMTYpICYgMHgw
MDAwMGZmZiwgMywgTG93ZXJjYXNlKSwKKyAgICAgICAgJy0nLAorICAgICAgICBoZXgocmFuZG9t
RGF0YVsyXSAmIDB4MDAwMGZmZmYsIDQsIExvd2VyY2FzZSksCisgICAgICAgIGhleChyYW5kb21E
YXRhWzNdLCA4LCBMb3dlcmNhc2UpCisgICAgKTsKIH0KIAogU3RyaW5nIGJvb3RTZXNzaW9uVVVJ
RFN0cmluZygpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCShyZXZpc2lvbiAyNTQw
MzYpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMjAsNyArMTEyMCw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0cmluZ0ltcGwq
IGltcGwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1xcJyk7
CiAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCd1Jyk7Ci0gICAgICAgICAgICBhcHBlbmRVbnNp
Z25lZEFzSGV4Rml4ZWRTaXplKGNoLCBidWZmZXIsIDQpOworICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChoZXgoY2gsIDQpKTsKICAgICAgICAgfQogICAgIH0KICAgICBDU3RyaW5nIG5hcnJvd1N0
cmluZyA9IGJ1ZmZlci50b1N0cmluZygpLmFzY2lpKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTQwMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAyMC0wMS0wMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5k
YXJkaXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVByb3RvY29sU3Ry
aW5nKToKKyAgICAgICAgKiBjc3MvQ1NTTWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNl
cmlhbGl6ZUNoYXJhY3RlckFzQ29kZVBvaW50KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclRva2VuOjpzZXJpYWxp
emUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSGFzaGVkTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVBbmRFc2NhcGVO
b25QcmludGFibGVzKToKKyAgICAgICAgUmVwbGFjZSBhcHBlbmRCeXRlQXNIZXgoKS9hcHBlbmRV
bnNpZ25lZEFzSGV4KCkvYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSgpIHdpdGggYXBwZW5k
KGhleCgpKS4KKwogMjAyMC0wMS0wNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaU9TIFNpbXVsYXRvciB0byBBTkdMRSBiYWNr
ZW5kIGZvciBXZWJHTApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyAr
MTAzLDcgQEAgc3RhdGljIFN0cmluZyBlbmNvZGVQcm90b2NvbFN0cmluZyhjb25zdAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgewogICAgICAgICBp
ZiAocHJvdG9jb2xbaV0gPCAweDIwIHx8IHByb3RvY29sW2ldID4gMHg3RSkgewogICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcXHUiKTsKLSAgICAgICAgICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXhGaXhlZFNpemUocHJvdG9jb2xbaV0sIGJ1aWxkZXIsIDQpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoaGV4KHByb3RvY29sW2ldLCA0KSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cHJvdG9jb2xbaV0gPT0gMHg1YykKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XFxcXCIpOwogICAgICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3Vw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmNwcAkocmV2
aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVy
KFVDaGFyMzIgYwogc3RhdGljIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNo
YXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKIHsKICAgICBhcHBlbmRUby5hcHBlbmQo
J1xcJyk7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChjLCBhcHBlbmRUbywgTG93ZXJjYXNlKTsK
KyAgICBhcHBlbmRUby5hcHBlbmQoaGV4KGMsIExvd2VyY2FzZSkpOwogICAgIGFwcGVuZFRvLmFw
cGVuZCgnICcpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
clRva2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJUb2tlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw5ICs0MzQsOSBA
QCB2b2lkIENTU1BhcnNlclRva2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiVSsiKTsKLSAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCh1bmljb2RlUmFuZ2VTdGFy
dCgpLCBidWlsZGVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHVuaWNvZGVSYW5nZVN0
YXJ0KCkpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKLSAgICAgICAgYXBwZW5kVW5z
aWduZWRBc0hleCh1bmljb2RlUmFuZ2VFbmQoKSwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGhleCh1bmljb2RlUmFuZ2VFbmQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN0cmluZ1Rva2VuOgogICAgICAgICBzZXJpYWxpemVTdHJpbmcodmFsdWUoKS50b1N0cmluZygp
LCBidWlsZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM0OSwxNCArMjM0OSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cHJvY2VzCiAgICAgICAgICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSAiRVNf
aW5mb19sZW5ndGgiIGZpZWxkLiBUaGUgdGV4dCB0cmFjayBpbi1iYW5kIG1ldGFkYXRhIHRyYWNr
IGRpc3BhdGNoIHR5cGUgbXVzdCBiZQogICAgICAgICAgICAgICAgIC8vIHNldCB0byB0aGUgY29u
Y2F0ZW5hdGlvbiBvZiB0aGUgc3RyZWFtIHR5cGUgYnl0ZSBhbmQgdGhlIHplcm8gb3IgbW9yZSBk
ZXNjcmlwdG9yIGJ5dGVzIGJ5dGVzLAogICAgICAgICAgICAgICAgIC8vIGV4cHJlc3NlZCBpbiBo
ZXhhZGVjaW1hbCB1c2luZyB1cHBlcmNhc2UgQVNDSUkgaGV4IGRpZ2l0cy4KLSAgICAgICAgICAg
ICAgICBTdHJpbmcgaW5iYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKLSAgICAgICAgICAg
ICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHN0cmVhbS0+c3RyZWFtX3R5cGUsIGlu
YmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUsIDIpOworICAgICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgaW5iYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKKyAgICAgICAgICAgICAg
ICBpbmJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlLmFwcGVuZChoZXgoc3RyZWFtLT5zdHJl
YW1fdHlwZSwgMikpOwogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBz
dHJlYW0tPmRlc2NyaXB0b3JzLT5sZW47ICsraikgewogICAgICAgICAgICAgICAgICAgICBjb25z
dCBHc3RNcGVndHNEZXNjcmlwdG9yKiBkZXNjcmlwdG9yID0gc3RhdGljX2Nhc3Q8Y29uc3QgR3N0
TXBlZ3RzRGVzY3JpcHRvcio+KGdfcHRyX2FycmF5X2luZGV4KHN0cmVhbS0+ZGVzY3JpcHRvcnMs
IGopKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGRlc2Ny
aXB0b3ItPmxlbmd0aDsgKytrKQotICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFz
SGV4KGRlc2NyaXB0b3ItPmRhdGFba10sIGluYmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5iYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlw
ZS5hcHBlbmQoaGV4KGRlc2NyaXB0b3ItPmRhdGFba10sIDIpKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgdHJhY2stPnNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUoaW5iYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSk7CisgICAgICAgICAgICAgICAgdHJh
Y2stPnNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoaW5iYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZS50b1N0cmluZygpKTsKIAogICAgICAgICAgICAgICAgIG1fbWV0YWRhdGFU
cmFja3MuYWRkKHBpZCwgdHJhY2spOwogICAgICAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0
VHJhY2soKnRyYWNrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTg1LDEwICs5ODUsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlSGFz
aGVkTmFtZShjb25zdCBTCiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bmFtZTsKICAgICB1aW50NjRfdCBudW1iZXIgPSBuYW1lSGFzaEZvclNoYWRlcihuYW1lLnV0Zjgo
KS5kYXRhKCksIG5hbWUubGVuZ3RoKCkpOwotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIndlYmdsXyIpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNI
ZXgobnVtYmVyLCBidWlsZGVyLCBMb3dlcmNhc2UpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIndlYmdsXyIsIGhleChudW1iZXIsIExvd2Vy
Y2FzZSkpOwogfQogCiBPcHRpb25hbDxTdHJpbmc+IEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRT
eW1ib2xJblNoYWRlclNvdXJjZU1hcChQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgQU5HTEVTaGFk
ZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDI1
NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBxdW90ZUFuZEVzY2FwZU5v
blByaW50YWJsZXMoU3RyaW4KICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIlxc
eHsiKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KGMsIHJlc3VsdCk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoYykpOwogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ30nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDEtMDMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIEZ1cnRoZXIgc2ltcGxpZnkgU3RyaW5nQnVpbGRlciB1c2FnZSBi
eSBzdGFuZGFyZGl6aW5nIGhleCBmb3JtYXRpbmcgdG8gYSBzaW5nbGUgaGV4KCkgZnVuY3Rpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICBSZXBs
YWNlIGFwcGVuZFVuc2lnbmVkQXNIZXgoKSB3aXRoIGFwcGVuZChoZXgoKSkuCisKIDIwMjAtMDEt
MDQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZm9ybWF0
IFdlYlBhZ2UgbG9nZ2luZwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29t
cGxldGVEZQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIu
cmVzZXJ2ZUNhcGFjaXR5KGhhc2hTYWx0U2l6ZSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByYW5kb21EYXRhU2l6ZTsgaSsrKQotICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRB
c0hleChyYW5kb21EYXRhW2ldLCBidWlsZGVyKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGhleChyYW5kb21EYXRhW2ldKSk7CiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQg
PSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDg0LDcgKzQ4NCw3IEBAIGNvbnN0IGNoYXIqIFdlYkJhY2tGb3J3YXJkTGlzdDo6bG9nZ2luZ1MK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IldlYkJhY2tGb3J3YXJkTGlzdCAweCIpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBidWlsZGVyKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSk7CiAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgLSAiKTsKICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX2VudHJpZXMu
c2l6ZSgpKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBlbnRyaWVzLCBoYXMgY3VycmVu
dCBpbmRleCAiKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1NDAzNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2Ug
Ynkgc3RhbmRhcmRpemluZyBoZXggZm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGV4TnVtYmVyLmNwcDogQWRkZWQuCisgICAgICAgIEFkZCB0ZXN0aW5nIGZv
ciBoZXggZm9ybWF0dGluZyBvZiBpbnRlZ2Vycy4KKwogMjAyMC0wMS0wMyAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiAxNTArIGZs
YWt5IGZhaWx1cmVzIG9uIHNvbWUgYm90cyAoY29sb3IgbWlzbWF0Y2hlcykKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjU0MDM2KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBz
ZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0hhc2hNYXAuY3BwCiAgICAgVGVzdHMv
V1RGL0hhc2hTZXQuY3BwCiAgICAgVGVzdHMvV1RGL0hhc2hlci5jcHAKKyAgICBUZXN0cy9XVEYv
SGV4TnVtYmVyLmNwcAogICAgIFRlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNw
cAogICAgIFRlc3RzL1dURi9JdGVyYXRvclJhbmdlLmNwcAogICAgIFRlc3RzL1dURi9KU09OVmFs
dWUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU0MDM2KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTU2OCw2ICs1NjgsNyBAQAogCQk3Qzg4MkUwOTFDODBDNjMw
MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBV
c2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovOyB9OwogCQk3Qzg4MkUwQTFDODBDNzY0MDA2QkY3
MzEgLyogVXNlckNvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDODgyRTAzMUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdv
cmxkLm1tICovOyB9OwogCQk3Qzg5RDJBQzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmln
dXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi87
IH07CisJCTdDOEJGRjcxMjNDMDEwN0EwMEMwMDlCMyAvKiBIZXhOdW1iZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4QkZGNzAyM0MwMTA2NzAw
QzAwOUIzIC8qIEhleE51bWJlci5jcHAgKi87IH07CiAJCTdDOUVEOThCMTdBMTlGNEIwMEU0REMz
MyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUVEOThBMTdBMTlEMDYwMEU0
REMzMyAvKiBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sICovOyB9OwogCQk3Q0Ix
ODRDNjFBQTNGMjEwMDA2NkVERkQgLyogQ29udGVudEV4dGVuc2lvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCMTg0QzQxQUEzRjIxMDAwNjZF
REZEIC8qIENvbnRlbnRFeHRlbnNpb25zLmNwcCAqLzsgfTsKIAkJN0NCRDVBMjMyMkRFNDJBNjAw
NEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0JENUEyMjIyREU0MkE2MDA0QTlFMzIgLyogV1RGU3Ry
aW5nVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAgLTIwODQsNiArMjA4NSw3IEBACiAJCTdDODgyRTA0
MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4ODJFMDUxQzgwQzYyNDAwNkJGNzMxIC8q
IFVzZXJDb250ZW50V29ybGRQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M4OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQYWdlQ29uZmlndXJhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOEJGRjcwMjNDMDEwNjcwMEMw
MDlCMyAvKiBIZXhOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGV4TnVtYmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RERBQTkxNzM1REUxRDAwRUE1QUMwIC8q
IENsb3NlVGhlblRlcm1pbmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbG9zZVRoZW5UZXJt
aW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlFRDk4QTE3QTE5RDA2
MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IGF0dHJpYnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdoLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDQjE4NEM0MUFBM0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzQ3LDYgKzM3NDksNyBAQAog
CQkJCTkzM0Q2MzFCMUZDQjc2MTgwMDMyRUNENiAvKiBIYXNoZXIuY3BwICovLAogCQkJCTBCQ0Q4
MzM0MTQ4NTdDRTQwMEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAqLywKIAkJCQkyNkIyREZGODE1QkRF
NTk5MDA0RjY5MUQgLyogSGFzaFNldC5jcHAgKi8sCisJCQkJN0M4QkZGNzAyM0MwMTA2NzAwQzAw
OUIzIC8qIEhleE51bWJlci5jcHAgKi8sCiAJCQkJMjY2RkFGRDIxNUU1Nzc1MjAwRjYxRDVCIC8q
IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovLAogCQkJCTdDRUI2MkE5MjIzNjA4NkMw
MDY5Q0JCMCAvKiBJdGVyYXRvclJhbmdlLmNwcCAqLywKIAkJCQk3QTA1MDk0MDFGQjlGMDQ0MDBC
MzNGQjggLyogSlNPTlZhbHVlLmNwcCAqLywKQEAgLTQ0NDAsNiArNDQ0Myw3IEBACiAJCQkJOTMz
RDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVEMjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVENDFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QzhCRkY3MTIzQzAxMDdBMDBDMDA5QjMgLyogSGV4TnVtYmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUUwMUQwQTU5MEMwMEZFQkNGMyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzRkNERTZCMjI5RUZGQjkwMDU5OEVDRiAv
KiBJc29IZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUI2MkFCMjIzNjA5REUwMDY5Q0JC
MCAvKiBJdGVyYXRvclJhbmdlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGV4TnVtYmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IZXhOdW1iZXIuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hleE51bWJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gTm90IHVzaW5nIGJ1aWxkZXIudG9TdHJp
bmcoKSBvciBidWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpIGJlY2F1c2UgdGhleSBh
bGwKKy8vIGNoYW5nZSBpbnRlcm5hbCBzdGF0ZSBvZiBidWlsZGVyLgorI2RlZmluZSBleHBlY3RC
dWlsZGVyQ29udGVudChleHBlY3RlZCwgYnVpbGRlcikgXAorICAgIHsgXAorICAgICAgICBpZiAo
YnVpbGRlci5pczhCaXQoKSkgXAorICAgICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhleHBlY3Rl
ZCksIFN0cmluZyhidWlsZGVyLmNoYXJhY3RlcnM4KCksIGJ1aWxkZXIubGVuZ3RoKCkpKTsgXAor
ICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZXhwZWN0ZWQpLCBT
dHJpbmcoYnVpbGRlci5jaGFyYWN0ZXJzMTYoKSwgYnVpbGRlci5sZW5ndGgoKSkpOyBcCisgICAg
fSBcCisKK1RFU1QoV1RGLCBIZXhOdW1iZXIpCit7CisgICAgdWludDMyX3QgaW50ZWdlciA9IDEw
OworICAgIHVpbnQzMl90IGxhcmdlSW50ZWdlciA9IDY0MjA2OworICAgIHVuc2lnbmVkIGNoYXIg
Ynl0ZSA9IDEyODsKKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChoZXgoaW50ZWdlcikpOworICAgICAgICBleHBlY3RCdWlsZGVy
Q29udGVudCgiQSIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoaW50ZWdlciwgTG93ZXJj
YXNlKSk7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJhIiwgYnVpbGRlcik7CisgICAg
fQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGhleChpbnRlZ2VyLCAxLCBMb3dlcmNhc2UpKTsKKyAgICAgICAgZXhwZWN0QnVp
bGRlckNvbnRlbnQoImEiLCBidWlsZGVyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGludGVnZXIsIDIs
IExvd2VyY2FzZSkpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiMGEiLCBidWlsZGVy
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoaGV4KGludGVnZXIsIDMsIExvd2VyY2FzZSkpOworICAgICAgICBl
eHBlY3RCdWlsZGVyQ29udGVudCgiMDBhIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAg
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChp
bnRlZ2VyLCA0LCBMb3dlcmNhc2UpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAw
MGEiLCBidWlsZGVyKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGxhcmdlSW50ZWdlcikpOworICAgICAg
ICBleHBlY3RCdWlsZGVyQ29udGVudCgiRkFDRSIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZCho
ZXgobGFyZ2VJbnRlZ2VyLCAyKSk7CisgICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJGQUNF
IiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChieXRlKSk7CisgICAgICAgIGV4cGVjdEJ1
aWxkZXJDb250ZW50KCI4MCIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oaW50ZWdlciksIDIpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNv
bnRlbnQoIjBBIiwgYnVpbGRlcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386771</attachid>
            <date>2020-01-04 15:38:24 -0800</date>
            <delta_ts>2020-01-05 16:21:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205759-20200104153823.patch</filename>
            <type>text/plain</type>
            <size>33183</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBG
dXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXgg
Zm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5j
cHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNv
ZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXNjYXBlKToKKyAgICAgICAgUmVwbGFjZSBh
cHBlbmRVbnNpZ25lZEFzSGV4KCkgYW5kIGFwcGVuZEJ5dGVBc0hleCgpIHdpdGggYXBwZW5kKGhl
eCgpKS4KKwogMjAyMC0wMS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIE1hcmtlZEJsb2NrOjpIYW5kbGUgYW5kIEJsb2NrRGlyZWN0b3J5IHNo
b3VsZCBiZSBzaHJ1bmsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdEJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDY0LDkgKzQ2NCw5IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29uKEZ1bmN0
aW8KICAgICAgICAgICAgIGpzb24uYXBwZW5kKCcsJyk7CiAgICAgICAgICAgICBqc29uLmFwcGVu
ZE51bWJlcihsYWJlbEluZGV4KTsKICAgICAgICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFwi
MHgiKTsKLSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXgocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KG5vZGUuY2VsbCksIGpzb24sIExvd2VyY2FzZSk7CisgICAgICAgICAgICBqc29u
LmFwcGVuZChoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG5vZGUuY2VsbCksIExvd2Vy
Y2FzZSkpOwogICAgICAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIixcIjB4Iik7Ci0gICAg
ICAgICAgICBhcHBlbmRVbnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih3
cmFwcGVkQWRkcmVzcyksIGpzb24sIExvd2VyY2FzZSk7CisgICAgICAgICAgICBqc29uLmFwcGVu
ZChoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHdyYXBwZWRBZGRyZXNzKSwgTG93ZXJj
YXNlKSk7CiAgICAgICAgICAgICBqc29uLmFwcGVuZCgnIicpOwogICAgICAgICB9CiAgICAgfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShKU0dsb2JhbE9i
amVjdCogZ2wKICAgICAgICAgICAgIC8vIDQtZC12aS0yLiBMZXQgUyBiZSBhIFN0cmluZyBjb250
YWluaW5nIHRocmVlIGNvZGUgdW5pdHMgIiVYWSIgd2hlcmUgWFkgYXJlIHR3byB1cHBlcmNhc2Ug
aGV4YWRlY2ltYWwgZGlnaXRzIGVuY29kaW5nIHRoZSB2YWx1ZSBvZiBqT2N0ZXQuCiAgICAgICAg
ICAgICAvLyA0LWQtdmktMy4gTGV0IFIgYmUgYSBuZXcgU3RyaW5nIHZhbHVlIGNvbXB1dGVkIGJ5
IGNvbmNhdGVuYXRpbmcgdGhlIHByZXZpb3VzIHZhbHVlIG9mIFIgYW5kIFMuCiAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KHV0ZjhP
Y3RldHNCdWZmZXJbaW5kZXhdLCBidWlsZGVyKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGhleCh1dGY4T2N0ZXRzQnVmZmVyW2luZGV4XSwgMikpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC02MDgsNyArNjA4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RQogICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCclJyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleCh1LCBidWlsZGVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHUsIDIpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcodm0sIGJ1aWxkZXIudG9T
dHJpbmcoKSk7CkBAIC02MTksMTMgKzYxOSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNFCiAgICAgICAgICAgICBVQ2hhciB1ID0gY1swXTsKICAgICAgICAgICAg
IGlmICh1ID49IGRvTm90RXNjYXBlLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiJXUiKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSA+
PiA4LCBidWlsZGVyKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgodSAmIDB4RkYs
IGJ1aWxkZXIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPih1ID4+IDgpLCAyKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHUgJiAweEZGKSwgMikpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChkb05vdEVzY2FwZS5nZXQoc3RhdGljX2Nhc3Q8TENoYXI+KHUp
KSkKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgqYyk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnJScpOwotICAgICAgICAgICAgICAg
IGFwcGVuZEJ5dGVBc0hleCh1LCBidWlsZGVyKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odSksIDIpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wMS0wMyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBzaW1wbGlmeSBT
dHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJkaXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNp
bmdsZSBoZXgoKSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlcyBhcHBlbmRCeXRlQXNIZXgsIGFwcGVuZFVuc2lnbmVkQXNIZXgg
YW5kIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUgd2l0aCB0aGUKKyAgICAgICAgZm9sbG93
aW5nIG1hcHBpbmdzOgorCisgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgodmFsdWUsIGJ1aWxk
ZXIsIGNhc2UpIAorICAgICAgICAgICAgICAtPiBidWlsZGVyLmFwcGVuZChoZXgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4odmFsdWUpLCAyLCBjYXNlKSkKKyAgICAgICAgICAgIGFwcGVuZFVu
c2lnbmVkQXNIZXgodmFsdWUsIGJ1aWxkZXIsIGNhc2UpIAorICAgICAgICAgICAgICAtPiBidWls
ZGVyLmFwcGVuZChoZXgodmFsdWUsIGNhc2UpKQorICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRB
c0hleEZpeGVkU2l6ZSh2YWx1ZSwgYnVpbGRlciwgc2l6ZSwgY2FzZSkKKyAgICAgICAgICAgICAg
LT4gYnVpbGRlci5hcHBlbmQoaGV4KHZhbHVlLCBzaXplLCBjYXNlKSkKKyAgICAgICAgCisgICAg
ICAgIEFkZHMgbmV3IEFQSSB0ZXN0IGZvciBIZXhOdW1iZXIuY3BwCisKKyAgICAgICAgKiB3dGYv
SGV4TnVtYmVyLmg6CisgICAgICAgIChXVEY6OmFwcGVuZEJ5dGVBc0hleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6OmFwcGVuZFVuc2lnbmVkQXNIZXgpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3Zl
IG5vdyB1bnVzZWQgaGVscGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogd3RmL0Zp
bGVTeXN0ZW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZW5jb2RlRm9yRmls
ZU5hbWUpOgorICAgICAgICBSZXBsYWNlIGFwcGVuZEJ5dGVBc0hleCB3aXRoIGRpcmVjdCB1c2Ug
b2YgaGV4KHgsIDIpLiBUaGUgc3RhdGljX2Nhc3QgaXMgbmVlZGVkCisgICAgICAgIHNpbmNlIHRo
ZXJlIHdhcyBhbiBpbXBsaWNpdCBkb3duIGNhc3Qgd2hlbiBhcHBlbmRCeXRlQXNIZXggd2FzIHVz
ZWQuCisgCisgICAgICAgICogd3RmL0xvZ2dlci5jcHA6CisgICAgICAgIChXVEY6OkxvZ2dlcjo6
TG9nU2l0ZUlkZW50aWZpZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdURjo6Pjo6dG9T
dHJpbmcpOgorICAgICAgICAqIHd0Zi9VVUlELmNwcDoKKyAgICAgICAgKFdURjo6Y3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZyk6CisgICAgICAgIFJlcGxhY2UgYXBwZW5kVW5zaWduZWRBc0hleC9h
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplIHdpdGggaGV4KCkuIFVzZSBtYWtlU3RyaW5nKCkg
CisgICAgICAgIHJhdGhlciBTdHJpbmdCdWlsZGVyIHRvIHNpbXBsaWZ5IHRoaW5ncyBmdXJ0aGVy
LgorCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKGFzY2lpRGVi
dWcpOgorICAgICAgICBSZXBsYWNlIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUgd2l0aCBh
cHBlbmQoaGV4KCkpLgorCiAyMDIwLTAxLTAzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2ViR0xdIEVuYWJsZSBBTkdMRSBieSBkZWZhdWx0IGZvciBDb2NvYSBw
bGF0Zm9ybXMgKGV4Y2VwdCBzaW11bGF0b3IpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lz
dGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2
aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSwxMSArMTI1LDExIEBAIFN0cmluZyBlbmNvZGVGb3JGaWxlTmFtZShjb25z
dCBTdHJpbmcmIGkKICAgICAgICAgaWYgKHNob3VsZEVzY2FwZVVDaGFyKGNoYXJhY3RlciwgcHJl
dmlvdXNDaGFyYWN0ZXIsIG5leHRDaGFyYWN0ZXIpKSB7CiAgICAgICAgICAgICBpZiAoY2hhcmFj
dGVyIDw9IDI1NSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyUnKTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCByZXN1bHQpOworICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNoYXJh
Y3RlciksIDIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIiUrIik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGNo
YXJhY3RlciA+PiA4LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGFwcGVuZEJ5dGVBc0hleChj
aGFyYWN0ZXIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFjdGVyID4+IDgpLCAyKSk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChoZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY2hhcmFj
dGVyKSwgMikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoY2hhcmFjdGVyKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0hleE51bWJlci5oCShyZXZpc2lvbiAyNTQw
MzYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IZXhOdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NDUgKzQ3LDIxIEBAIGlubGluZSBzdGQ6OnBhaXI8TENoYXIqLCB1bnNpZ25lZD4gYXBwZW4KIAog
fSAvLyBuYW1lc3BhY2UgSW50ZXJuYWwKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2
b2lkIGFwcGVuZEJ5dGVBc0hleCh1bnNpZ25lZCBjaGFyIGJ5dGUsIFQmIGRlc3RpbmF0aW9uLCBI
ZXhDb252ZXJzaW9uTW9kZSBtb2RlID0gVXBwZXJjYXNlKQotewotICAgIGF1dG8qIGhleERpZ2l0
cyA9IEludGVybmFsOjpoZXhEaWdpdHNGb3JNb2RlKG1vZGUpOwotICAgIGRlc3RpbmF0aW9uLmFw
cGVuZChoZXhEaWdpdHNbYnl0ZSA+PiA0XSk7Ci0gICAgZGVzdGluYXRpb24uYXBwZW5kKGhleERp
Z2l0c1tieXRlICYgMHhGXSk7Ci19Ci0KLS8vIEZJWE1FOiBDb25zaWRlciByZW5hbWluZyB0byBh
cHBlbmRIZXguCi10ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlLCB0eXBlbmFtZSBEZXN0aW5h
dGlvblR5cGU+Ci1pbmxpbmUgdm9pZCBhcHBlbmRVbnNpZ25lZEFzSGV4KE51bWJlclR5cGUgbnVt
YmVyLCBEZXN0aW5hdGlvblR5cGUmIGRlc3RpbmF0aW9uLCBIZXhDb252ZXJzaW9uTW9kZSBtb2Rl
ID0gVXBwZXJjYXNlKQotewotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUobnVtYmVy
LCBkZXN0aW5hdGlvbiwgMCwgbW9kZSk7Ci19Ci0KLS8vIEZJWE1FOiBDb25zaWRlciByZW5hbWlu
ZyB0byBhcHBlbmRIZXguCi0vLyBTYW1lIGFzIGFwcGVuZFVuc2lnbmVkQXNIZXgsIGJ1dCB6ZXJv
LXBhZGRpbmcgdG8gZ2V0IGF0IGxlYXN0IHRoZSBkZXNpcmVkIG51bWJlciBvZiBkaWdpdHMuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBOdW1iZXJUeXBlPgotaW5saW5lIHZvaWQgYXBwZW5kVW5zaWduZWRB
c0hleEZpeGVkU2l6ZShOdW1iZXJUeXBlIG51bWJlciwgU3RyaW5nQnVpbGRlciYgZGVzdGluYXRp
b24sIHVuc2lnbmVkIG1pbmltdW1EaWdpdHMsIEhleENvbnZlcnNpb25Nb2RlIG1vZGUgPSBVcHBl
cmNhc2UpCi17Ci0gICAgLy8gRWFjaCBieXRlIGNhbiBnZW5lcmF0ZSB1cCB0byB0d28gZGlnaXRz
LgotICAgIHN0ZDo6YXJyYXk8TENoYXIsIHNpemVvZihOdW1iZXJUeXBlKSAqIDI+IGJ1ZmZlcjsK
LSAgICBhdXRvIHJlc3VsdCA9IEludGVybmFsOjphcHBlbmRIZXgoYnVmZmVyLCBudW1iZXIsIG1p
bmltdW1EaWdpdHMsIG1vZGUpOwotICAgIGRlc3RpbmF0aW9uLmFwcGVuZENoYXJhY3RlcnMocmVz
dWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kKTsKLX0KLQogc3RydWN0IEhleE51bWJlckJ1ZmZlciB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgc3RkOjphcnJheTxM
Q2hhciwgMTY+IGNoYXJhY3RlcnM7CisgICAgc3RkOjphcnJheTxMQ2hhciwgMTY+IGJ1ZmZlcjsK
ICAgICB1bnNpZ25lZCBsZW5ndGg7CisKKyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycygpIGNv
bnN0IHsgcmV0dXJuICYqKGJ1ZmZlci5lbmQoKSAtIGxlbmd0aCk7IH0KIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE51bWJlclR5cGU+IEhleE51bWJlckJ1ZmZlciBoZXgoTnVtYmVyVHlwZSBudW1i
ZXIsIHVuc2lnbmVkIG1pbmltdW1EaWdpdHMgPSAwLCBIZXhDb252ZXJzaW9uTW9kZSBtb2RlID0g
VXBwZXJjYXNlKQogewogICAgIC8vIEVhY2ggYnl0ZSBjYW4gZ2VuZXJhdGUgdXAgdG8gdHdvIGRp
Z2l0cy4KICAgICBIZXhOdW1iZXJCdWZmZXIgYnVmZmVyOwotICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGJ1ZmZlci5jaGFyYWN0ZXJzKSA+PSBzaXplb2YoTnVtYmVyVHlwZSkgKiAyLCAibnVtYmVy
IHRvbyBsYXJnZSBmb3IgaGV4TnVtYmVyIik7Ci0gICAgYXV0byByZXN1bHQgPSBJbnRlcm5hbDo6
YXBwZW5kSGV4KGJ1ZmZlci5jaGFyYWN0ZXJzLCBudW1iZXIsIG1pbmltdW1EaWdpdHMsIG1vZGUp
OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGJ1ZmZlci5idWZmZXIpID49IHNpemVvZihOdW1i
ZXJUeXBlKSAqIDIsICJudW1iZXIgdG9vIGxhcmdlIGZvciBoZXhOdW1iZXIiKTsKKyAgICBhdXRv
IHJlc3VsdCA9IEludGVybmFsOjphcHBlbmRIZXgoYnVmZmVyLmJ1ZmZlciwgbnVtYmVyLCBtaW5p
bXVtRGlnaXRzLCBtb2RlKTsKICAgICBidWZmZXIubGVuZ3RoID0gcmVzdWx0LnNlY29uZDsKICAg
ICByZXR1cm4gYnVmZmVyOwogfQpAQCAtMTA3LDE1ICs4MywxMiBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUq
IGRlc3RpbmF0aW9uKSBjb25zdCB7IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0
aW9uLCBjaGFyYWN0ZXJzKCksIGxlbmd0aCgpKTsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gJioobV9idWZmZXIuY2hhcmFjdGVycy5l
bmQoKSAtIGxlbmd0aCgpKTsgfQorICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuY2hhcmFjdGVycygpOyB9CiAKICAgICBjb25zdCBIZXhOdW1iZXJC
dWZmZXImIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6
YXBwZW5kQnl0ZUFzSGV4OwotdXNpbmcgV1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4OwotdXNpbmcg
V1RGOjphcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplOwogdXNpbmcgV1RGOjpoZXg7CiB1c2lu
ZyBXVEY6Okxvd2VyY2FzZTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvZ2dlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvTG9nZ2VyLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysg
U291cmNlL1dURi93dGYvTG9nZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjkgKzMzLDE0
IEBAIG5hbWVzcGFjZSBXVEYgewogCiBTdHJpbmcgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcjo6
dG9TdHJpbmcoKSBjb25zdAogewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIGlm
IChjbGFzc05hbWUpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoY2xhc3NOYW1lKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6OiIpOwotICAgIH0KLSAgICBidWlsZGVyLmFwcGVu
ZChtZXRob2ROYW1lKTsKLSAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwotICAgIGFwcGVuZFVuc2ln
bmVkQXNIZXgob2JqZWN0UHRyLCBidWlsZGVyKTsKLSAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwo
IikgIik7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICBpZiAoY2xhc3NOYW1l
KQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhjbGFzc05hbWUsICI6OiIsIG1ldGhvZE5hbWUs
ICcoJywgaGV4KG9iamVjdFB0ciksICIpICIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG1ldGhv
ZE5hbWUsICcoJywgaGV4KG9iamVjdFB0ciksICIpICIpOwogfQogCiBTdHJpbmcgTG9nQXJndW1l
bnQ8Y29uc3Qgdm9pZCo+Ojp0b1N0cmluZyhjb25zdCB2b2lkKiBhcmd1bWVudCkKIHsKLSAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQoJygnKTsKLSAgICBhcHBl
bmRVbnNpZ25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihhcmd1bWVudCksIGJ1
aWxkZXIpOwotICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygnKCcsIGhleChyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oYXJndW1lbnQpKSwgJyknKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0K
LXVzaW5nIFdURjo6TG9nZ2VyOwotdXNpbmcgV1RGOjpKU09OTG9nVmFsdWU7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9VVUlELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VVUlELmNw
cAkocmV2aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dURi93dGYvVVVJRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDIwICs0OCwxOSBAQCBTdHJpbmcgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpCiAgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMocmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCBjaGFyKj4ocmFuZG9tRGF0YSksIHNpemVvZihyYW5kb21EYXRhKSk7CiAKICAgICAv
LyBGb3JtYXQgYXMgVmVyc2lvbiA0IFVVSUQuCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwot
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KDM2KTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4
Rml4ZWRTaXplKHJhbmRvbURhdGFbMF0sIGJ1aWxkZXIsIDgsIExvd2VyY2FzZSk7Ci0gICAgYnVp
bGRlci5hcHBlbmQoJy0nKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHJhbmRv
bURhdGFbMV0gPj4gMTYsIGJ1aWxkZXIsIDQsIExvd2VyY2FzZSk7Ci0gICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCItNCIpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUocmFuZG9t
RGF0YVsxXSAmIDB4MDAwMDBmZmYsIGJ1aWxkZXIsIDMsIExvd2VyY2FzZSk7Ci0gICAgYnVpbGRl
ci5hcHBlbmQoJy0nKTsKLSAgICBhcHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKChyYW5kb21E
YXRhWzJdID4+IDMwKSB8IDB4OCwgYnVpbGRlciwgMSwgTG93ZXJjYXNlKTsKLSAgICBhcHBlbmRV
bnNpZ25lZEFzSGV4Rml4ZWRTaXplKChyYW5kb21EYXRhWzJdID4+IDE2KSAmIDB4MDAwMDBmZmYs
IGJ1aWxkZXIsIDMsIExvd2VyY2FzZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKLSAgICBh
cHBlbmRVbnNpZ25lZEFzSGV4Rml4ZWRTaXplKHJhbmRvbURhdGFbMl0gJiAweDAwMDBmZmZmLCBi
dWlsZGVyLCA0LCBMb3dlcmNhc2UpOwotICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUo
cmFuZG9tRGF0YVszXSwgYnVpbGRlciwgOCwgTG93ZXJjYXNlKTsKLSAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICBoZXgocmFuZG9t
RGF0YVswXSwgOCwgTG93ZXJjYXNlKSwKKyAgICAgICAgJy0nLAorICAgICAgICBoZXgocmFuZG9t
RGF0YVsxXSA+PiAxNiwgNCwgTG93ZXJjYXNlKSwKKyAgICAgICAgIi00IiwKKyAgICAgICAgaGV4
KHJhbmRvbURhdGFbMV0gJiAweDAwMDAwZmZmLCAzLCBMb3dlcmNhc2UpLAorICAgICAgICAnLScs
CisgICAgICAgIGhleCgocmFuZG9tRGF0YVsyXSA+PiAzMCkgfCAweDgsIDEsIExvd2VyY2FzZSks
CisgICAgICAgIGhleCgocmFuZG9tRGF0YVsyXSA+PiAxNikgJiAweDAwMDAwZmZmLCAzLCBMb3dl
cmNhc2UpLAorICAgICAgICAnLScsCisgICAgICAgIGhleChyYW5kb21EYXRhWzJdICYgMHgwMDAw
ZmZmZiwgNCwgTG93ZXJjYXNlKSwKKyAgICAgICAgaGV4KHJhbmRvbURhdGFbM10sIDgsIExvd2Vy
Y2FzZSkKKyAgICApOwogfQogCiBTdHJpbmcgYm9vdFNlc3Npb25VVUlEU3RyaW5nKCkKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAJKHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyMCw3ICsxMTIw
LDcgQEAgVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCogaW1wbAogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnXFwnKTsKICAgICAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoJ3UnKTsKLSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNp
emUoY2gsIGJ1ZmZlciwgNCk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGhleChjaCwgNCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIENTdHJpbmcgbmFycm93U3RyaW5nID0gYnVmZmVyLnRv
U3RyaW5nKCkuYXNjaWkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDAzNikKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisy
MDIwLTAxLTAzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0
aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXggZm9y
bWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlUHJvdG9jb2xTdHJpbmcpOgorICAgICAgICAq
IGNzcy9DU1NNYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVy
QXNDb2RlUG9pbnQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyVG9rZW46OnNlcmlhbGl6ZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnNlcmlhbGl6ZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzTXBlZ1RzU2VjdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSGFzaGVkTmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVB
bmRFc2NhcGVOb25QcmludGFibGVzKToKKyAgICAgICAgUmVwbGFjZSBhcHBlbmRCeXRlQXNIZXgo
KS9hcHBlbmRVbnNpZ25lZEFzSGV4KCkvYXBwZW5kVW5zaWduZWRBc0hleEZpeGVkU2l6ZSgpIHdp
dGggYXBwZW5kKGhleCgpKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6YXBwZW5kRm9y
bVVSTEVuY29kZWQpOgorICAgICAgICBUaGlzIHdhcyB0aGUgbGFzdCBub24tU3RyaW5nQnVpbGRl
ci9tYWtlU3RyaW5nIHVzZSBvZiBhcHBlbmRCeXRlQXNIZXguIFJhdGhlciB0aGFuIGtlZXAgYXBw
ZW5kQnl0ZUFzSGV4CisgICAgICAgIGFyb3VuZCwgaXQgaXMgcmVwbGFjZWQgd2l0aCBkaXJlY3Qg
YXBwZW5kcyBvZiB0aGUgY2hhcmFjdGVyIGJ1ZmZlciBoZXgoKSBwcm9kdWNlcy4KKwogMjAyMC0w
MS0wNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgaU9TIFNpbXVsYXRvciB0byBBTkdMRSBiYWNrZW5kIGZvciBXZWJHTApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJ
KHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIFN0
cmluZyBlbmNvZGVQcm90b2NvbFN0cmluZyhjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJvdG9jb2wubGVuZ3RoKCk7IGkrKykgewogICAgICAgICBpZiAocHJvdG9jb2xbaV0gPCAw
eDIwIHx8IHByb3RvY29sW2ldID4gMHg3RSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcXHUiKTsKLSAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVkQXNIZXhGaXhlZFNpemUo
cHJvdG9jb2xbaV0sIGJ1aWxkZXIsIDQpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4
KHByb3RvY29sW2ldLCA0KSk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJvdG9jb2xbaV0gPT0gMHg1
YykKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXFxcXCIpOwogICAgICAgICBl
bHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmNwcAkocmV2aXNpb24gMjU0MDM2KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU01hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDcgQEAgc3RhdGljIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyKFVDaGFyMzIgYwogc3RhdGlj
IHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNoYXIzMiBjLCBTdHJpbmdCdWls
ZGVyJiBhcHBlbmRUbykKIHsKICAgICBhcHBlbmRUby5hcHBlbmQoJ1xcJyk7Ci0gICAgYXBwZW5k
VW5zaWduZWRBc0hleChjLCBhcHBlbmRUbywgTG93ZXJjYXNlKTsKKyAgICBhcHBlbmRUby5hcHBl
bmQoaGV4KGMsIExvd2VyY2FzZSkpOwogICAgIGFwcGVuZFRvLmFwcGVuZCgnICcpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcAkocmV2
aXNpb24gMjU0MDM2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw5ICs0MzQsOSBAQCB2b2lkIENTU1BhcnNlclRv
a2VuOjpzZXJpYWxpemUoU3RyaW5nQnVpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVW5pY29k
ZVJhbmdlVG9rZW46CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiVSsiKTsKLSAgICAg
ICAgYXBwZW5kVW5zaWduZWRBc0hleCh1bmljb2RlUmFuZ2VTdGFydCgpLCBidWlsZGVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KHVuaWNvZGVSYW5nZVN0YXJ0KCkpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJy0nKTsKLSAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hleCh1bmljb2Rl
UmFuZ2VFbmQoKSwgYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleCh1bmljb2Rl
UmFuZ2VFbmQoKSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1Rva2VuOgogICAg
ICAgICBzZXJpYWxpemVTdHJpbmcodmFsdWUoKS50b1N0cmluZygpLCBidWlsZGVyKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHJldmlzaW9uIDI1
NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzE0LDE1ICszMTQsOCBAQCBTdHJpbmcgQ29sb3I6OnNlcmlhbGl6ZWQo
KSBjb25zdAogICAgIGlmIChpc0V4dGVuZGVkKCkpCiAgICAgICAgIHJldHVybiBhc0V4dGVuZGVk
KCkuY3NzVGV4dCgpOwogCi0gICAgaWYgKGlzT3BhcXVlKCkpIHsKLSAgICAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eSg3KTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyMnKTsKLSAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KHJlZCgpLCBi
dWlsZGVyLCBMb3dlcmNhc2UpOwotICAgICAgICBhcHBlbmRCeXRlQXNIZXgoZ3JlZW4oKSwgYnVp
bGRlciwgTG93ZXJjYXNlKTsKLSAgICAgICAgYXBwZW5kQnl0ZUFzSGV4KGJsdWUoKSwgYnVpbGRl
ciwgTG93ZXJjYXNlKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9
CisgICAgaWYgKGlzT3BhcXVlKCkpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCcjJywgaGV4
KHJlZCgpLCAyLCBMb3dlcmNhc2UpLCBoZXgoZ3JlZW4oKSwgMiwgTG93ZXJjYXNlKSwgaGV4KGJs
dWUoKSwgMiwgTG93ZXJjYXNlKSk7CiAKICAgICByZXR1cm4gY3NzVGV4dCgpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlz
aW9uIDI1NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ5
LDE0ICsyMzQ5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXMK
ICAgICAgICAgICAgICAgICAvLyBmb2xsb3dpbmcgdGhlICJFU19pbmZvX2xlbmd0aCIgZmllbGQu
IFRoZSB0ZXh0IHRyYWNrIGluLWJhbmQgbWV0YWRhdGEgdHJhY2sgZGlzcGF0Y2ggdHlwZSBtdXN0
IGJlCiAgICAgICAgICAgICAgICAgLy8gc2V0IHRvIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBz
dHJlYW0gdHlwZSBieXRlIGFuZCB0aGUgemVybyBvciBtb3JlIGRlc2NyaXB0b3IgYnl0ZXMgYnl0
ZXMsCiAgICAgICAgICAgICAgICAgLy8gZXhwcmVzc2VkIGluIGhleGFkZWNpbWFsIHVzaW5nIHVw
cGVyY2FzZSBBU0NJSSBoZXggZGlnaXRzLgotICAgICAgICAgICAgICAgIFN0cmluZyBpbmJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwotICAgICAgICAgICAgICAgIGFwcGVuZFVuc2lnbmVk
QXNIZXhGaXhlZFNpemUoc3RyZWFtLT5zdHJlYW1fdHlwZSwgaW5iYW5kTWV0YWRhdGFUcmFja0Rp
c3BhdGNoVHlwZSwgMik7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBpbmJhbmRNZXRh
ZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOworICAgICAgICAgICAgICAgIGluYmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGUuYXBwZW5kKGhleChzdHJlYW0tPnN0cmVhbV90eXBlLCAyKSk7CiAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHN0cmVhbS0+ZGVzY3JpcHRvcnMt
PmxlbjsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdzdE1wZWd0c0Rlc2NyaXB0
b3IqIGRlc2NyaXB0b3IgPSBzdGF0aWNfY2FzdDxjb25zdCBHc3RNcGVndHNEZXNjcmlwdG9yKj4o
Z19wdHJfYXJyYXlfaW5kZXgoc3RyZWFtLT5kZXNjcmlwdG9ycywgaikpOwogICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVzY3JpcHRvci0+bGVuZ3RoOyArK2sp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRCeXRlQXNIZXgoZGVzY3JpcHRvci0+ZGF0
YVtrXSwgaW5iYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbmJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlLmFwcGVuZChoZXgoZGVzY3Jp
cHRvci0+ZGF0YVtrXSwgMikpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0
cmFjay0+c2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZShpbmJhbmRNZXRhZGF0YVRy
YWNrRGlzcGF0Y2hUeXBlKTsKKyAgICAgICAgICAgICAgICB0cmFjay0+c2V0SW5CYW5kTWV0YWRh
dGFUcmFja0Rpc3BhdGNoVHlwZShpbmJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlLnRvU3Ry
aW5nKCkpOwogCiAgICAgICAgICAgICAgICAgbV9tZXRhZGF0YVRyYWNrcy5hZGQocGlkLCB0cmFj
ayk7CiAgICAgICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjaygqdHJhY2spOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZp
c2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODUs
MTAgKzk4NSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVIYXNoZWROYW1lKGNvbnN0IFMKICAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuYW1lOwogICAgIHVpbnQ2NF90
IG51bWJlciA9IG5hbWVIYXNoRm9yU2hhZGVyKG5hbWUudXRmOCgpLmRhdGEoKSwgbmFtZS5sZW5n
dGgoKSk7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgid2ViZ2xfIik7Ci0gICAgYXBwZW5kVW5zaWduZWRBc0hleChudW1iZXIsIGJ1aWxkZXIs
IExvd2VyY2FzZSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4g
bWFrZVN0cmluZygid2ViZ2xfIiwgaGV4KG51bWJlciwgTG93ZXJjYXNlKSk7CiB9CiAKIE9wdGlv
bmFsPFN0cmluZz4gR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbEluU2hhZGVyU291cmNl
TWFwKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9s
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAkocmV2aXNpb24gMjU0MDM2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEZvcm1VUkxF
bmNvZGVkKFZlY3RvcjwKICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICIlMEQlMEEiKTsgLy8g
RklYTUU6IFVuY2xlYXIgZXhhY3RseSB3aGVyZSB0aGlzIHJ1bGUgYWJvdXQgbm9ybWFsaXppbmcg
bGluZSBlbmRpbmdzIHRvIENSTEYgY29tZXMgZnJvbS4KICAgICAgICAgZWxzZSBpZiAoY2hhcmFj
dGVyICE9ICdccicpIHsKICAgICAgICAgICAgIGFwcGVuZChidWZmZXIsICclJyk7Ci0gICAgICAg
ICAgICBhcHBlbmRCeXRlQXNIZXgoY2hhcmFjdGVyLCBidWZmZXIpOworICAgICAgICAgICAgYXV0
byBoZXhCdWZmZXIgPSBoZXgoY2hhcmFjdGVyLCAyKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZm
ZXIsIGhleEJ1ZmZlci5jaGFyYWN0ZXJzKClbMF0pOworICAgICAgICAgICAgYXBwZW5kKGJ1ZmZl
ciwgaGV4QnVmZmVyLmNoYXJhY3RlcnMoKVsxXSk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAJKHJldmlzaW9uIDI1NDAzNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
OCw4ICsyMTgsMTAgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbQog
ICAgIG1kNS5jaGVja3N1bShzdW0pOwogICAgIHVpbnQ4X3QqIHJhd2RhdGEgPSBzdW0uZGF0YSgp
OwogCisgICAgU3RyaW5nQnVpbGRlciBiYXNlTmFtZUJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBNRDU6Omhhc2hTaXplOyBpKyspCi0gICAgICAgIGFwcGVuZEJ5dGVBc0hleChy
YXdkYXRhW2ldLCBtX2Jhc2VuYW1lLCBMb3dlcmNhc2UpOworICAgICAgICBiYXNlTmFtZUJ1aWxk
ZXIuYXBwZW5kKGhleChyYXdkYXRhW2ldLCBMb3dlcmNhc2UpKTsKKyAgICBtX2Jhc2VuYW1lID0g
YmFzZU5hbWVCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIGJvb2wgQ3VybENhY2hlRW50cnk6Omxv
YWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZm
ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCShyZXZpc2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBTdHJpbmcg
cXVvdGVBbmRFc2NhcGVOb25QcmludGFibGVzKFN0cmluCiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJcXHh7Iik7Ci0gICAgICAgICAgICAgICAgYXBwZW5kVW5zaWduZWRBc0hl
eChjLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaGV4KGMpKTsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwMzYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTAzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGdXJ0aGVyIHNpbXBsaWZ5IFN0cmlu
Z0J1aWxkZXIgdXNhZ2UgYnkgc3RhbmRhcmRpemluZyBoZXggZm9ybWF0aW5nIHRvIGEgc2luZ2xl
IGhleCgpIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNh
bHRGb3JPcmlnaW5DYWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpsb2dnaW5nU3RyaW5n
KToKKyAgICAgICAgUmVwbGFjZSBhcHBlbmRVbnNpZ25lZEFzSGV4KCkgd2l0aCBhcHBlbmQoaGV4
KCkpLgorCiAyMDIwLTAxLTA0ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZvcm1hdCBXZWJQYWdlIGxvZ2dpbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAJKHJldmlzaW9uIDI1
NDAzNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGUKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwog
ICAgICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShoYXNoU2FsdFNpemUpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmFuZG9tRGF0YVNpemU7IGkrKykKLSAgICAgICAgICAg
IGFwcGVuZFVuc2lnbmVkQXNIZXgocmFuZG9tRGF0YVtpXSwgYnVpbGRlcik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChoZXgocmFuZG9tRGF0YVtpXSkpOwogCiAgICAgICAgIFN0cmluZyBk
ZXZpY2VJZEhhc2hTYWx0ID0gYnVpbGRlci50b1N0cmluZygpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDI1NDAz
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCBjb25zdCBjaGFyKiBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmxvZ2dpbmdTCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogCiAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJXZWJCYWNrRm9yd2FyZExpc3QgMHgiKTsKLSAgICBhcHBlbmRVbnNp
Z25lZEFzSGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgYnVpbGRlcik7Cisg
ICAgYnVpbGRlci5hcHBlbmQoaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSkp
OwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gIik7CiAgICAgYnVpbGRlci5hcHBlbmRO
dW1iZXIobV9lbnRyaWVzLnNpemUoKSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgZW50
cmllcywgaGFzIGN1cnJlbnQgaW5kZXggIik7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwMzYpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMS0wMyAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJp
bmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJkaXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmds
ZSBoZXgoKSBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hleE51bWJlci5jcHA6IEFkZGVkLgorICAgICAg
ICBBZGQgdGVzdGluZyBmb3IgaGV4IGZvcm1hdHRpbmcgb2YgaW50ZWdlcnMuCisKIDIwMjAtMDEt
MDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTjogMTUwKyBmbGFreSBmYWlsdXJlcyBvbiBzb21lIGJvdHMgKGNvbG9yIG1pc21hdGNo
ZXMpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1NDAzNikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDYgKzQ1LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9IYXNoTWFw
LmNwcAogICAgIFRlc3RzL1dURi9IYXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9IYXNoZXIuY3Bw
CisgICAgVGVzdHMvV1RGL0hleE51bWJlci5jcHAKICAgICBUZXN0cy9XVEYvSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5jcHAKICAgICBUZXN0cy9XVEYvSXRlcmF0b3JSYW5nZS5jcHAKICAgICBU
ZXN0cy9XVEYvSlNPTlZhbHVlLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI1NDAzNikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NjgsNiArNTY4LDcgQEAKIAkJ
N0M4ODJFMDkxQzgwQzYzMDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkUwNDFDODBD
NjI0MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJbi5tbSAqLzsgfTsKIAkJN0M4ODJF
MEExQzgwQzc2NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkUwMzFDODBDNjI0MDA2QkY3MzEg
LyogVXNlckNvbnRlbnRXb3JsZC5tbSAqLzsgfTsKIAkJN0M4OUQyQUMxQTY5QjgwRDAwM0E1RkRF
IC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQUExQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZp
Z3VyYXRpb24uY3BwICovOyB9OworCQk3QzhCRkY3MTIzQzAxMDdBMDBDMDA5QjMgLyogSGV4TnVt
YmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
OEJGRjcwMjNDMDEwNjcwMEMwMDlCMyAvKiBIZXhOdW1iZXIuY3BwICovOyB9OwogCQk3QzlFRDk4
QjE3QTE5RjRCMDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlF
RDk4QTE3QTE5RDA2MDBFNERDMzMgLyogYXR0cmlidXRlZFN0cmluZ1N0cmlrZXRocm91Z2guaHRt
bCAqLzsgfTsKIAkJN0NCMTg0QzYxQUEzRjIxMDAwNjZFREZEIC8qIENvbnRlbnRFeHRlbnNpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE4
NEM0MUFBM0YyMTAwMDY2RURGRCAvKiBDb250ZW50RXh0ZW5zaW9ucy5jcHAgKi87IH07CiAJCTdD
QkQ1QTIzMjJERTQyQTYwMDRBOUUzMiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCRDVBMjIyMkRFNDJBNjAw
NEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgKi87IH07CkBAIC0yMDg0LDYgKzIwODUs
NyBAQAogCQk3Qzg4MkUwNDFDODBDNjI0MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZFBsdWdJ
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJDb250ZW50
V29ybGRQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODgyRTA1MUM4
MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUHJvdG9jb2wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRXb3JsZFByb3RvY29sLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMkFBMUE2OUI4MEQwMDNBNUZERSAvKiBXS1BhZ2VD
b25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
UGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzhC
RkY3MDIzQzAxMDY3MDBDMDA5QjMgLyogSGV4TnVtYmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhleE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEREQUE5MTcz
NURFMUQwMEVBNUFDMCAvKiBDbG9zZVRoZW5UZXJtaW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2xvc2VUaGVuVGVybWluYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M5RUQ5OEExN0ExOUQwNjAwRTREQzMzIC8qIGF0dHJpYnV0ZWRTdHJpbmdTdHJpa2V0aHJvdWdo
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBhdHRyaWJ1dGVkU3RyaW5nU3RyaWtldGhyb3VnaC5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0IxODRDNDFBQTNGMjEwMDA2NkVERkQgLyogQ29u
dGVudEV4dGVuc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGVudEV4dGVuc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc0
Nyw2ICszNzQ5LDcgQEAKIAkJCQk5MzNENjMxQjFGQ0I3NjE4MDAzMkVDRDYgLyogSGFzaGVyLmNw
cCAqLywKIAkJCQkwQkNEODMzNDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi8sCiAJ
CQkJMjZCMkRGRjgxNUJERTU5OTAwNEY2OTFEIC8qIEhhc2hTZXQuY3BwICovLAorCQkJCTdDOEJG
RjcwMjNDMDEwNjcwMEMwMDlCMyAvKiBIZXhOdW1iZXIuY3BwICovLAogCQkJCTI2NkZBRkQyMTVF
NTc3NTIwMEY2MUQ1QiAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCAqLywKIAkJCQk3
Q0VCNjJBOTIyMzYwODZDMDA2OUNCQjAgLyogSXRlcmF0b3JSYW5nZS5jcHAgKi8sCiAJCQkJN0Ew
NTA5NDAxRkI5RjA0NDAwQjMzRkI4IC8qIEpTT05WYWx1ZS5jcHAgKi8sCkBAIC00NDQwLDYgKzQ0
NDMsNyBAQAogCQkJCTkzM0Q2MzFEMUZDQjc2MjAwMDMyRUNENiAvKiBIYXNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RFRDIxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDQxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0M4QkZGNzEyM0MwMTA3QTAwQzAwOUIzIC8qIEhleE51bWJl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFMDFEMEE1OTBDMDBGRUJDRjMgLyogSW50
ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1M0ZDREU2QjIy
OUVGRkI5MDA1OThFQ0YgLyogSXNvSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VCNjJB
QjIyMzYwOURFMDA2OUNCQjAgLyogSXRlcmF0b3JSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hleE51bWJlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGV4TnVtYmVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IZXhOdW1iZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8d3Rm
L0hleE51bWJlci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKKy8vIE5vdCB1c2lu
ZyBidWlsZGVyLnRvU3RyaW5nKCkgb3IgYnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHko
KSBiZWNhdXNlIHRoZXkgYWxsCisvLyBjaGFuZ2UgaW50ZXJuYWwgc3RhdGUgb2YgYnVpbGRlci4K
KyNkZWZpbmUgZXhwZWN0QnVpbGRlckNvbnRlbnQoZXhwZWN0ZWQsIGJ1aWxkZXIpIFwKKyAgICB7
IFwKKyAgICAgICAgaWYgKGJ1aWxkZXIuaXM4Qml0KCkpIFwKKyAgICAgICAgICAgIEVYUEVDVF9F
UShTdHJpbmcoZXhwZWN0ZWQpLCBTdHJpbmcoYnVpbGRlci5jaGFyYWN0ZXJzOCgpLCBidWlsZGVy
Lmxlbmd0aCgpKSk7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgICBFWFBFQ1RfRVEoU3Ry
aW5nKGV4cGVjdGVkKSwgU3RyaW5nKGJ1aWxkZXIuY2hhcmFjdGVyczE2KCksIGJ1aWxkZXIubGVu
Z3RoKCkpKTsgXAorICAgIH0gXAorCitURVNUKFdURiwgSGV4TnVtYmVyKQoreworICAgIHVpbnQz
Ml90IGludGVnZXIgPSAxMDsKKyAgICB1aW50MzJfdCBsYXJnZUludGVnZXIgPSA2NDIwNjsKKyAg
ICB1bnNpZ25lZCBjaGFyIGJ5dGUgPSAxMjg7CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4KGludGVnZXIpKTsKKyAgICAg
ICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIkEiLCBidWlsZGVyKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4
KGludGVnZXIsIExvd2VyY2FzZSkpOworICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiYSIs
IGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoaW50ZWdlciwgMSwgTG93ZXJjYXNlKSk7Cisg
ICAgICAgIGV4cGVjdEJ1aWxkZXJDb250ZW50KCJhIiwgYnVpbGRlcik7CisgICAgfQorCisgICAg
eworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGhleChpbnRlZ2VyLCAyLCBMb3dlcmNhc2UpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRl
bnQoIjBhIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChpbnRlZ2VyLCAzLCBMb3dlcmNh
c2UpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIjAwYSIsIGJ1aWxkZXIpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWls
ZGVyLmFwcGVuZChoZXgoaW50ZWdlciwgNCwgTG93ZXJjYXNlKSk7CisgICAgICAgIGV4cGVjdEJ1
aWxkZXJDb250ZW50KCIwMDBhIiwgYnVpbGRlcik7CisgICAgfQorCisgICAgeworICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleChsYXJnZUlu
dGVnZXIpKTsKKyAgICAgICAgZXhwZWN0QnVpbGRlckNvbnRlbnQoIkZBQ0UiLCBidWlsZGVyKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoaGV4KGxhcmdlSW50ZWdlciwgMikpOworICAgICAgICBleHBlY3RCdWls
ZGVyQ29udGVudCgiRkFDRSIsIGJ1aWxkZXIpOworICAgIH0KKworICAgIHsKKyAgICAgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgoYnl0ZSkpOwor
ICAgICAgICBleHBlY3RCdWlsZGVyQ29udGVudCgiODAiLCBidWlsZGVyKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoaGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGludGVnZXIpLCAyKSk7CisgICAgICAg
IGV4cGVjdEJ1aWxkZXJDb250ZW50KCIwQSIsIGJ1aWxkZXIpOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>