<?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>165519</bug_id>
          
          <creation_ts>2016-12-06 23:55:24 -0800</creation_ts>
          <short_desc>[WASM] Add support for truncation operators</short_desc>
          <delta_ts>2016-12-07 13:44:27 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257207</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-06 23:55:24 -0800</bug_when>
    <thetext>Add support for truncation operators</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257208</commentid>
    <comment_count>1</comment_count>
      <attachid>296382</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-07 00:01:43 -0800</bug_when>
    <thetext>Created attachment 296382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257270</commentid>
    <comment_count>2</comment_count>
      <attachid>296382</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-07 10:39:06 -0800</bug_when>
    <thetext>Comment on attachment 296382
Patch

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

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1316
&gt; +        // instructions are the same. Otherwise, we subtract need to int64_t::min() convert then add it back.

Otherwise, we need to: subtract int64_t::min(); truncate double to uint64_t; then add back int64_t::min().

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1324
&gt; +        m_assembler.movq_i64r(0x8000000000000000, scratchRegister());

Let&apos;s use numeric_limits&lt;int64_t&gt;::min() here instead of 0x8.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:1356
&gt; +        m_assembler.movq_i64r(0x8000000000000000, scratchRegister());

Samesies.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1043
&gt; +        constant = m_currentBlock-&gt;appendNew&lt;ConstDoubleValue&gt;(m_proc, Origin(), bitwise_cast&lt;double&gt;(0x43e0000000000000));

static_cast&lt;double&gt;(numeric_limits&lt;int64_t&gt;::min())

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1108
&gt; +        constant = m_currentBlock-&gt;appendNew&lt;ConstFloatValue&gt;(m_proc, Origin(), bitwise_cast&lt;float&gt;(0x5f000000));

static_cast&lt;float&gt;(numeric_limits&lt;int64_t&gt;::min())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257347</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-07 13:44:27 -0800</bug_when>
    <thetext>Committed r209476: &lt;http://trac.webkit.org/changeset/209476&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296382</attachid>
            <date>2016-12-07 00:01:43 -0800</date>
            <delta_ts>2016-12-07 10:39:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165519-20161207000104.patch</filename>
            <type>text/plain</type>
            <size>42697</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTE1NzA3YzVkMjVlYjY3ODdiY2FmOGNlYmNlNDg1YmZlZWU4OWY1Li5kNTE4OTllZjkyMGQ5ZDc4
ODhkM2ZlOGI1NjYyMjE0NGFjODllYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNi0xMi0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdHJ1bmNhdGlvbiBvcGVyYXRvcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRydW5jYXRpb24gb3BlcmF0b3JzLiBUaGUgY3VycmVu
dCBwYXRjaAorICAgICAgICBkb2VzIHJhbmdlIGJhc2VkIG91dCBvZiBib3VuZHMgY2hlY2tpbmcs
IGluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIHVzZSBzeXN0ZW0KKyAgICAgICAgcmVnaXN0ZXIgZmxh
Z3Mgb24gQVJNIGFuZCBvdGhlciB0cmlja3Mgb24gWDg2IGltcHJvdmUgdGhlIHBlcmZvcm1hbmNl
IG9mCisgICAgICAgIHRoZXNlIG9wY29kZXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFu
Y2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0Ojp0cnVuY2F0ZURvdWJsZVRvSW50NjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0Ojp0cnVuY2F0ZURvdWJsZVRvVWludDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6dHJ1bmNhdGVGbG9hdFRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0Ojp0cnVuY2F0ZUZsb2F0VG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0Ojp0cnVuY2F0ZUZsb2F0VG9JbnQ2NCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnRydW5jYXRlRmxvYXRUb1VpbnQ2NCk6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZUZsb2F0VG9JbnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp0cnVuY2F0ZURvdWJsZVRvVWludDMyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6dHJ1bmNhdGVEb3VibGVUb0ludDY0KToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRydW5jYXRlRG91YmxlVG9VaW50NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6dHJ1bmNhdGVGbG9hdFRvVWlu
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRydW5jYXRlRmxvYXRU
b0ludDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRydW5jYXRlRmxv
YXRUb1VpbnQ2NCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6OmN2dHRzczJzaV9ycik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6Y3Z0dHNzMnNpcV9ycik6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
STMyVHJ1bmNTRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9w
PE9wVHlwZTo6STMyVHJ1bmNTRjMyPik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNVRjY0Pik6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNVRjMyPik6CisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjY0Pik6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjY0
Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0
VHJ1bmNTRjMyPik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STY0VHJ1bmNVRjMyPik6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisKIDIwMTYtMTItMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBBU0NJSUNUeXBlIG1vcmUsIGFuZCBpbXByb3ZlIGl0IGEgbGl0dGxlIGJp
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAppbmRleCA2MzM0ZmJmNGIyN2IzOGI1NTg2ZGFlOTZlMTcxYTcxNGE5ODBhMDRl
Li5kOGQ3YjY5YzY5OWU1NTY4Y2RjODM0MjEzNDM1NjA1YjUzNGQ4MTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApA
QCAtMTY1NSw3ICsxNjU1LDcgQEAgcHVibGljOgogICAgICAgICAvLyBUcnVuY2F0ZSB0byBhIDY0
LWJpdCBpbnRlZ2VyIGluIGRhdGFUZW1wUmVnaXN0ZXIsIGNvcHkgdGhlIGxvdyAzMi1iaXQgdG8g
ZGVzdC4KICAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHpzPDY0LCA2ND4oZ2V0Q2FjaGVkRGF0YVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBzcmMpOwogICAgICAgICB6ZXJvRXh0ZW5kMzJU
b1B0cihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKLSAgICAgICAgLy8gQ2hlY2sgdGhsb3cgMzIt
Yml0cyBzaWduIGV4dGVuZCB0byBiZSBlcXVhbCB0byB0aGUgZnVsbCB2YWx1ZS4KKyAgICAgICAg
Ly8gQ2hlY2sgdGhlIGxvdyAzMi1iaXRzIHNpZ24gZXh0ZW5kIHRvIGJlIGVxdWFsIHRvIHRoZSBm
dWxsIHZhbHVlLgogICAgICAgICBtX2Fzc2VtYmxlci5jbXA8NjQ+KGRhdGFUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIEFSTTY0QXNzZW1ibGVyOjpTWFRXLCAwKTsKICAgICAgICAgcmV0
dXJuIEp1bXAobWFrZUJyYW5jaChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNz
ZnVsID8gRXF1YWwgOiBOb3RFcXVhbCkpOwogICAgIH0KQEAgLTIwNDEsNiArMjA0MSw0NSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmZjdnR6dTwzMiwgNjQ+KGRlc3QsIHNyYyk7CiAg
ICAgfQogCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50NjQoRlBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHpzPDY0LCA2
ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50NjQo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBGUFJlZ2lzdGVySUQsIEZQUmVnaXN0
ZXJJRCkKKyAgICB7CisgICAgICAgIHRydW5jYXRlRG91YmxlVG9VaW50NjQoc3JjLCBkZXN0KTsK
KyAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50NjQoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHp1PDY0
LCA2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRmxvYXRUb0ludDMy
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmZjdnR6czwzMiwgMzI+KGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCB0cnVu
Y2F0ZUZsb2F0VG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZmN2dHp1PDMyLCAzMj4oZGVzdCwgc3JjKTsKKyAgICB9
CisKKyAgICB2b2lkIHRydW5jYXRlRmxvYXRUb0ludDY0KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZjdnR6czw2NCwgMzI+KGRl
c3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCB0cnVuY2F0ZUZsb2F0VG9VaW50NjQoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkK
KyAgICB7CisgICAgICAgIHRydW5jYXRlRmxvYXRUb1VpbnQ2NChzcmMsIGRlc3QpOworICAgIH0K
KworICAgIHZvaWQgdHJ1bmNhdGVGbG9hdFRvVWludDY0KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZjdnR6dTw2NCwgMzI+KGRl
c3QsIHNyYyk7CisgICAgfQogCiAgICAgLy8gU3RhY2sgbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnM6
CiAgICAgLy8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBiZWRiMDZiZTEyMjk3OWNlMzY3ZmJkNmJh
YWZjNDE3ZTJjZWNkZWY0Li4zODM0MjE0M2EwZTQyM2Q5NDdmNjJiYzk2YjhlZjc2Zjk3MGQyMzBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xNjc4LDE1ICsxNjc4LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHRz
ZDJzaV9ycihzcmMsIGRlc3QpOwogICAgIH0KLSAgICAKLSNpZiBDUFUoWDg2XzY0KQotICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisKKyAgICB2b2lkIHRydW5jYXRlRmxvYXRUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywgZGVzdCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmN2dHRzczJzaV9ycihzcmMsIGRlc3QpOwogICAgIH0KLSNlbmRpZgotICAgIAor
CiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1
bHRpbmcgJ2Rlc3QnLgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUg
YXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9yIHNv
bWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmlu
ZGV4IDUwNzZhZWI2NzU5NzYxMjNlMDRlZDU4MDgyMGQ5ZjBlYzBkNmQxOWYuLmIyNDUzYjY4NzA1
ZTM4MGE4NTFkMGQ5NWZiYWFkYmExY2NjMGM3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTEyOTUsNiAr
MTI5NSw3MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSksIG1hc2s4KTsK
ICAgICB9CiAKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNp
cV9ycihzcmMsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDY0
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyBpbnQ2NE1p
biBzaG91bGQgY29udGFpbiBleGFjdGx5IDB4NDNFMDAwMDAwMDAwMDAwMCA9PSBzdGF0aWNfY2Fz
dDxkb3VibGU+KGludDY0X3Q6Om1pbigpKS4gc2NyYXRjaCBtYXkKKyAgICAvLyBiZSB0aGUgc2Ft
ZSBGUFIgYXMgc3JjLgorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQ2NChGUFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoLCBGUFJlZ2lzdGVy
SUQgaW50NjRNaW4pCisgICAgeworICAgICAgICBBU1NFUlQoc2NyYXRjaCAhPSBpbnQ2NE1pbik7
CisKKyAgICAgICAgLy8gU2luY2UgWDg2IGRvZXMgbm90IGhhdmUgYSBmbG9hdGluZyBwb2ludCB0
byB1bnNpZ25lZCBpbnRlZ2VyIGluc3RydWN0aW9uLCB3ZSBuZWVkIHRvIHVzZSB0aGUgc2lnbmVk
CisgICAgICAgIC8vIGludGVnZXIgY29udmVyc2lvbiBpbnN0cnVjdGlvbi4gSWYgdGhlIHNyYyBp
cyBsZXNzIHRoYW4gaW50NjRfdDo6bWluKCkgdGhlbiB0aGUgcmVzdWx0cyBvZiB0aGUgdHdvCisg
ICAgICAgIC8vIGluc3RydWN0aW9ucyBhcmUgdGhlIHNhbWUuIE90aGVyd2lzZSwgd2Ugc3VidHJh
Y3QgbmVlZCB0byBpbnQ2NF90OjptaW4oKSBjb252ZXJ0IHRoZW4gYWRkIGl0IGJhY2suCisKKyAg
ICAgICAgSnVtcCBsYXJnZSA9IGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWws
IHNyYywgaW50NjRNaW4pOworICAgICAgICBtX2Fzc2VtYmxlci5jdnR0c2Qyc2lxX3JyKHNyYywg
ZGVzdCk7CisgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICAgICAgbGFyZ2UubGluayh0
aGlzKTsKKyAgICAgICAgbW92ZURvdWJsZShzcmMsIHNjcmF0Y2gpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJzZF9ycihpbnQ2NE1pbiwgc2NyYXRjaCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfaTY0cigweDgwMDAwMDAwMDAwMDAwMDAsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzY3JhdGNoLCBkZXN0KTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JxX3JyKHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsKKyAgICAgICAgZG9uZS5saW5r
KHRoaXMpOworICAgIH0KKworICAgIHZvaWQgdHJ1bmNhdGVGbG9hdFRvVWludDMyKEZQUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2
dHRzczJzaXFfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRydW5jYXRlRmxvYXRU
b0ludDY0KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmN2dHRzczJzaXFfcnIoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyBp
bnQ2NE1pbiBzaG91bGQgY29udGFpbiBleGFjdGx5IDB4NWYwMDAwMDAgPT0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGludDY0X3Q6Om1pbigpKS4gc2NyYXRjaCBtYXkgYmUgdGhlCisgICAgLy8gc2FtZSBG
UFIgYXMgc3JjLgorICAgIHZvaWQgdHJ1bmNhdGVGbG9hdFRvVWludDY0KEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEIHNjcmF0Y2gsIEZQUmVnaXN0ZXJJRCBp
bnQ2NE1pbikKKyAgICB7CisgICAgICAgIEFTU0VSVChzY3JhdGNoICE9IGludDY0TWluKTsKKwor
ICAgICAgICAvLyBTaW5jZSBYODYgZG9lcyBub3QgaGF2ZSBhIGZsb2F0aW5nIHBvaW50IHRvIHVu
c2lnbmVkIGludGVnZXIgaW5zdHJ1Y3Rpb24sIHdlIG5lZWQgdG8gdXNlIHRoZSBzaWduZWQKKyAg
ICAgICAgLy8gaW50ZWdlciBjb252ZXJzaW9uIGluc3RydWN0aW9uLiBJZiB0aGUgc3JjIGlzIGxl
c3MgdGhhbiBpbnQ2NF90OjptaW4oKSB0aGVuIHRoZSByZXN1bHRzIG9mIHRoZSB0d28KKyAgICAg
ICAgLy8gaW5zdHJ1Y3Rpb25zIGFyZSB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB3ZSBzdWJ0cmFjdCBu
ZWVkIHRvIGludDY0X3Q6Om1pbigpIGNvbnZlcnQgdGhlbiBhZGQgaXQgYmFjay4KKworICAgICAg
ICBKdW1wIGxhcmdlID0gYnJhbmNoRmxvYXQoRG91YmxlR3JlYXRlclRoYW5PckVxdWFsLCBzcmMs
IGludDY0TWluKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNzMnNpcV9ycihzcmMsIGRlc3Qp
OworICAgICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisgICAgICAgIGxhcmdlLmxpbmsodGhpcyk7
CisgICAgICAgIG1vdmVEb3VibGUoc3JjLCBzY3JhdGNoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3Vic3NfcnIoaW50NjRNaW4sIHNjcmF0Y2gpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2
NHIoMHg4MDAwMDAwMDAwMDAwMDAwLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmN2dHRzczJzaXFfcnIoc2NyYXRjaCwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycV9ycihzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CisgICAgICAgIGRvbmUubGluayh0aGlz
KTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQ2NFRvRG91YmxlKFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNk
cV9ycihzcmMsIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmgKaW5kZXggZDJkZGZmODdmOGNjMGY2MjMwYmQxM2NkNGVmMWJmNjJiNTlmMjll
NS4uYTY1ZTY5NTU1ODUxM2ExZWM3ZDQ2N2M1Njc2OWNmZWU2OTdjNzAxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0yNjcsNiArMjY3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1AyX01PVkFQU19WcGRXcGQgICA9IDB4MjgsCiAgICAg
ICAgIE9QMl9DVlRTSTJTRF9Wc2RFZCAgPSAweDJBLAogICAgICAgICBPUDJfQ1ZUVFNEMlNJX0dk
V3NkID0gMHgyQywKKyAgICAgICAgT1AyX0NWVFRTUzJTSV9HZFdzZCA9IDB4MkMsCiAgICAgICAg
IE9QMl9VQ09NSVNEX1ZzZFdzZCAgPSAweDJFLAogICAgICAgICBPUDJfM0JZVEVfRVNDQVBFXzNB
ID0gMHgzQSwKICAgICAgICAgT1AyX0NNT1ZDQyAgICAgICAgICA9IDB4NDAsCkBAIC0yMjkzLDYg
KzIyOTQsMjAgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NW
VFRTRDJTSV9HZFdzZCwgZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwogICAgIH0KIAorICAgIHZvaWQg
Y3Z0dHNzMnNpX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIudHdvQnl0ZU9wKE9QMl9DVlRUU1MyU0lfR2RXc2QsIGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsK
KyAgICB9CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIHZvaWQgY3Z0dHNzMnNpcV9ycihYTU1SZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV9GMyk7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcDY0KE9QMl9D
VlRUU1MyU0lfR2RXc2QsIGRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIHZvaWQgY3Z0c2Qyc3NfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0
KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGM0
MTAwZjk0YzM5OGVmMzZkY2ZiY2Q0MWU4YTJkZWRkYzE2NmQ5OWQuLmQ3M2JkNzI4ODEwMWQ3MmQ5
OWJlOTMzMmU0NjEyNjFjOWRjNTM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTkwNSw2ICs5MDUsMjI5IEBAIGJvb2wgQjNJ
UkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJUcnVuYz4oRXhwcmVzc2lvblR5cGUgYXJnLCBF
eHByZXNzaW9uVHlwZSYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxhdGU8PgorYm9vbCBC
M0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUg
YXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIFZhbHVlKiBtYXggPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIC1z
dGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7
CisgICAgVmFsdWUqIG1pbiA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwg
T3JpZ2luKCksIGFyZywgbWF4KSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBHcmVhdGVyRXF1YWwsIE9yaWdpbigpLCBhcmcsIG1pbikpOworICAgIG91
dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVh
bCwgT3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBDaGVja1Zh
bHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOworICAgIHRyYXAtPnNldEdlbmVyYXRvcihb
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
bV9wcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICBqaXQudHJ1bmNhdGVEb3VibGVUb0ludDMyKHBhcmFtc1sxXS5mcHIoKSwg
cGFyYW1zWzBdLmdwcigpKTsKKyAgICB9KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZm
ZWN0czo6bm9uZSgpOworICAgIHJlc3VsdCA9IHBhdGNocG9pbnQ7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPD4KK2Jvb2wgQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJU
cnVuY1NGMzI+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK3sK
KyAgICBWYWx1ZSogbWF4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFs
dWU+KG1fcHJvYywgT3JpZ2luKCksIC1zdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWluKCkpKTsKKyAgICBWYWx1ZSogbWluID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0
PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworICAgIFZhbHVl
KiBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksIGFyZywgbWF4KSwKKyAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyRXF1YWwsIE9yaWdpbigp
LCBhcmcsIG1pbikpOworICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgT3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlw
ZShJMzIpKTsKKyAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOworICAg
IHRyYXAtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsK
KyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBqaXQudHJ1bmNhdGVGbG9hdFRvSW50
MzIocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgIH0pOworICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcmVzdWx0ID0gcGF0Y2hwb2lu
dDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit0ZW1wbGF0ZTw+Citib29sIEIzSVJHZW5lcmF0
b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNVRjY0PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCit7CisgICAgVmFsdWUqIG1heCA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgKiAtMi4wKTsKKyAg
ICBWYWx1ZSogbWluID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVl
PihtX3Byb2MsIE9yaWdpbigpLCAtMS4wKTsKKyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgT3JpZ2luKCksCisg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTGVzc1RoYW4s
IE9yaWdpbigpLCBhcmcsIG1heCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgR3JlYXRlclRoYW4sIE9yaWdpbigpLCBhcmcsIG1pbikpOworICAgIG91
dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVh
bCwgT3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBDaGVja1Zh
bHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOworICAgIHRyYXAtPnNldEdlbmVyYXRvcihb
XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
KyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsKKyAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4o
bV9wcm9jLCBJbnQzMiwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICBqaXQudHJ1bmNhdGVEb3VibGVUb1VpbnQzMihwYXJhbXNbMV0uZnByKCks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVm
ZmVjdHM6Om5vbmUoKTsKKyAgICByZXN1bHQgPSBwYXRjaHBvaW50OworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZTw+Citib29sIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMy
VHJ1bmNVRjMyPihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCit7
CisgICAgVmFsdWUqIG1heCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZh
bHVlPihtX3Byb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWluKCkpICogLTIuMCk7CisgICAgVmFsdWUqIG1pbiA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCAtMS4w
KTsKKyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
bHVlPihtX3Byb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBhcmcsIG1heCksCisg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgR3JlYXRlclRo
YW4sIE9yaWdpbigpLCBhcmcsIG1pbikpOworICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgT3JpZ2luKCksIG91dE9mQm91bmRz
LCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZC
b3VuZHMpOworICAgIHRyYXAtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQo
KTsKKyAgICB9KTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQzMiwgT3JpZ2luKCkp
OworICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwor
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBqaXQudHJ1bmNh
dGVGbG9hdFRvVWludDMyKHBhcmFtc1sxXS5mcHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKKyAgICB9
KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIHJlc3Vs
dCA9IHBhdGNocG9pbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2Jvb2wg
QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGNjQ+KEV4cHJlc3Npb25UeXBl
IGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK3sKKyAgICBWYWx1ZSogbWF4ID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCAt
c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkp
OworICAgIFZhbHVlKiBtaW4gPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKTsKKyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgT3JpZ2luKCksCisg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTGVzc1RoYW4s
IE9yaWdpbigpLCBhcmcsIG1heCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgR3JlYXRlckVxdWFsLCBPcmlnaW4oKSwgYXJnLCBtaW4pKTsKKyAgICBv
dXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1
YWwsIE9yaWdpbigpLCBvdXRPZkJvdW5kcywgemVyb0ZvclR5cGUoSTMyKSk7CisgICAgQ2hlY2tW
YWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9j
LCBDaGVjaywgT3JpZ2luKCksIG91dE9mQm91bmRzKTsKKyAgICB0cmFwLT5zZXRHZW5lcmF0b3Io
W10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgfSk7CisgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KG1fcHJvYywgSW50NjQsIE9yaWdpbigpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQoYXJnLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgaml0LnRydW5jYXRlRG91YmxlVG9JbnQ2NChwYXJhbXNbMV0uZnByKCks
IHBhcmFtc1swXS5ncHIoKSk7CisgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVm
ZmVjdHM6Om5vbmUoKTsKKyAgICByZXN1bHQgPSBwYXRjaHBvaW50OworICAgIHJldHVybiB0cnVl
OworfQorCit0ZW1wbGF0ZTw+Citib29sIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0
VHJ1bmNVRjY0PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCit7
CisgICAgVmFsdWUqIG1heCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4oKSkgKiAtMi4wKTsKKyAgICBWYWx1ZSogbWluID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCAt
MS4wKTsKKyAgICBWYWx1ZSogb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTGVzc1RoYW4sIE9yaWdpbigpLCBhcmcsIG1heCks
CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgR3JlYXRl
clRoYW4sIE9yaWdpbigpLCBhcmcsIG1pbikpOworICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgT3JpZ2luKCksIG91dE9mQm91
bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0
T2ZCb3VuZHMpOworICAgIHRyYXAtPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9p
bnQoKTsKKyAgICB9KTsKKworICAgIFZhbHVlKiBjb25zdGFudDsKKyAgICBpZiAoaXNYODYoKSkg
eworICAgICAgICAvLyBTaW5jZSB4ODYgZG9lc24ndCBoYXZlIGFuIGluc3RydWN0aW9uIHRvIGNv
bnZlcnQgZmxvYXRpbmcgcG9pbnRzIHRvIHVuc2lnbmVkIGludGVnZXJzLCB3ZSBhdCBsZWFzdCB0
cnkgdG8gZG8gdGhlIHNtYXJ0IHRoaW5nIGlmCisgICAgICAgIC8vIHRoZSBudW1iZXJzIGFyZSB3
b3VsZCBiZSBwb3NpdGl2ZSBhbnl3YXkgYXMgYSBzaWduZWQgaW50ZWdlci4gU2luY2Ugd2UgY2Fu
bm90IG1hdGVyaWFsaXplIGNvbnN0YW50cyBpbnRvIGZwcnMgd2UgaGF2ZSBiMyBkbyBpdAorICAg
ICAgICAvLyBzbyB3ZSBjYW4gcG9vbCB0aGVtIGlmIG5lZWRlZC4KKyAgICAgICAgY29uc3RhbnQg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgT3Jp
Z2luKCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KDB4NDNlMDAwMDAwMDAwMDAwMCkpOworICAgIH0K
KyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFBhdGNocG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOworICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIGlmIChpc1g4
NigpKSB7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjb25zdGFudCwgVmFsdWVSZXA6OlNv
bWVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9
IDE7CisgICAgfQorICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAg
ICAgIEZQUlJlZyBzY3JhdGNoID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgRlBSUmVnIGNvbnN0
YW50ID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAg
IHNjcmF0Y2ggPSBwYXJhbXMuZnBTY3JhdGNoKDApOworICAgICAgICAgICAgY29uc3RhbnQgPSBw
YXJhbXNbMl0uZnByKCk7CisgICAgICAgIH0KKyAgICAgICAgaml0LnRydW5jYXRlRG91YmxlVG9V
aW50NjQocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZ3ByKCksIHNjcmF0Y2gsIGNvbnN0YW50
KTsKKyAgICB9KTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOwor
ICAgIHJlc3VsdCA9IHBhdGNocG9pbnQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRl
PD4KK2Jvb2wgQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRUcnVuY1NGMzI+KEV4cHJl
c3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK3sKKyAgICBWYWx1ZSogbWF4
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1fcHJvYywgT3Jp
Z2luKCksIC1zdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCkpKTsKKyAgICBWYWx1ZSogbWluID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dEZsb2F0VmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkpOworICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5kLCBPcmlnaW4o
KSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNz
VGhhbiwgT3JpZ2luKCksIGFyZywgbWF4KSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyRXF1YWwsIE9yaWdpbigpLCBhcmcsIG1pbikpOwor
ICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBFcXVhbCwgT3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBD
aGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPiht
X3Byb2MsIENoZWNrLCBPcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOworICAgIHRyYXAtPnNldEdlbmVy
YXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICB9KTsKKyAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4obV9wcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChh
cmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICBqaXQudHJ1bmNhdGVGbG9hdFRvSW50NjQocGFyYW1zWzFdLmZw
cigpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgIH0pOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisgICAgcmVzdWx0ID0gcGF0Y2hwb2ludDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordGVtcGxhdGU8PgorYm9vbCBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6
Okk2NFRydW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQoreworICAgIFZhbHVlKiBtYXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0Rmxv
YXRWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1pbigpKSAqIC0yLjApOworICAgIFZhbHVlKiBtaW4gPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwg
LTEuMCk7CisgICAgVmFsdWUqIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIExlc3NUaGFuLCBPcmlnaW4oKSwgYXJnLCBtYXgp
LAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0
ZXJUaGFuLCBPcmlnaW4oKSwgYXJnLCBtaW4pKTsKKyAgICBvdXRPZkJvdW5kcyA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIE9yaWdpbigpLCBvdXRPZkJv
dW5kcywgemVyb0ZvclR5cGUoSTMyKSk7CisgICAgQ2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksIG91
dE9mQm91bmRzKTsKKyAgICB0cmFwLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgIGppdC5icmVha3Bv
aW50KCk7CisgICAgfSk7CisKKyAgICBWYWx1ZSogY29uc3RhbnQ7CisgICAgaWYgKGlzWDg2KCkp
IHsKKyAgICAgICAgLy8gU2luY2UgeDg2IGRvZXNuJ3QgaGF2ZSBhbiBpbnN0cnVjdGlvbiB0byBj
b252ZXJ0IGZsb2F0aW5nIHBvaW50cyB0byB1bnNpZ25lZCBpbnRlZ2Vycywgd2UgYXQgbGVhc3Qg
dHJ5IHRvIGRvIHRoZSBzbWFydCB0aGluZyBpZgorICAgICAgICAvLyB0aGUgbnVtYmVycyBhcmUg
d291bGQgYmUgcG9zaXRpdmUgYW55d2F5IGFzIGEgc2lnbmVkIGludGVnZXIuIFNpbmNlIHdlIGNh
bm5vdCBtYXRlcmlhbGl6ZSBjb25zdGFudHMgaW50byBmcHJzIHdlIGhhdmUgYjMgZG8gaXQKKyAg
ICAgICAgLy8gc28gd2UgY2FuIHBvb2wgdGhlbSBpZiBuZWVkZWQuCisgICAgICAgIGNvbnN0YW50
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1fcHJvYywgT3Jp
Z2luKCksIGJpdHdpc2VfY2FzdDxmbG9hdD4oMHg1ZjAwMDAwMCkpOworICAgIH0KKyAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmFw
cGVuZChhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIGlmIChpc1g4NigpKSB7Cisg
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjb25zdGFudCwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rl
cik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisgICAg
fQorICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgIEZQUlJl
ZyBzY3JhdGNoID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgRlBSUmVnIGNvbnN0YW50ID0gSW52
YWxpZEZQUlJlZzsKKyAgICAgICAgaWYgKGlzWDg2KCkpIHsKKyAgICAgICAgICAgIHNjcmF0Y2gg
PSBwYXJhbXMuZnBTY3JhdGNoKDApOworICAgICAgICAgICAgY29uc3RhbnQgPSBwYXJhbXNbMl0u
ZnByKCk7CisgICAgICAgIH0KKyAgICAgICAgaml0LnRydW5jYXRlRmxvYXRUb1VpbnQ2NChwYXJh
bXNbMV0uZnByKCksIHBhcmFtc1swXS5ncHIoKSwgc2NyYXRjaCwgY29uc3RhbnQpOworICAgIH0p
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgcmVzdWx0
ID0gcGF0Y2hwb2ludDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6Oldhc20KIAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9ySW5saW5lcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCAxNmQx
MzExMGZjYmUzMDFhYjI1MDUwNDg1ODE1Mzg3OTIyYzY2MDRmLi44OWIwYWIzYzI5NzA3NDUwMjY4
YTNjOTcwNzE0YzFiM2IxZWE5M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMjIxLDYgKzIyMSwxNCBAQCBib29sIEZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgIGNhc2UgT3BU
eXBlOjpJNjRDdHo6IHJldHVybiB1bmFyeUNhc2U8T3BUeXBlOjpJNjRDdHo+KCk7CiAgICAgY2Fz
ZSBPcFR5cGU6OkkzMlBvcGNudDogcmV0dXJuIHVuYXJ5Q2FzZTxPcFR5cGU6OkkzMlBvcGNudD4o
KTsKICAgICBjYXNlIE9wVHlwZTo6STY0UG9wY250OiByZXR1cm4gdW5hcnlDYXNlPE9wVHlwZTo6
STY0UG9wY250PigpOworICAgIGNhc2UgT3BUeXBlOjpJMzJUcnVuY1NGMzI6IHJldHVybiB1bmFy
eUNhc2U8T3BUeXBlOjpJMzJUcnVuY1NGMzI+KCk7CisgICAgY2FzZSBPcFR5cGU6OkkzMlRydW5j
VUYzMjogcmV0dXJuIHVuYXJ5Q2FzZTxPcFR5cGU6OkkzMlRydW5jVUYzMj4oKTsKKyAgICBjYXNl
IE9wVHlwZTo6STMyVHJ1bmNTRjY0OiByZXR1cm4gdW5hcnlDYXNlPE9wVHlwZTo6STMyVHJ1bmNT
RjY0PigpOworICAgIGNhc2UgT3BUeXBlOjpJMzJUcnVuY1VGNjQ6IHJldHVybiB1bmFyeUNhc2U8
T3BUeXBlOjpJMzJUcnVuY1VGNjQ+KCk7CisgICAgY2FzZSBPcFR5cGU6Okk2NFRydW5jU0YzMjog
cmV0dXJuIHVuYXJ5Q2FzZTxPcFR5cGU6Okk2NFRydW5jU0YzMj4oKTsKKyAgICBjYXNlIE9wVHlw
ZTo6STY0VHJ1bmNVRjMyOiByZXR1cm4gdW5hcnlDYXNlPE9wVHlwZTo6STY0VHJ1bmNVRjMyPigp
OworICAgIGNhc2UgT3BUeXBlOjpJNjRUcnVuY1NGNjQ6IHJldHVybiB1bmFyeUNhc2U8T3BUeXBl
OjpJNjRUcnVuY1NGNjQ+KCk7CisgICAgY2FzZSBPcFR5cGU6Okk2NFRydW5jVUY2NDogcmV0dXJu
IHVuYXJ5Q2FzZTxPcFR5cGU6Okk2NFRydW5jVUY2ND4oKTsKICNkZWZpbmUgQ1JFQVRFX0NBU0Uo
bmFtZSwgaWQsIGIzb3AsIGluYykgY2FzZSBPcFR5cGU6Om5hbWU6IHJldHVybiB1bmFyeUNhc2U8
T3BUeXBlOjpuYW1lPigpOwogICAgIEZPUl9FQUNIX1dBU01fU0lNUExFX1VOQVJZX09QKENSRUFU
RV9DQVNFKQogI3VuZGVmIENSRUFURV9DQVNFCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0ZjE5YzY3M2ExYzEzZTc2NGU5MTA3NTcxNzQ2
MGUzYThhYjYwMGEuLjMwZGJkNWNiNjgxMDk4NTIzMzUyOTExNTViOGZlY2ZjMmJiYjZhZmIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTYtMTItMDYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRydW5jYXRpb24gb3BlcmF0b3JzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vZnVu
Y3Rpb24tdGVzdHMvaTMyLXRydW5jLXMtZjMyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2Z1
bmN0aW9uLXRlc3RzL2kzMi10cnVuYy1zLWY2NC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9m
dW5jdGlvbi10ZXN0cy9pMzItdHJ1bmMtdS1mMzIuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20v
ZnVuY3Rpb24tdGVzdHMvaTMyLXRydW5jLXUtZjY0LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L2Z1bmN0aW9uLXRlc3RzL2k2NC10cnVuYy1zLWYzMi5qczogQWRkZWQuCisgICAgICAgICogd2Fz
bS9mdW5jdGlvbi10ZXN0cy9pNjQtdHJ1bmMtcy1mNjQuanM6IEFkZGVkLgorICAgICAgICAqIHdh
c20vZnVuY3Rpb24tdGVzdHMvaTY0LXRydW5jLXUtZjMyLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3
YXNtL2Z1bmN0aW9uLXRlc3RzL2k2NC10cnVuYy11LWY2NC5qczogQWRkZWQuCisKIDIwMTYtMTIt
MDUgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBy
ZXBvcnQgdW5leHBlY3RlZCB0b2tlbiB3aGVuICJhc3luYyIgaXMgZm9sbG93ZWQgYnkgaWRlbnRp
ZmllciAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9pMzItdHJ1bmMt
cy1mMzIuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTMyLXRydW5jLXMtZjMyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1ZThjNTE1MTY2ZWQ3OTFkOWI4MjI2ODBmNjU4NzY2ZDYwYjI3ZDkKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTMyLXRydW5jLXMt
ZjMyLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIu
anMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVu
Y3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiZjMy
Il0sIHJldDogImkzMiIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisgICAgLkkzMlRydW5jU0Yz
MigpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0o
KTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwg
dmFsdWU6ICIwLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMC4wIiB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMCIgfSwgW3sgdHlw
ZTogImYzMiIsIHZhbHVlOiAiMHgxcC0xNDkiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIt
MHgxcC0xNDkiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIxLjAiIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAi
ZjMyIiwgdmFsdWU6ICIweDEuMTk5OTlhcCswIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAi
MS41IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVl
OiAiLTEiIH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIi0xLjAiIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImYz
MiIsIHZhbHVlOiAiLTB4MS4xOTk5OWFwKzAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAi
LTEuNSIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogIi0xIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMS45IiB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiLTIiIH0sIFt7IHR5cGU6ICJm
MzIiLCB2YWx1ZTogIi0yLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBl
OiAiaTMyIiwgdmFsdWU6ICIyMTQ3NDgzNTIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIy
MTQ3NDgzNTIwLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6ICItMjE0NzQ4MzY0OCIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiLTIxNDc0
ODM2NDguMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKworICAgICAgICAgICAg
ICAgICAgICAgICApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2kz
Mi10cnVuYy1zLWY2NC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9pMzItdHJ1bmMt
cy1mNjQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJiMWRkNjhmMzA2Y2U4MTdmOTZiNzhjMTU5ZWE3ZTVlNGJi
YjhkNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9pMzIt
dHJ1bmMtcy1mNjQuanMKQEAgLTAsMCArMSwzMSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4v
QnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLlR5cGUoKS5FbmQoKQor
ICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbih7IHBhcmFt
czogWyJmNjQiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuSTMy
VHJ1bmNTRjY0KCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCiti
aW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgW1t7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6
ICJmNjQiLCB2YWx1ZTogIjAuMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0wLjAiIH1d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9
LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIweDAuMDAwMDAwMDAwMDAwMXAtMTAyMiIgfV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjAiIH0sIFt7
IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0weDAuMDAwMDAwMDAwMDAwMXAtMTAyMiIgfV1dLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjEiIH0sIFt7IHR5
cGU6ICJmNjQiLCB2YWx1ZTogIjEuMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjEiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIjB4MS4x
OTk5OTk5OTk5OTlhcCswIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTog
ImkzMiIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiMS41IiB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiLTEiIH0sIFt7
IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0xLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAi
LTB4MS4xOTk5OTk5OTk5OTlhcCswIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sg
dHlwZTogImkzMiIsIHZhbHVlOiAiLTEiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0xLjUi
IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIt
MSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTEuOSIgfV1dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIi0yIiB9LCBbeyB0eXBlOiAiZjY0Iiwg
dmFsdWU6ICItMi4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAiMjE0NzQ4MzY0NyIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiMjE0NzQ4
MzY0Ny4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAiLTIxNDc0ODM2NDgiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0yMTQ3NDgzNjQ4
LjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9pMzItdHJ1
bmMtdS1mMzIuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTMyLXRydW5jLXUtZjMy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFkYmJlZDZkYTE1MzdjMzAwNjE0NjJmOWQ3NTVlNDAzY2FkNWFlNDYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTMyLXRydW5j
LXUtZjMyLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxk
ZXIuanMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCkuRW5kKCkKKyAgICAu
RnVuY3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsi
ZjMyIl0sIHJldDogImkzMiIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisgICAgLkkzMlRydW5j
VUYzMigpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRy
aW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMy
IiwgdmFsdWU6ICIwLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAi
aTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMC4wIiB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMCIgfSwgW3sg
dHlwZTogImYzMiIsIHZhbHVlOiAiMHgxcC0xNDkiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6
ICItMHgxcC0xNDkiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIxLjAiIH1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBl
OiAiZjMyIiwgdmFsdWU6ICIweDEuMTk5OTlhcCswIiB9XV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVl
OiAiMS41IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZh
bHVlOiAiMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiMS45IiB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMiIgfSwgW3sgdHlwZTogImYz
MiIsIHZhbHVlOiAiMi4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTog
ImkzMiIsIHZhbHVlOiAiLTIxNDc0ODM2NDgiIH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIjIx
NDc0ODM2NDgiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6ICItMjU2IiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICI0Mjk0OTY3MDQwLjAiIH1d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6ICIwIiB9
LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMHgxLmNjY2NjY3AtMSIgfV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJm
MzIiLCB2YWx1ZTogIi0weDEuZmZmZmZlcC0xIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAgICApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L2Z1bmN0aW9uLXRlc3RzL2kzMi10cnVuYy11LWY2NC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlv
bi10ZXN0cy9pMzItdHJ1bmMtdS1mNjQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5NDkxODFkZmM4MDlkNDNk
NjkzZjk2ZDJjYWFiM2E4N2EwMTA1NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9m
dW5jdGlvbi10ZXN0cy9pMzItdHJ1bmMtdS1mNjQuanMKQEAgLTAsMCArMSwzMCBAQAoraW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7
CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQorICAg
IC5GdW5jdGlvbih7IHBhcmFtczogWyJmNjQiXSwgcmV0OiAiaTMyIiB9LCBbXSkKKyAgICAuR2V0
TG9jYWwoMCkKKyAgICAuSTMyVHJ1bmNVRjY0KCkKKyAgICAuRW5kKCkKKworY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpCitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmlu
LmdldCgpLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgW1t7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogIjAiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIjAuMCIgfV1dLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJmNjQi
LCB2YWx1ZTogIi0wLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAi
aTMyIiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIweDAuMDAwMDAwMDAw
MDAwMXAtMTAyMiIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIi
LCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0weDAuMDAwMDAwMDAwMDAw
MXAtMTAyMiIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2
YWx1ZTogIjEiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIjEuMCIgfV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogIjEiIH0sIFt7IHR5cGU6ICJm
NjQiLCB2YWx1ZTogIjB4MS4xOTk5OTk5OTk5OTlhcCswIiB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImY2NCIsIHZh
bHVlOiAiMS41IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIs
IHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiMS45IiB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMiIgfSwgW3sgdHlwZTog
ImY2NCIsIHZhbHVlOiAiMi4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlw
ZTogImkzMiIsIHZhbHVlOiAiLTIxNDc0ODM2NDgiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTog
IjIxNDc0ODM2NDgiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiNDI5NDk2NzI5NS4wIiB9
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMCIg
fSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTB4MS5jY2NjY2NjY2NjY2NkcC0xIiB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMCIgfSwgW3sg
dHlwZTogImY2NCIsIHZhbHVlOiAiLTB4MS5mZmZmZmZmZmZmZmZmcC0xIiB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAiMTAwMDAwMDAwIiB9LCBb
eyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIxZTgiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvaTY0LXRydW5jLXMtZjMyLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL2k2NC10cnVuYy1zLWYzMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWVkYzQ4YmExNDkxYzFiMTRk
Njc5MzZkN2ZjODA0NjEzNWVmZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1
bmN0aW9uLXRlc3RzL2k2NC10cnVuYy1zLWYzMi5qcwpAQCAtMCwwICsxLDMzIEBACitpbXBvcnQg
QnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsK
K2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAg
LkZ1bmN0aW9uKHsgcGFyYW1zOiBbImYzMiJdLCByZXQ6ICJpNjQiIH0sIFtdKQorICAgIC5HZXRM
b2NhbCgwKQorICAgIC5JNjRUcnVuY1NGMzIoKQorICAgIC5FbmQoKQorCitjb25zdCBiaW4gPSBi
LldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4u
Z2V0KCksIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBbW3sgdHlwZTogImk2NCIsIHZhbHVl
OiAiMCIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiMC4wIiB9XV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImYzMiIs
IHZhbHVlOiAiLTAuMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJp
NjQiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIjB4MXAtMTQ5IiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwg
W3sgdHlwZTogImYzMiIsIHZhbHVlOiAiLTB4MXAtMTQ5IiB9XV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImYzMiIsIHZh
bHVlOiAiMS4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIs
IHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiMHgxLjE5OTk5YXArMCIgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIjEiIH0s
IFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIjEuNSIgfV1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi0xIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6
ICItMS4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZh
bHVlOiAiLTEiIH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIi0weDEuMTk5OTlhcCswIiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiLTEiIH0s
IFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIi0xLjUiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVl
OiAiLTEuOSIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2
YWx1ZTogIi0yIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMi4wIiB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiNDI5NDk2NzI5NiIgfSwg
W3sgdHlwZTogImYzMiIsIHZhbHVlOiAiNDI5NDk2NzI5NiIgfV1dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi00Mjk0OTY3Mjk2IiB9LCBbeyB0eXBl
OiAiZjMyIiwgdmFsdWU6ICItNDI5NDk2NzI5NiIgfV1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIjkyMjMzNzE0ODcwOTg5NjE5MjAiIH0sIFt7IHR5
cGU6ICJmMzIiLCB2YWx1ZTogIjkyMjMzNzE0ODcwOTg5NjE5MjAuMCIgfV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi05MjIzMzcyMDM2ODU0Nzc1
ODA4IiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItOTIyMzM3MjAzNjg1NDc3NTgwOC4wIiB9
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorCisgICAgICAgICAgICAgICAgICAgICAg
ICk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTY0LXRydW5jLXMt
ZjY0LmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2k2NC10cnVuYy1zLWY2NC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZjhhODhjMWMzM2Y2OTM2MjNkZDMxYjA5MGUyZDc2MmRkZTZiNGExCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2k2NC10cnVuYy1zLWY2
NC5qcwpAQCAtMCwwICsxLDMzIEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpz
JworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2IuVHlwZSgpLkVuZCgpCisgICAgLkZ1bmN0
aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImY2NCJd
LCByZXQ6ICJpNjQiIH0sIFtdKQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5JNjRUcnVuY1NGNjQo
KQorICAgIC5FbmQoKQorCitjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7
Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCksIDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICBbW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImY2NCIsIHZh
bHVlOiAiMC4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIs
IHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTAuMCIgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6
ICJmNjQiLCB2YWx1ZTogIjB4MC4wMDAwMDAwMDAwMDAxcC0xMDIyIiB9XV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImY2
NCIsIHZhbHVlOiAiLTB4MC4wMDAwMDAwMDAwMDAxcC0xMDIyIiB9XV0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImY2NCIs
IHZhbHVlOiAiMS4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2
NCIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiMHgxLjE5OTk5OTk5OTk5
OWFwKzAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFs
dWU6ICIxIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIxLjUiIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImY2
NCIsIHZhbHVlOiAiLTEuMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6
ICJpNjQiLCB2YWx1ZTogIi0xIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICItMHgxLjE5OTk5
OTk5OTk5OWFwKzAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0
IiwgdmFsdWU6ICItMSIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTEuNSIgfV1dLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi0xIiB9LCBbeyB0
eXBlOiAiZjY0IiwgdmFsdWU6ICItMS45IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
W3sgdHlwZTogImk2NCIsIHZhbHVlOiAiLTIiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi0y
LjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6
ICI0Mjk0OTY3Mjk2IiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICI0Mjk0OTY3Mjk2IiB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiLTQyOTQ5
NjcyOTYiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi00Mjk0OTY3Mjk2IiB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiOTIyMzM3MjAzNjg1
NDc3NDc4NCIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiOTIyMzM3MjAzNjg1NDc3NDc4NC4w
IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAi
LTkyMjMzNzIwMzY4NTQ3NzU4MDgiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIi05MjIzMzcy
MDM2ODU0Nzc1ODA4LjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0sCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy9pNjQtdHJ1bmMtdS1mMzIuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTY0
LXRydW5jLXUtZjMyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZDllMjQzM2I3NTQ0M2I1NzQ2ZTJjNjNiZTU1
NWZkNWFiZTA5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVz
dHMvaTY0LXRydW5jLXUtZjMyLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBCdWlsZGVyIGZy
b20gJy4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCku
RW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24o
eyBwYXJhbXM6IFsiZjMyIl0sIHJldDogImk2NCIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisg
ICAgLkk2NFRydW5jVUYzMigpCisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1i
bHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIwIiB9LCBb
eyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIwLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIt
MC4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVl
OiAiMCIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiMHgxcC0xNDkiIH1dXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAi
ZjMyIiwgdmFsdWU6ICItMHgxcC0xNDkiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBb
eyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIxLjAi
IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIx
IiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIweDEuMTk5OTlhcCswIiB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMSIgfSwgW3sgdHlwZTog
ImYzMiIsIHZhbHVlOiAiMS41IiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlw
ZTogImk2NCIsIHZhbHVlOiAiNDI5NDk2NzI5NiIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAi
NDI5NDk2NzI5NiIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQi
LCB2YWx1ZTogIi0xMDk5NTExNjI3Nzc2IiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICIxODQ0
Njc0Mjk3NDE5NzkyMzg0MC4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlw
ZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImYzMiIsIHZhbHVlOiAiLTB4MS5jY2Nj
Y2NwLTEiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFs
dWU6ICIwIiB9LCBbeyB0eXBlOiAiZjMyIiwgdmFsdWU6ICItMHgxLmZmZmZmZXAtMSIgfV1dLFt7
IHR5cGU6ICJpNjQiLCB2YWx1ZTogIjAiIH0sIFt7IHR5cGU6ICJmMzIiLCB2YWx1ZTogIjAuMCIg
fV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9pNjQtdHJ1bmMtdS1m
NjQuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTY0LXRydW5jLXUtZjY0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVlNTUxNDhhNzYwOTI4NTFmYWQxODQwYjY0N2FmYTE3NjBlYzRmNTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvaTY0LXRydW5jLXUtZjY0
LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMn
CisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgIC5Db2RlKCkKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiZjY0Il0s
IHJldDogImk2NCIgfSwgW10pCisgICAgLkdldExvY2FsKDApCisgICAgLkk2NFRydW5jVUY2NCgp
CisgICAgLkVuZCgpCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKQorYmluLnRyaW0oKTsK
K3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFtbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFs
dWU6ICIwLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0Iiwg
dmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICItMC4wIiB9XV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTog
ImY2NCIsIHZhbHVlOiAiMHgwLjAwMDAwMDAwMDAwMDFwLTEwMjIiIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIwIiB9LCBbeyB0eXBlOiAiZjY0
IiwgdmFsdWU6ICItMHgwLjAwMDAwMDAwMDAwMDFwLTEwMjIiIH1dXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAiZjY0Iiwg
dmFsdWU6ICIxLjAiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0
IiwgdmFsdWU6ICIxIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIweDEuMTk5OTk5OTk5OTk5
YXArMCIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1
ZTogIjEiIH0sIFt7IHR5cGU6ICJmNjQiLCB2YWx1ZTogIjEuNSIgfV1dLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIjB4ZmZmZmZmZmYiIH0sIFt7IHR5
cGU6ICJmNjQiLCB2YWx1ZTogIjQyOTQ5NjcyOTUiIH1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIweDEwMDAwMDAwMCIgfSwgW3sgdHlwZTogImY2
NCIsIHZhbHVlOiAiNDI5NDk2NzI5NiIgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7
IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi0yMDQ4IiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIx
ODQ0Njc0NDA3MzcwOTU0OTU2OC4wIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sg
dHlwZTogImk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTB4MS5j
Y2NjY2NjY2NjY2NkcC0xIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTog
Imk2NCIsIHZhbHVlOiAiMCIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiLTB4MS5mZmZmZmZm
ZmZmZmZmcC0xIiB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImk2NCIs
IHZhbHVlOiAiMTAwMDAwMDAwIiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICIxZTgiIH1dXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTY0IiwgdmFsdWU6ICIxMDAwMDAw
MDAwMDAwMDAwMCIgfSwgW3sgdHlwZTogImY2NCIsIHZhbHVlOiAiMWUxNiIgfV1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpNjQiLCB2YWx1ZTogIi05MjIzMzcyMDM2ODU0
Nzc1ODA4IiB9LCBbeyB0eXBlOiAiZjY0IiwgdmFsdWU6ICI5MjIzMzcyMDM2ODU0Nzc1ODA4IiB9
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorCisgICAgICAgICAgICAgICAgICAgICAg
ICk7Cg==
</data>
<flag name="review"
          id="318830"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>