<?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>220323</bug_id>
          
          <creation_ts>2021-01-05 05:14:32 -0800</creation_ts>
          <short_desc>[WASM-References] Add optional default value parameter for Table.constructor, Table.grow and Table.set</short_desc>
          <delta_ts>2021-01-08 10:19:15 -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>WebAssembly</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="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717285</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-05 05:14:32 -0800</bug_when>
    <thetext>[WASM-References] Add optional default value parameter for Table.grow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717288</commentid>
    <comment_count>1</comment_count>
      <attachid>416994</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-05 05:18:34 -0800</bug_when>
    <thetext>Created attachment 416994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717434</commentid>
    <comment_count>2</comment_count>
      <attachid>416994</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-05 12:35:04 -0800</bug_when>
    <thetext>Comment on attachment 416994
Patch

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

r- since I found a bug. We also need description more about the change.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Introduce the Table.grow optional default value.

ChangeLog is super important in WebKit project.
Please add more comments about changes in ChangeLog.
We need more description about the change in particular, for feature change.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:100
&gt; +    JSValue defaultValue = callFrame-&gt;argument(1);
&gt; +    if (defaultValue.isUndefined())
&gt; +        defaultValue = jsNull();
&gt;      uint32_t oldLength = table-&gt;length();
&gt;  
&gt; -    if (!table-&gt;grow(delta))
&gt; +    if (!table-&gt;grow(delta, defaultValue))
&gt;          return JSValue::encode(throwException(globalObject, throwScope, createRangeError(globalObject, &quot;WebAssembly.Table.prototype.grow could not grow the table&quot;_s)));

I think this has a bug.
If table is function ref table, then values that can be configured to the table is limited.
Can you align the implementation to the spec&apos;s change? https://webassembly.github.io/reference-types/js-api/index.html#dom-table-grow

5. If value is missing,
5.1. Let ref be DefaultValue(elementType).
6. Otherwise,
6.1. Let ref be ? ToWebAssemblyValue(value, elementType).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717537</commentid>
    <comment_count>3</comment_count>
      <attachid>416994</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-05 16:40:08 -0800</bug_when>
    <thetext>Comment on attachment 416994
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:100
&gt;&gt;          return JSValue::encode(throwException(globalObject, throwScope, createRangeError(globalObject, &quot;WebAssembly.Table.prototype.grow could not grow the table&quot;_s)));
&gt; 
&gt; I think this has a bug.
&gt; If table is function ref table, then values that can be configured to the table is limited.
&gt; Can you align the implementation to the spec&apos;s change? https://webassembly.github.io/reference-types/js-api/index.html#dom-table-grow
&gt; 
&gt; 5. If value is missing,
&gt; 5.1. Let ref be DefaultValue(elementType).
&gt; 6. Otherwise,
&gt; 6.1. Let ref be ? ToWebAssemblyValue(value, elementType).

And can you add tests for the above thing :) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717616</commentid>
    <comment_count>4</comment_count>
      <attachid>417077</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-06 03:17:55 -0800</bug_when>
    <thetext>Created attachment 417077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717745</commentid>
    <comment_count>5</comment_count>
      <attachid>417077</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-06 12:36:58 -0800</bug_when>
    <thetext>Comment on attachment 417077
Patch

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

r=me with EWS fix. LayoutTest contain reference-types tests for Tables. expect files need to be rebaselined.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [WASM-References] Add optional default value parameter for Table.grow

Let&apos;s change the title since this patch includes constructor and Table#set support too.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp:124
&gt; +    JSValue jsWebAssemblyTableValue = JSWebAssemblyTable::tryCreate(globalObject, vm, webAssemblyTableStructure, wasmTable.releaseNonNull());

Let&apos;s just receive it as `JSWebAssemblyTable* jsWebAssemblyTableValue = ...`.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp:129
&gt; +        JSWebAssemblyTable* table = jsDynamicCast&lt;JSWebAssemblyTable*&gt;(vm, jsWebAssemblyTableValue);

Remove this line.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:98
&gt; +        return JSValue::encode(throwException(globalObject, throwScope, createTypeError(globalObject, &quot;WebAssembly.Table.prototype.grow expects the second argument to be null or an instance of WebAssembly.Function&quot;_s)));

Use `throwVMTypeError` instead.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp:101
&gt; +    if (!table-&gt;grow(delta, defaultValue))

Let&apos;s change the old code with throwVMTypeError.

&gt; JSTests/ChangeLog:3
&gt; +        [WASM-References] Add optional default value parameter for Table.grow

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717815</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-06 17:30:44 -0800</bug_when>
    <thetext>Hmmm, it seems that many imported wpt tests are failing because of WebAssembly.Table&apos;s extension. And sometimes it involves many other non-related Table tests. This is not great since it regresses the coverage of testing.
Can you import js-api tests separately from https://github.com/WebAssembly/reference-types and ensure they are passing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717872</commentid>
    <comment_count>7</comment_count>
      <attachid>417157</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-06 22:56:15 -0800</bug_when>
    <thetext>Created attachment 417157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717923</commentid>
    <comment_count>8</comment_count>
      <attachid>417172</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-07 03:23:04 -0800</bug_when>
    <thetext>Created attachment 417172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718217</commentid>
    <comment_count>9</comment_count>
      <attachid>417243</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-01-07 21:54:15 -0800</bug_when>
    <thetext>Created attachment 417243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718334</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-08 10:18:11 -0800</bug_when>
    <thetext>Committed r271303: &lt;https://trac.webkit.org/changeset/271303&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718335</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-08 10:19:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/72934842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416994</attachid>
            <date>2021-01-05 05:18:34 -0800</date>
            <delta_ts>2021-01-06 03:17:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220323-20210105201833.patch</filename>
            <type>text/plain</type>
            <size>7469</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzBiOTc5MjFlNjUwNWE0ODg5ZTI5ZWZmZTllMzQxNWRiNjgzM2ZkLi41Y2FjMjRhNmMwZTg1MzJi
ZDlhN2UyOGNiYzZiMzI1MzZjZjQ0YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0wMS0wNSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZh
dWx0IHZhbHVlIHBhcmFtZXRlciBmb3IgVGFibGUuZ3JvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUYWJsZS5ncm93IG9wdGlv
bmFsIGRlZmF1bHQgdmFsdWUuCisKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpncm93KToK
KyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpncm93KToK
KyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjEtMDEtMDUgIERtaXRyeSBCZXpoZXRza292ICA8ZGJl
emhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGRlZCBm
ZXcgdW5yZWFjaGVkLWludmFsaWQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PcGVyYXRpb25zLmNwcAppbmRleCAyOWRmODRiNTgwZjVlMTI0ZWMyYzUwYjI4YWRmNDE5
YTM2NzA1YzUzLi4wODk1MWNlMWEzNDJjZjk4ZGRhZjYyYTE5YjI5MDU4ODFiOTY2MGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC03NDUs
NyArNzQ1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UYWJsZUdy
b3csIGludDMyX3QsIChJbnN0YW5jZSogaW5zdGFuY2UsIHUKIHsKICAgICBBU1NFUlQodGFibGVJ
bmRleCA8IGluc3RhbmNlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQo
KSk7CiAgICAgYXV0byBvbGRTaXplID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5n
dGgoKTsKLSAgICBhdXRvIG5ld1NpemUgPSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmdy
b3coZGVsdGEpOworICAgIGF1dG8gbmV3U2l6ZSA9IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4
KS0+Z3JvdyhkZWx0YSwganNOdWxsKCkpOwogICAgIGlmICghbmV3U2l6ZSkKICAgICAgICAgcmV0
dXJuIC0xOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAppbmRleCBi
NzlkMzMyN2Y0NmNiNTk4OTMyODRmOWVmYTgyNjkwY2ZlOThjNjhmLi5jZmFmZDIwMzBkNmE0Mjk1
YWQwZjJlMDFlNDRjNWYzZDRhYzNiYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21UYWJsZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUmVmUHRyPFRhYmxlPiBUYWJsZTo6dHJ5Q3Jl
YXRlKHVpbnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWIKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDx1aW50MzJfdD4g
VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEpCitPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdy
b3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fb3duZXIpOwogICAgIGlmIChkZWx0YSA9PSAwKQpAQCAtMTIzLDcgKzEyMyw3IEBA
IE9wdGlvbmFsPHVpbnQzMl90PiBUYWJsZTo6Z3Jvdyh1aW50MzJfdCBkZWx0YSkKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFjaGVja2VkR3Jvdyht
X2pzVmFsdWVzLCBbXSAoV3JpdGVCYXJyaWVyPFVua25vd24+JiBzbG90KSB7IHNsb3Quc2V0U3Rh
cnRpbmdWYWx1ZShqc051bGwoKSk7IH0pKQorICAgIGlmICghY2hlY2tlZEdyb3cobV9qc1ZhbHVl
cywgW2RlZmF1bHRWYWx1ZV0gKFdyaXRlQmFycmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNl
dFN0YXJ0aW5nVmFsdWUoZGVmYXVsdFZhbHVlKTsgfSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICBzZXRMZW5ndGgobmV3TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVRhYmxlLmgKaW5kZXggNTgwZjBlZjMxYTJlNDM1NzE0ZGVmZDU0NTIxODc3MTM2ZTg0
MWFiNi4uNGI2ZDk3ZWZhNDcwNmRkYjk1ZDlkMmRjNWQyMGY5NjVjODRlMjE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0KHVpbnQzMl90LCBKU1ZhbHVlKTsKICAgICBKU1ZhbHVlIGdldCh1aW50MzJf
dCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gZ3Jvdyh1aW50MzJfdCBkZWx0YSk7
CisgICAgT3B0aW9uYWw8dWludDMyX3Q+IGdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVm
YXVsdFZhbHVlKTsKICAgICB2b2lkIGNvcHkoY29uc3QgVGFibGUqIHNyY1RhYmxlLCB1aW50MzJf
dCBkc3RJbmRleCwgdWludDMyX3Qgc3JjSW5kZXgpOwogCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKaW5kZXggMTAxODM0NzBiN2Y2NjRlODZiYmQ4MjkxYzIw
MWUwMDZiYzNhZTgyYS4uOWJjZTE0MmI4ZjdjZWFhMzU2Y2VkN2VkY2VlOTYyZWJhNDljMjhkOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
VGFibGUuY3BwCkBAIC04MSwxMSArODEsMTEgQEAgdm9pZCBKU1dlYkFzc2VtYmx5VGFibGU6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlz
T2JqZWN0LT50YWJsZSgpLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KIAotYm9vbCBKU1dl
YkFzc2VtYmx5VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEpCitib29sIEpTV2ViQXNzZW1ibHlU
YWJsZTo6Z3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpCiB7CiAgICAg
aWYgKGRlbHRhID09IDApCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiAhIW1fdGFi
bGUtPmdyb3coZGVsdGEpOworICAgIHJldHVybiAhIW1fdGFibGUtPmdyb3coZGVsdGEsIGRlZmF1
bHRWYWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJBc3NlbWJseVRhYmxlOjpnZXQodWludDMyX3Qg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlUYWJsZS5oCmluZGV4IGM3Y2MyZWJmZGRjODkzY2E1YjljZDY3NWUyZWUzNTE1ZDkxMDAwNjEu
LmRlZWEyNjE0MzczNjBkNjE5NzllYjAxNDJjMzg0Y2RhZWI1ZjU4ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFibGUtPm1heGltdW0oKTsgfQogICAgIHVpbnQzMl90IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFibGUtPmxlbmd0aCgpOyB9CiAgICAgdWludDMyX3QgYWxsb2NhdGVk
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZS0+YWxsb2NhdGVkTGVuZ3RoKGxlbmd0aCgp
KTsgfQotICAgIGJvb2wgZ3Jvdyh1aW50MzJfdCBkZWx0YSkgV0FSTl9VTlVTRURfUkVUVVJOOwor
ICAgIGJvb2wgZ3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpIFdBUk5f
VU5VU0VEX1JFVFVSTjsKICAgICBKU1ZhbHVlIGdldCh1aW50MzJfdCk7CiAgICAgdm9pZCBzZXQo
dWludDMyX3QsIFdlYkFzc2VtYmx5RnVuY3Rpb24qKTsKICAgICB2b2lkIHNldCh1aW50MzJfdCwg
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKaW5kZXgg
ODZmNGU3OGZlYTUyMTA1MTAwNjgxNTk3ZTQ1NmExODk5ZWNmYmE4MS4uMDQ3NjBkODU4N2QzZjQ0
ZDU1ZTg5MmIyZTc5MGU5ZmY2MWI5NTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTkx
LDkgKzkxLDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jR3JvdywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgdWludDMyX3QgZGVsdGEg
PSB0b05vbldyYXBwaW5nVWludDMyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAorICAgIEpTVmFsdWUgZGVmYXVsdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
KyAgICBpZiAoZGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGRlZmF1bHRWYWx1
ZSA9IGpzTnVsbCgpOwogICAgIHVpbnQzMl90IG9sZExlbmd0aCA9IHRhYmxlLT5sZW5ndGgoKTsK
IAotICAgIGlmICghdGFibGUtPmdyb3coZGVsdGEpKQorICAgIGlmICghdGFibGUtPmdyb3coZGVs
dGEsIGRlZmF1bHRWYWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93IGNvdWxkIG5vdCBncm93
IHRoZSB0YWJsZSJfcykpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
b2xkTGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDhiYTEwMTg0ZDQ1ZWI3ZjI0ZGE2MmU0MzkzZjllYThhNjU5NzZiYTcuLjc3
ZDljYmRjMDRkMzUwOGNmNTc0ZmVkMTI2MWM3ZjkzNTk1ZTNiNjIgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDEtMDUgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgb3B0aW9uYWwgZGVmYXVsdCB2YWx1ZSBwYXJh
bWV0ZXIgZm9yIFRhYmxlLmdyb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMDMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBzaW1wbGUgdGVzdCBmb3IgVGFibGUuZ3JvdyB3aXRoIG9wdGlvbmFs
IHBhcmFtZXRlci4KKworICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanM6
IEFkZGVkLgorICAgICAgICAoUGVsbWVuKToKKwogMjAyMS0wMS0wNSAgRG1pdHJ5IEJlemhldHNr
b3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNd
IEFkZGVkIGZldyB1bnJlYWNoZWQtaW52YWxpZCB0ZXN0cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3JlZmVyZW5jZXMvdGFibGVfanNfYXBpLmpzIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMv
dGFibGVfanNfYXBpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZGY0ZTk5NzQ4YTRkZTRhNzRhZDRkMTAxZmY1
NmMwMTExZmFjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy90
YWJsZV9qc19hcGkuanMKQEAgLTAsMCArMSwxMiBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUo
Ii0tdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzPXRydWUiKQoraW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7CisKKy8vIHRyaXZpYWwKK2Z1bmN0aW9uIFBlbG1lbihjYWxvcmll
cykgeworICB0aGlzLmNhbG9yaWVzID0gY2Fsb3JpZXM7Cit9CisKK2NvbnN0IHRhYmxlID0gbmV3
IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJleHRl
cm5yZWYifSk7Citjb25zdCBjYWxvcmllcyA9IDEwMDsKK3RhYmxlLmdyb3coMywgbmV3IFBlbG1l
bihjYWxvcmllcykpOworYXNzZXJ0LmVxKHRhYmxlLmdldCgxKS5jYWxvcmllcywgY2Fsb3JpZXMp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417077</attachid>
            <date>2021-01-06 03:17:55 -0800</date>
            <delta_ts>2021-01-06 22:56:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220323-20210106181753.patch</filename>
            <type>text/plain</type>
            <size>14557</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzBiOTc5MjFlNjUwNWE0ODg5ZTI5ZWZmZTllMzQxNWRiNjgzM2ZkLi44MjE5NTE0ZGQ2N2ZjODgz
ZmU2ODNkOWE2OTEyMjZkOTI0N2QwODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMS0wMS0wNSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZh
dWx0IHZhbHVlIHBhcmFtZXRlciBmb3IgVGFibGUuZ3JvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBuZXcgb3B0aW9uYWwgcGFy
YW1ldGVyICJkZWZhdWx0VmFsdWUiIGZvciBUYWJsZS5ncm93KG51bU9mRWxlbWVudHNUb0FkZCwg
W2RlZmF1bHRWYWx1ZV0pLgorICAgICAgICBJdCBpcyB1c2VkIHRvIGluaXRpYWxpemUgbmV3bHkg
YWRkZWQgdGFibGUgZWxlbWVudHMuCisgICAgICAgIEludHJvZHVjZSB0aGUgbmV3IG9wdGlvbmFs
IHBhcmFtZXRlciAiZGVmYXVsdFZhbHVlIiBmb3IgVGFibGUoe2luaXRpYWw6IE4sIGVsZW1lbnQ6
dHlwZX0sIFtkZWZhdWx0VmFsdWVdKS4KKyAgICAgICAgQWZ0ZXIgVGFibGUgaXMgY3JlYXRlZCB3
ZSBhcHBlbmQgaW5pdGlhbCB0aW1lcyBkZWZhdWx0VmFsdWUgdG8gdGFibGUgaWYgaXQgaXMgcHJl
c2VudC4KKyAgICAgICAgQWxzbyBhZGQgdHlwZSBjaGVjayBmb3IgZnVuY3JlZidzIHRhYmxlIGZv
ciBUYWJsZS5ncm93LCBUYWJsZSBjdG9yIGFuZCBUYWJsZS5zZXQuCisgICAgICAgIFNwZWM6IGh0
dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlvL3JlZmVyZW5jZS10eXBlcy9qcy1hcGkvaW5kZXgu
aHRtbCN0YWJsZXMuCisKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNt
L1dhc21UYWJsZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAgICAg
ICAgKiB3YXNtL1dhc21UYWJsZS5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseVRhYmxlOjpncm93KToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisKIDIwMjEtMDEtMDUgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNr
b3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGRlZCBmZXcgdW5y
ZWFjaGVkLWludmFsaWQgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcAppbmRleCAyOWRmODRiNTgwZjVlMTI0ZWMyYzUwYjI4YWRmNDE5YTM2NzA1
YzUzLi4wODk1MWNlMWEzNDJjZjk4ZGRhZjYyYTE5YjI5MDU4ODFiOTY2MGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCkBAIC03NDUsNyArNzQ1
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbldhc21UYWJsZUdyb3csIGlu
dDMyX3QsIChJbnN0YW5jZSogaW5zdGFuY2UsIHUKIHsKICAgICBBU1NFUlQodGFibGVJbmRleCA8
IGluc3RhbmNlLT5tb2R1bGUoKS5tb2R1bGVJbmZvcm1hdGlvbigpLnRhYmxlQ291bnQoKSk7CiAg
ICAgYXV0byBvbGRTaXplID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5sZW5ndGgoKTsK
LSAgICBhdXRvIG5ld1NpemUgPSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRleCktPmdyb3coZGVs
dGEpOworICAgIGF1dG8gbmV3U2l6ZSA9IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+Z3Jv
dyhkZWx0YSwganNOdWxsKCkpOwogICAgIGlmICghbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuIC0x
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAppbmRleCBiNzlkMzMy
N2Y0NmNiNTk4OTMyODRmOWVmYTgyNjkwY2ZlOThjNjhmLi5jZmFmZDIwMzBkNmE0Mjk1YWQwZjJl
MDFlNDRjNWYzZDRhYzNiYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJs
ZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUmVmUHRyPFRhYmxlPiBUYWJsZTo6dHJ5Q3JlYXRlKHVp
bnQzMl90IGluaXRpYWwsIE9wdGlvbmFsPHVpbnQzMl90PiBtYXhpbXVtLCBUYWIKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1PcHRpb25hbDx1aW50MzJfdD4gVGFibGU6
Omdyb3codWludDMyX3QgZGVsdGEpCitPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWlu
dDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3duZXIpOwogICAgIGlmIChkZWx0YSA9PSAwKQpAQCAtMTIzLDcgKzEyMyw3IEBAIE9wdGlv
bmFsPHVpbnQzMl90PiBUYWJsZTo6Z3Jvdyh1aW50MzJfdCBkZWx0YSkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgaWYgKCFjaGVja2VkR3JvdyhtX2pzVmFs
dWVzLCBbXSAoV3JpdGVCYXJyaWVyPFVua25vd24+JiBzbG90KSB7IHNsb3Quc2V0U3RhcnRpbmdW
YWx1ZShqc051bGwoKSk7IH0pKQorICAgIGlmICghY2hlY2tlZEdyb3cobV9qc1ZhbHVlcywgW2Rl
ZmF1bHRWYWx1ZV0gKFdyaXRlQmFycmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNldFN0YXJ0
aW5nVmFsdWUoZGVmYXVsdFZhbHVlKTsgfSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKICAgICBzZXRMZW5ndGgobmV3TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVRhYmxlLmgKaW5kZXggNTgwZjBlZjMxYTJlNDM1NzE0ZGVmZDU0NTIxODc3MTM2ZTg0MWFiNi4u
NTYxOTg3NGMxMjhjMGU1Y2RiNjE0N2M2ZGEwMWMwZmNiODI0M2MyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVRhYmxlLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAg
VGFibGVFbGVtZW50VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9v
bCBpc0V4dGVybnJlZlRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVu
dFR5cGU6OkV4dGVybnJlZjsgfQorICAgIGJvb2wgaXNGdW5jcmVmVGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZjsgfQogICAgIEZ1bmNSZWZU
YWJsZSogYXNGdW5jcmVmVGFibGUoKTsKIAogICAgIHN0YXRpYyBib29sIGlzVmFsaWRMZW5ndGgo
dWludDMyX3QgbGVuZ3RoKSB7IHJldHVybiBsZW5ndGggPCBtYXhUYWJsZUVudHJpZXM7IH0KQEAg
LTc1LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0KHVpbnQzMl90LCBKU1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGdldCh1aW50MzJfdCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDx1aW50MzJf
dD4gZ3Jvdyh1aW50MzJfdCBkZWx0YSk7CisgICAgT3B0aW9uYWw8dWludDMyX3Q+IGdyb3codWlu
dDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKTsKICAgICB2b2lkIGNvcHkoY29uc3Qg
VGFibGUqIHNyY1RhYmxlLCB1aW50MzJfdCBkc3RJbmRleCwgdWludDMyX3Qgc3JjSW5kZXgpOwog
CiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKaW5kZXggMTAx
ODM0NzBiN2Y2NjRlODZiYmQ4MjkxYzIwMWUwMDZiYzNhZTgyYS4uOWJjZTE0MmI4ZjdjZWFhMzU2
Y2VkN2VkY2VlOTYyZWJhNDljMjhkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCkBAIC04MSwxMSArODEsMTEgQEAgdm9p
ZCBKU1dlYkFzc2VtYmx5VGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT50YWJsZSgpLT52aXNpdEFnZ3JlZ2F0ZSh2
aXNpdG9yKTsKIH0KIAotYm9vbCBKU1dlYkFzc2VtYmx5VGFibGU6Omdyb3codWludDMyX3QgZGVs
dGEpCitib29sIEpTV2ViQXNzZW1ibHlUYWJsZTo6Z3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1
ZSBkZWZhdWx0VmFsdWUpCiB7CiAgICAgaWYgKGRlbHRhID09IDApCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiAhIW1fdGFibGUtPmdyb3coZGVsdGEpOworICAgIHJldHVybiAhIW1f
dGFibGUtPmdyb3coZGVsdGEsIGRlZmF1bHRWYWx1ZSk7CiB9CiAKIEpTVmFsdWUgSlNXZWJBc3Nl
bWJseVRhYmxlOjpnZXQodWludDMyX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCmluZGV4IGM3Y2MyZWJmZGRjODkzY2E1
YjljZDY3NWUyZWUzNTE1ZDkxMDAwNjEuLmRlZWEyNjE0MzczNjBkNjE5NzllYjAxNDJjMzg0Y2Rh
ZWI1ZjU4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlUYWJsZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDx1
aW50MzJfdD4gbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUtPm1heGltdW0oKTsgfQog
ICAgIHVpbnQzMl90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGUtPmxlbmd0aCgpOyB9
CiAgICAgdWludDMyX3QgYWxsb2NhdGVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZS0+
YWxsb2NhdGVkTGVuZ3RoKGxlbmd0aCgpKTsgfQotICAgIGJvb2wgZ3Jvdyh1aW50MzJfdCBkZWx0
YSkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGJvb2wgZ3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNW
YWx1ZSBkZWZhdWx0VmFsdWUpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICBKU1ZhbHVlIGdldCh1
aW50MzJfdCk7CiAgICAgdm9pZCBzZXQodWludDMyX3QsIFdlYkFzc2VtYmx5RnVuY3Rpb24qKTsK
ICAgICB2b2lkIHNldCh1aW50MzJfdCwgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCmluZGV4IDVmYmRlOTVjMTgxNTlkMjk1MDI1MzM2ZDczMzQ1
MmRiOTVlMGY2YTUuLmJhYjNiNjYzMDM3M2EyZmY2ZjQwMTc0NDJiZWUzN2ZkYjI2ZGQ2YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcApAQCAtMTIxLDcgKzEyMSwyNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJjb3VsZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5VGFibGU6OnRy
eUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCB3ZWJBc3NlbWJseVRhYmxlU3RydWN0dXJlLCB3YXNt
VGFibGUucmVsZWFzZU5vbk51bGwoKSkpKTsKKyAgICBKU1ZhbHVlIGpzV2ViQXNzZW1ibHlUYWJs
ZVZhbHVlID0gSlNXZWJBc3NlbWJseVRhYmxlOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwg
d2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisK
KyAgICBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAg
aWYgKCFkZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBKU1dlYkFzc2VtYmx5
VGFibGUqIHRhYmxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPih2bSwganNX
ZWJBc3NlbWJseVRhYmxlVmFsdWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YWJsZSk7Cisg
ICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IG51bGxwdHI7CisgICAg
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVs
bHB0cjsKKyAgICAgICAgaWYgKHRhYmxlLT50YWJsZSgpLT5pc0Z1bmNyZWZUYWJsZSgpICYmICgh
ZGVmYXVsdFZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBk
ZWZhdWx0VmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5U
YWJsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
IGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iX3MpKSk7Cisg
ICAgICAgIGZvciAodWludDMyX3QgdGFibGVJbmRleCA9IDA7IHRhYmxlSW5kZXggPCBpbml0aWFs
OyArK3RhYmxlSW5kZXgpIHsKKyAgICAgICAgICAgIGlmICh0YWJsZS0+dGFibGUoKS0+aXNGdW5j
cmVmVGFibGUoKSkKKyAgICAgICAgICAgICAgICB0YWJsZS0+c2V0KHRhYmxlSW5kZXgsIHdhc21G
dW5jdGlvbik7CisgICAgICAgICAgICBpZiAodGFibGUtPnRhYmxlKCktPmlzRXh0ZXJucmVmVGFi
bGUoKSkKKyAgICAgICAgICAgICAgICB0YWJsZS0+c2V0KHRhYmxlSW5kZXgsIGRlZmF1bHRWYWx1
ZSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1dlYkFzc2VtYmx5VGFibGVWYWx1ZSkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEpTV2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNw
cAppbmRleCA4NmY0ZTc4ZmVhNTIxMDUxMDA2ODE1OTdlNDU2YTE4OTllY2ZiYTgxLi40ZDlkYTRm
MGI1M2YwYTcwODkxYzg0YjRkNTgwN2Y0NDY1N2VlZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNw
cApAQCAtOTEsOSArOTEsMTQgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNHcm93LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICB1aW50MzJf
dCBkZWx0YSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCisgICAgSlNWYWx1ZSBkZWZhdWx0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOworICAgIGlmIChkZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgZGVm
YXVsdFZhbHVlID0ganNOdWxsKCk7CisgICAgaWYgKHRhYmxlLT50YWJsZSgpLT5pc0Z1bmNyZWZU
YWJsZSgpICYmICghZGVmYXVsdFZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5SG9zdEZ1
bmN0aW9uKHZtLCBkZWZhdWx0VmFsdWUpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBleHBlY3Rz
IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3Nl
bWJseS5GdW5jdGlvbiJfcykpKTsKICAgICB1aW50MzJfdCBvbGRMZW5ndGggPSB0YWJsZS0+bGVu
Z3RoKCk7CiAKLSAgICBpZiAoIXRhYmxlLT5ncm93KGRlbHRhKSkKKyAgICBpZiAoIXRhYmxlLT5n
cm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBu
b3QgZ3JvdyB0aGUgdGFibGUiX3MpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKG9sZExlbmd0aCkpOwpAQCAtMTI0LDYgKzEyOSw4IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICB2YWx1ZSA9IGpzTnVsbCgpOwogCiAg
ICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGJhMTAxODRkNDVlYjdmMjRkYTYyZTQzOTNmOWVhOGE2NTk3
NmJhNy4uMzRmNDc4YzlkNzRhZDgwMmM2NmYxMjg2MDNjNGQ1MTE5YThlM2E5NSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0wMS0wNSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZhdWx0IHZh
bHVlIHBhcmFtZXRlciBmb3IgVGFibGUuZ3JvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBUYWJsZS5ncm93LCBUYWJsZS5zZXQg
YW5kIFRhYmxlIGN0b3Igd2l0aCBvcHRpb25hbCBpbml0aWFsaXppbmcgcGFyYW1ldGVyLgorICAg
ICAgICBTcGVjOiBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9yZWZlcmVuY2UtdHlwZXMv
anMtYXBpL2luZGV4Lmh0bWwjdGFibGVzLgorCisgICAgICAgICogd2FzbS9yZWZlcmVuY2VzL3Rh
YmxlX2pzX2FwaS5qczogQWRkZWQuCisgICAgICAgIChQZWxtZW4pOgorCiAyMDIxLTAxLTA1ICBE
bWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dB
U00tUmVmZXJlbmNlc10gQWRkZWQgZmV3IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanMgYi9KU1Rlc3RzL3dh
c20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVhY2YzNWU4MDA3N2Uz
MmRiYzdiOThjMGVmZDkwMmNiNGVlNTM1YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2Fz
bS9yZWZlcmVuY2VzL3RhYmxlX2pzX2FwaS5qcwpAQCAtMCwwICsxLDgwIEBACisvL0AgcnVuV2Vi
QXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0g
ZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsKKworLy8gdHJpdmlhbAorZnVuY3Rpb24gUGVsbWVu
KGNhbG9yaWVzKSB7CisgIHRoaXMuY2Fsb3JpZXMgPSBjYWxvcmllczsKK30KK2NvbnN0IGNhbG9y
aWVzID0gMTAwOworCitmdW5jdGlvbiB0ZXN0VGFibGVHcm93Rm9yRXh0ZXJucmVmVGFibGVzKCkg
eworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxLCBtYXhp
bXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJucmVmIn0pOworICB0YWJsZS5ncm93KDMsIG5ldyBQZWxt
ZW4oY2Fsb3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgxKS5jYWxvcmllcywgY2Fsb3Jp
ZXMpOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDIpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFz
c2VydC5lcSh0YWJsZS5nZXQoMykuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gdGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0IHRhYmxlID0g
bmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJm
dW5jcmVmIn0pOworICBjb25zdCBjYWxvcmllcyA9IDEwMDsKKyAgYXNzZXJ0LnRocm93cygoKSA9
PiB0YWJsZS5ncm93KDMsIG5ldyBQZWxtZW4oY2Fsb3JpZXMpKSwgRXJyb3IsICJXZWJBc3NlbWJs
eS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUg
bnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiIpOworCisgIHRhYmxl
Lmdyb3coMywgbnVsbCk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMSksIG51bGwpOworICBhc3Nl
cnQuZXEodGFibGUuZ2V0KDIpLCBudWxsKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgzKSwgbnVs
bCk7CisKKyAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCBpbnN0YW50aWF0ZShgKG1vZHVsZSAoZnVu
YyAoZXhwb3J0ICJmb28iKSkpYCwge30sIHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKyAgdGFi
bGUuZ3JvdygzLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQo
NCksIGluc3RhbmNlLmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCg1KSwgaW5z
dGFuY2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDYpLCBpbnN0YW5jZS5l
eHBvcnRzLmZvbyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRXh0ZXJu
cmVmVGFibGVzKCkgeworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5p
dGlhbDozLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxtZW4oY2Fs
b3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3JpZXMpOwor
ICBhc3NlcnQuZXEodGFibGUuZ2V0KDEpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5l
cSh0YWJsZS5nZXQoMikuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKKyAgYXNzZXJ0LnRocm93cygoKSA9
PiB0YWJsZS5nZXQoMyksIFJhbmdlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUu
Z2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUi
KTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFRhYmxlQ29uc3RydWN0b3JGb3JGdW5jcmVmVGFi
bGVzKCkgeworICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKGAobW9kdWxlIChm
dW5jIChleHBvcnQgImZvbyIpKSlgLCB7fSwge3JlZmVyZW5jZV90eXBlczogdHJ1ZX0pOworICBj
b25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEw
LCBlbGVtZW50OiAiZnVuY3JlZiJ9LCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisgIGFzc2VydC5l
cSh0YWJsZS5nZXQoMCksIGluc3RhbmNlLmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxl
LmdldCgxKSwgaW5zdGFuY2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDIp
LCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2Vi
QXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MywgbWF4aW11bToxMCwgZWxlbWVudDogImZ1bmNyZWYi
fSwge30pLCBUeXBlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuY29uc3RydWN0
b3IgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ug
b2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iKTsKK30KKworZnVuY3Rpb24gdGVzdFRhYmxlU2V0Rm9y
RXh0ZXJucmVmVGFibGVzKCkgeworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJs
ZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxt
ZW4oY2Fsb3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3Jp
ZXMpOworCisgIHRhYmxlLnNldCgwKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwgbnVsbCk7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RUYWJsZVNldEZvckZ1bmNyZWZUYWJsZXMoKSB7Cisg
IGNvbnN0IGluc3RhbmNlID0gYXdhaXQgaW5zdGFudGlhdGUoYChtb2R1bGUgKGZ1bmMgKGV4cG9y
dCAiZm9vIikpKWAsIHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisgIGNvbnN0IHRhYmxl
ID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjMsIG1heGltdW06MTAsIGVsZW1lbnQ6
ICJmdW5jcmVmIn0pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBudWxsKTsKKworICB0YWJs
ZS5zZXQoMCwgaW5zdGFuY2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDAp
LCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJsZS5z
ZXQoMCwge30pLCBUeXBlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4
cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdl
YkFzc2VtYmx5LkZ1bmN0aW9uIik7Cit9CisKK3Rlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJs
ZXMoKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMoKSk7
CisKK3Rlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRXh0ZXJucmVmVGFibGVzKCk7Cithc3NlcnQuYXN5
bmNUZXN0KHRlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRnVuY3JlZlRhYmxlcygpKTsKKwordGVzdFRh
YmxlU2V0Rm9yRXh0ZXJucmVmVGFibGVzKCk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RUYWJsZVNl
dEZvckZ1bmNyZWZUYWJsZXMoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417157</attachid>
            <date>2021-01-06 22:56:15 -0800</date>
            <delta_ts>2021-01-07 03:22:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220323-20210107135613.patch</filename>
            <type>text/plain</type>
            <size>18940</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzBiOTc5MjFlNjUwNWE0ODg5ZTI5ZWZmZTllMzQxNWRiNjgzM2ZkLi43ODA2Y2M3OWFiZGYzZmQx
OGJmYWEwMzdlOWJlMTNlYmJhMDhjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wMS0wNiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZh
dWx0IHZhbHVlIHBhcmFtZXRlciBmb3IgVGFibGUuY29uc3RydWN0b3IsIFRhYmxlLmdyb3cgYW5k
IFRhYmxlLnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBuZXcgb3B0aW9uYWwgcGFyYW1ldGVyICJkZWZhdWx0VmFsdWUiIGZv
ciBUYWJsZS5ncm93KG51bU9mRWxlbWVudHNUb0FkZCwgW2RlZmF1bHRWYWx1ZV0pLgorICAgICAg
ICBJdCBpcyB1c2VkIHRvIGluaXRpYWxpemUgbmV3bHkgYWRkZWQgdGFibGUgZWxlbWVudHMuCisg
ICAgICAgIEludHJvZHVjZSB0aGUgbmV3IG9wdGlvbmFsIHBhcmFtZXRlciAiZGVmYXVsdFZhbHVl
IiBmb3IgVGFibGUoe2luaXRpYWw6IE4sIGVsZW1lbnQ6dHlwZX0sIFtkZWZhdWx0VmFsdWVdKS4K
KyAgICAgICAgQWZ0ZXIgVGFibGUgaXMgY3JlYXRlZCB3ZSBhcHBlbmQgaW5pdGlhbCB0aW1lcyBk
ZWZhdWx0VmFsdWUgdG8gdGFibGUgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgQWxzbyBhZGQg
dHlwZSBjaGVjayBmb3IgZnVuY3JlZidzIHRhYmxlIGZvciBUYWJsZS5ncm93LCBUYWJsZSBjdG9y
IGFuZCBUYWJsZS5zZXQuCisgICAgICAgIFNwZWM6IGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHVi
LmlvL3JlZmVyZW5jZS10eXBlcy9qcy1hcGkvaW5kZXguaHRtbCN0YWJsZXMuCisKKyAgICAgICAg
KiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6aXNGdW5jcmVmVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseVRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorCiAyMDIxLTAxLTA1ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRi
ZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkZWQg
ZmV3IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggMjlkZjg0YjU4MGY1ZTEyNGVjMmM1MGIyOGFkZjQx
OWEzNjcwNWM1My4uMDg5NTFjZTFhMzQyY2Y5OGRkYWY2MmExOWIyOTA1ODgxYjk2NjBmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNzQ1
LDcgKzc0NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGFibGVH
cm93LCBpbnQzMl90LCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1CiB7CiAgICAgQVNTRVJUKHRhYmxl
SW5kZXggPCBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpOwogICAgIGF1dG8gb2xkU2l6ZSA9IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVu
Z3RoKCk7Ci0gICAgYXV0byBuZXdTaXplID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5n
cm93KGRlbHRhKTsKKyAgICBhdXRvIG5ld1NpemUgPSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRl
eCktPmdyb3coZGVsdGEsIGpzTnVsbCgpKTsKICAgICBpZiAoIW5ld1NpemUpCiAgICAgICAgIHJl
dHVybiAtMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXgg
Yjc5ZDMzMjdmNDZjYjU5ODkzMjg0ZjllZmE4MjY5MGNmZTk4YzY4Zi4uY2ZhZmQyMDMwZDZhNDI5
NWFkMGYyZTAxZTQ0YzVmM2Q0YWMzYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNy
ZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFiCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8dWludDMyX3Q+
IFRhYmxlOjpncm93KHVpbnQzMl90IGRlbHRhKQorT3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX293bmVyKTsKICAgICBpZiAoZGVsdGEgPT0gMCkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIGlmICghY2hlY2tlZEdyb3co
bV9qc1ZhbHVlcywgW10gKFdyaXRlQmFycmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNldFN0
YXJ0aW5nVmFsdWUoanNOdWxsKCkpOyB9KSkKKyAgICBpZiAoIWNoZWNrZWRHcm93KG1fanNWYWx1
ZXMsIFtkZWZhdWx0VmFsdWVdIChXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHNsb3QpIHsgc2xvdC5z
ZXRTdGFydGluZ1ZhbHVlKGRlZmF1bHRWYWx1ZSk7IH0pKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgc2V0TGVuZ3RoKG5ld0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5oCmluZGV4IDU4MGYwZWYzMWEyZTQzNTcxNGRlZmQ1NDUyMTg3NzEzNmU4
NDFhYjYuLjU2MTk4NzRjMTI4YzBlNWNkYjYxNDdjNmRhMDFjMGZjYjgyNDNjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoK
IAogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgIGJvb2wgaXNFeHRlcm5yZWZUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUYWJs
ZUVsZW1lbnRUeXBlOjpFeHRlcm5yZWY7IH0KKyAgICBib29sIGlzRnVuY3JlZlRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWY7IH0KICAgICBG
dW5jUmVmVGFibGUqIGFzRnVuY3JlZlRhYmxlKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
TGVuZ3RoKHVpbnQzMl90IGxlbmd0aCkgeyByZXR1cm4gbGVuZ3RoIDwgbWF4VGFibGVFbnRyaWVz
OyB9CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldCh1aW50MzJfdCwgSlNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBnZXQodWludDMyX3QpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGdyb3codWludDMyX3QgZGVsdGEpOworICAgIE9wdGlvbmFsPHVpbnQzMl90PiBn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSk7CiAgICAgdm9pZCBjb3B5
KGNvbnN0IFRhYmxlKiBzcmNUYWJsZSwgdWludDMyX3QgZHN0SW5kZXgsIHVpbnQzMl90IHNyY0lu
ZGV4KTsKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCmlu
ZGV4IDEwMTgzNDcwYjdmNjY0ZTg2YmJkODI5MWMyMDFlMDA2YmMzYWU4MmEuLjliY2UxNDJiOGY3
Y2VhYTM1NmNlZDdlZGNlZTk2MmViYTQ5YzI4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApAQCAtODEsMTEgKzgxLDEx
IEBAIHZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+dGFibGUoKS0+dmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKLWJvb2wgSlNXZWJBc3NlbWJseVRhYmxlOjpncm93KHVpbnQz
Ml90IGRlbHRhKQorYm9vbCBKU1dlYkFzc2VtYmx5VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEs
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIGlmIChkZWx0YSA9PSAwKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhKTsKKyAgICByZXR1
cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
V2ViQXNzZW1ibHlUYWJsZTo6Z2V0KHVpbnQzMl90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCBjN2NjMmViZmRk
Yzg5M2NhNWI5Y2Q2NzVlMmVlMzUxNWQ5MTAwMDYxLi5kZWVhMjYxNDM3MzYwZDYxOTc5ZWIwMTQy
YzM4NGNkYWViNWY1OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVt
KCk7IH0KICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5n
dGgoKTsgfQogICAgIHVpbnQzMl90IGFsbG9jYXRlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFibGUtPmFsbG9jYXRlZExlbmd0aChsZW5ndGgoKSk7IH0KLSAgICBib29sIGdyb3codWludDMy
X3QgZGVsdGEpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIGdyb3codWludDMyX3QgZGVs
dGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgSlNWYWx1
ZSBnZXQodWludDMyX3QpOwogICAgIHZvaWQgc2V0KHVpbnQzMl90LCBXZWJBc3NlbWJseUZ1bmN0
aW9uKik7CiAgICAgdm9pZCBzZXQodWludDMyX3QsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA1ZmJkZTk1YzE4MTU5ZDI5NTAyNTMz
NmQ3MzM0NTJkYjk1ZTBmNmE1Li5iNzk4ZDZmMGQ3MDA3NWU5MWE4MmVmODQ5NTE1NjA5YjM4NjYx
ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmoKICAgICB7CiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2Vt
Ymx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRv
IGJlIGFuIG9iamVjdCJfcyk7CiAgICAgICAgIG1lbW9yeURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNP
YmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCkBAIC04MSw3ICs4MSw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImV4dGVybnJl
ZiIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RXh0ZXJucmVm
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0
byBiZSB0aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcykpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldl
YkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0aGUgc3Ry
aW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcyk7CiAgICAgfQogCiAgICAgSWRlbnRpZmll
ciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwpA
QCAtMTA5LDE5ICsxMDksMzMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgbWF4
aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBtYXhTaXplVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgICAgIGlmIChpbml0aWFsID4gKm1heGltdW0pIHsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LAotICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiJ21heGlt
dW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlh
bCcgcHJvcGVydHkiX3MpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWwgPiAqbWF4
aW11bSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICInbWF4aW11bScgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcyk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKGluaXRpYWws
IG1heGltdW0sIHR5cGUpOwotICAgIGlmICghd2FzbVRhYmxlKSB7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLAot
ICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CisgICAgaWYgKCF3YXNtVGFibGUpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJjb3VsZG4ndCBjcmVhdGUg
VGFibGUiX3MpOworCisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiBqc1dlYkFzc2VtYmx5VGFibGUg
PSBKU1dlYkFzc2VtYmx5VGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCB3ZWJBc3Nl
bWJseVRhYmxlU3RydWN0dXJlLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIEpT
VmFsdWUgZGVmYXVsdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgIWRlZmF1bHRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IG51
bGxwdHI7CisgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGpzV2ViQXNzZW1ibHlUYWJsZS0+dGFibGUo
KS0+aXNGdW5jcmVmVGFibGUoKSAmJiAoIWRlZmF1bHRWYWx1ZS5pc051bGwoKSAmJiAhaXNXZWJB
c3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZGVmYXVsdFZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21X
cmFwcGVyRnVuY3Rpb24pKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0
YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CisgICAgICAgIGZvciAodWludDMyX3Qg
dGFibGVJbmRleCA9IDA7IHRhYmxlSW5kZXggPCBpbml0aWFsOyArK3RhYmxlSW5kZXgpIHsKKyAg
ICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxlKCktPmlzRnVuY3JlZlRhYmxl
KCkpCisgICAgICAgICAgICAgICAganNXZWJBc3NlbWJseVRhYmxlLT5zZXQodGFibGVJbmRleCwg
d2FzbUZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxl
KCktPmlzRXh0ZXJucmVmVGFibGUoKSkKKyAgICAgICAgICAgICAgICBqc1dlYkFzc2VtYmx5VGFi
bGUtPnNldCh0YWJsZUluZGV4LCBkZWZhdWx0VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgfQogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNXZWJBc3NlbWJseVRhYmxlOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgd2ViQXNzZW1i
bHlUYWJsZVN0cnVjdHVyZSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1dlYkFzc2VtYmx5
VGFibGUpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYmx5
VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKaW5kZXggODZmNGU3OGZlYTUyMTA1MTAwNjgxNTk3ZTQ1NmExODk5ZWNm
YmE4MS4uMGEzMWViZDM2MzE3NGU1ZjZjNDY3NWUwODAwNzEyMzdhYmY1YTQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKQEAgLTkxLDEwICs5MSwxNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3csIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKKyAgICBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKGRlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBkZWZhdWx0VmFsdWUgPSBqc051bGwoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgdGFibGUtPnRhYmxlKCktPmlzRnVuY3JlZlRhYmxl
KCkgJiYgKCFkZWZhdWx0VmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24odm0sIGRlZmF1bHRWYWx1ZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3Jv
dyBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBv
ZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CiAgICAgdWludDMyX3Qgb2xkTGVuZ3RoID0gdGFi
bGUtPmxlbmd0aCgpOwogCi0gICAgaWYgKCF0YWJsZS0+Z3JvdyhkZWx0YSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlLnBy
b3RvdHlwZS5ncm93IGNvdWxkIG5vdCBncm93IHRoZSB0YWJsZSJfcykpKTsKKyAgICBpZiAoIXRh
YmxlLT5ncm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUucHJv
dG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhlIHRhYmxlIl9zKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2xkTGVuZ3RoKSk7CiB9CkBAIC0xMTAsNyArMTE1LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3Jh
cHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
IChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0
cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
IldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3Mg
dGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRhYmxlLT5nZXQoaW5kZXgpKTsKIH0KQEAgLTEyNCwxOCArMTI5LDIwIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICB2YWx1ZSA9IGpz
TnVsbCgpOwogCiAgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChpbmRleCA+PSB0YWJs
ZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxl
c3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRh
YmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3Ro
IG9mIHRoZSB0YWJsZSJfcyk7CiAKICAgICBpZiAodGFibGUtPnRhYmxlKCktPmFzRnVuY3JlZlRh
YmxlKCkpIHsKICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0gbnVs
bHB0cjsKICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVu
Y3Rpb24gPSBudWxscHRyOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1
bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJn
dW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJf
cykpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUg
c2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHku
RnVuY3Rpb24iX3MpOwogCiAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAg
IHRhYmxlLT5jbGVhcihpbmRleCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiYTEwMTg0ZDQ1ZWI3ZjI0ZGE2MmU0MzkzZjllYThhNjU5
NzZiYTcuLjAxZTU4ZWFmNmQ5ZmQzNjRjZjU4YjIzYTg4Yjg3YWNlNzRlYzNjODQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjEtMDEtMDYgIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlh
LmNvbT4KKworICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGQgb3B0aW9uYWwgZGVmYXVsdCB2
YWx1ZSBwYXJhbWV0ZXIgZm9yIFRhYmxlLmNvbnN0cnVjdG9yLCBUYWJsZS5ncm93IGFuZCBUYWJs
ZS5zZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0cyBmb3IgVGFibGUuZ3JvdywgVGFibGUuc2V0IGFuZCBUYWJsZSBjdG9yIHdpdGggb3B0
aW9uYWwgaW5pdGlhbGl6aW5nIHBhcmFtZXRlci4KKyAgICAgICAgU3BlYzogaHR0cHM6Ly93ZWJh
c3NlbWJseS5naXRodWIuaW8vcmVmZXJlbmNlLXR5cGVzL2pzLWFwaS9pbmRleC5odG1sI3RhYmxl
cy4KKworICAgICAgICAqIHdhc20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanM6IEFkZGVkLgor
ICAgICAgICAoUGVsbWVuKToKKyAgICAgICAgKHRlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJs
ZXMpOgorICAgICAgICAoYXN5bmMgdGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMpOgorICAg
ICAgICAodGVzdFRhYmxlQ29uc3RydWN0b3JGb3JFeHRlcm5yZWZUYWJsZXMpOgorICAgICAgICAo
YXN5bmMgdGVzdFRhYmxlQ29uc3RydWN0b3JGb3JGdW5jcmVmVGFibGVzKToKKyAgICAgICAgKGFz
eW5jIHRlc3RUYWJsZVNldEZvckZ1bmNyZWZUYWJsZXMpOgorCiAyMDIxLTAxLTA1ICBEbWl0cnkg
QmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVm
ZXJlbmNlc10gQWRkZWQgZmV3IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanMgYi9KU1Rlc3RzL3dhc20vcmVm
ZXJlbmNlcy90YWJsZV9qc19hcGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVhY2YzNWU4MDA3N2UzMmRiYzdi
OThjMGVmZDkwMmNiNGVlNTM1YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZl
cmVuY2VzL3RhYmxlX2pzX2FwaS5qcwpAQCAtMCwwICsxLDgwIEBACisvL0AgcnVuV2ViQXNzZW1i
bHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAi
Li4vd2FidC13cmFwcGVyLmpzIjsKKworLy8gdHJpdmlhbAorZnVuY3Rpb24gUGVsbWVuKGNhbG9y
aWVzKSB7CisgIHRoaXMuY2Fsb3JpZXMgPSBjYWxvcmllczsKK30KK2NvbnN0IGNhbG9yaWVzID0g
MTAwOworCitmdW5jdGlvbiB0ZXN0VGFibGVHcm93Rm9yRXh0ZXJucmVmVGFibGVzKCkgeworICBj
b25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxLCBtYXhpbXVtOjEw
LCBlbGVtZW50OiAiZXh0ZXJucmVmIn0pOworICB0YWJsZS5ncm93KDMsIG5ldyBQZWxtZW4oY2Fs
b3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgxKS5jYWxvcmllcywgY2Fsb3JpZXMpOwor
ICBhc3NlcnQuZXEodGFibGUuZ2V0KDIpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5l
cSh0YWJsZS5nZXQoMykuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKK30KKworYXN5bmMgZnVuY3Rpb24g
dGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0IHRhYmxlID0gbmV3IFdl
YkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJmdW5jcmVm
In0pOworICBjb25zdCBjYWxvcmllcyA9IDEwMDsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJs
ZS5ncm93KDMsIG5ldyBQZWxtZW4oY2Fsb3JpZXMpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5UYWJs
ZS5wcm90b3R5cGUuZ3JvdyBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBv
ciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiIpOworCisgIHRhYmxlLmdyb3co
MywgbnVsbCk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMSksIG51bGwpOworICBhc3NlcnQuZXEo
dGFibGUuZ2V0KDIpLCBudWxsKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgzKSwgbnVsbCk7CisK
KyAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCBpbnN0YW50aWF0ZShgKG1vZHVsZSAoZnVuYyAoZXhw
b3J0ICJmb28iKSkpYCwge30sIHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKyAgdGFibGUuZ3Jv
dygzLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoNCksIGlu
c3RhbmNlLmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCg1KSwgaW5zdGFuY2Uu
ZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDYpLCBpbnN0YW5jZS5leHBvcnRz
LmZvbyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRXh0ZXJucmVmVGFi
bGVzKCkgeworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoz
LCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxtZW4oY2Fsb3JpZXMp
KTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3JpZXMpOworICBhc3Nl
cnQuZXEodGFibGUuZ2V0KDEpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5lcSh0YWJs
ZS5nZXQoMikuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJs
ZS5nZXQoMyksIFJhbmdlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4
cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUiKTsKK30K
KworYXN5bmMgZnVuY3Rpb24gdGVzdFRhYmxlQ29uc3RydWN0b3JGb3JGdW5jcmVmVGFibGVzKCkg
eworICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKGAobW9kdWxlIChmdW5jIChl
eHBvcnQgImZvbyIpKSlgLCB7fSwge3JlZmVyZW5jZV90eXBlczogdHJ1ZX0pOworICBjb25zdCB0
YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEwLCBlbGVt
ZW50OiAiZnVuY3JlZiJ9LCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJs
ZS5nZXQoMCksIGluc3RhbmNlLmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgx
KSwgaW5zdGFuY2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDIpLCBpbnN0
YW5jZS5leHBvcnRzLmZvbyk7CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuVGFibGUoe2luaXRpYWw6MywgbWF4aW11bToxMCwgZWxlbWVudDogImZ1bmNyZWYifSwge30p
LCBUeXBlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgZXhw
ZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2Vi
QXNzZW1ibHkuRnVuY3Rpb24iKTsKK30KKworZnVuY3Rpb24gdGVzdFRhYmxlU2V0Rm9yRXh0ZXJu
cmVmVGFibGVzKCkgeworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5p
dGlhbDozLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxtZW4oY2Fs
b3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3JpZXMpOwor
CisgIHRhYmxlLnNldCgwKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwgbnVsbCk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHRlc3RUYWJsZVNldEZvckZ1bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0
IGluc3RhbmNlID0gYXdhaXQgaW5zdGFudGlhdGUoYChtb2R1bGUgKGZ1bmMgKGV4cG9ydCAiZm9v
IikpKWAsIHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisgIGNvbnN0IHRhYmxlID0gbmV3
IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjMsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJmdW5j
cmVmIn0pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBudWxsKTsKKworICB0YWJsZS5zZXQo
MCwgaW5zdGFuY2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBpbnN0
YW5jZS5leHBvcnRzLmZvbyk7CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJsZS5zZXQoMCwg
e30pLCBUeXBlRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMg
dGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdlYkFzc2Vt
Ymx5LkZ1bmN0aW9uIik7Cit9CisKK3Rlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJsZXMoKTsK
K2Fzc2VydC5hc3luY1Rlc3QodGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMoKSk7CisKK3Rl
c3RUYWJsZUNvbnN0cnVjdG9yRm9yRXh0ZXJucmVmVGFibGVzKCk7Cithc3NlcnQuYXN5bmNUZXN0
KHRlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRnVuY3JlZlRhYmxlcygpKTsKKwordGVzdFRhYmxlU2V0
Rm9yRXh0ZXJucmVmVGFibGVzKCk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RUYWJsZVNldEZvckZ1
bmNyZWZUYWJsZXMoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417172</attachid>
            <date>2021-01-07 03:23:04 -0800</date>
            <delta_ts>2021-01-07 21:54:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220323-20210107182303.patch</filename>
            <type>text/plain</type>
            <size>18979</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzBiOTc5MjFlNjUwNWE0ODg5ZTI5ZWZmZTllMzQxNWRiNjgzM2ZkLi43ODA2Y2M3OWFiZGYzZmQx
OGJmYWEwMzdlOWJlMTNlYmJhMDhjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wMS0wNiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZh
dWx0IHZhbHVlIHBhcmFtZXRlciBmb3IgVGFibGUuY29uc3RydWN0b3IsIFRhYmxlLmdyb3cgYW5k
IFRhYmxlLnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBuZXcgb3B0aW9uYWwgcGFyYW1ldGVyICJkZWZhdWx0VmFsdWUiIGZv
ciBUYWJsZS5ncm93KG51bU9mRWxlbWVudHNUb0FkZCwgW2RlZmF1bHRWYWx1ZV0pLgorICAgICAg
ICBJdCBpcyB1c2VkIHRvIGluaXRpYWxpemUgbmV3bHkgYWRkZWQgdGFibGUgZWxlbWVudHMuCisg
ICAgICAgIEludHJvZHVjZSB0aGUgbmV3IG9wdGlvbmFsIHBhcmFtZXRlciAiZGVmYXVsdFZhbHVl
IiBmb3IgVGFibGUoe2luaXRpYWw6IE4sIGVsZW1lbnQ6dHlwZX0sIFtkZWZhdWx0VmFsdWVdKS4K
KyAgICAgICAgQWZ0ZXIgVGFibGUgaXMgY3JlYXRlZCB3ZSBhcHBlbmQgaW5pdGlhbCB0aW1lcyBk
ZWZhdWx0VmFsdWUgdG8gdGFibGUgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgQWxzbyBhZGQg
dHlwZSBjaGVjayBmb3IgZnVuY3JlZidzIHRhYmxlIGZvciBUYWJsZS5ncm93LCBUYWJsZSBjdG9y
IGFuZCBUYWJsZS5zZXQuCisgICAgICAgIFNwZWM6IGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHVi
LmlvL3JlZmVyZW5jZS10eXBlcy9qcy1hcGkvaW5kZXguaHRtbCN0YWJsZXMuCisKKyAgICAgICAg
KiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6aXNGdW5jcmVmVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseVRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorCiAyMDIxLTAxLTA1ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRi
ZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkZWQg
ZmV3IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggMjlkZjg0YjU4MGY1ZTEyNGVjMmM1MGIyOGFkZjQx
OWEzNjcwNWM1My4uMDg5NTFjZTFhMzQyY2Y5OGRkYWY2MmExOWIyOTA1ODgxYjk2NjBmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNzQ1
LDcgKzc0NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGFibGVH
cm93LCBpbnQzMl90LCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1CiB7CiAgICAgQVNTRVJUKHRhYmxl
SW5kZXggPCBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpOwogICAgIGF1dG8gb2xkU2l6ZSA9IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVu
Z3RoKCk7Ci0gICAgYXV0byBuZXdTaXplID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5n
cm93KGRlbHRhKTsKKyAgICBhdXRvIG5ld1NpemUgPSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRl
eCktPmdyb3coZGVsdGEsIGpzTnVsbCgpKTsKICAgICBpZiAoIW5ld1NpemUpCiAgICAgICAgIHJl
dHVybiAtMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXgg
Yjc5ZDMzMjdmNDZjYjU5ODkzMjg0ZjllZmE4MjY5MGNmZTk4YzY4Zi4uY2ZhZmQyMDMwZDZhNDI5
NWFkMGYyZTAxZTQ0YzVmM2Q0YWMzYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNy
ZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFiCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8dWludDMyX3Q+
IFRhYmxlOjpncm93KHVpbnQzMl90IGRlbHRhKQorT3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX293bmVyKTsKICAgICBpZiAoZGVsdGEgPT0gMCkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIGlmICghY2hlY2tlZEdyb3co
bV9qc1ZhbHVlcywgW10gKFdyaXRlQmFycmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNldFN0
YXJ0aW5nVmFsdWUoanNOdWxsKCkpOyB9KSkKKyAgICBpZiAoIWNoZWNrZWRHcm93KG1fanNWYWx1
ZXMsIFtkZWZhdWx0VmFsdWVdIChXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHNsb3QpIHsgc2xvdC5z
ZXRTdGFydGluZ1ZhbHVlKGRlZmF1bHRWYWx1ZSk7IH0pKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgc2V0TGVuZ3RoKG5ld0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5oCmluZGV4IDU4MGYwZWYzMWEyZTQzNTcxNGRlZmQ1NDUyMTg3NzEzNmU4
NDFhYjYuLjU2MTk4NzRjMTI4YzBlNWNkYjYxNDdjNmRhMDFjMGZjYjgyNDNjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoK
IAogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgIGJvb2wgaXNFeHRlcm5yZWZUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUYWJs
ZUVsZW1lbnRUeXBlOjpFeHRlcm5yZWY7IH0KKyAgICBib29sIGlzRnVuY3JlZlRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWY7IH0KICAgICBG
dW5jUmVmVGFibGUqIGFzRnVuY3JlZlRhYmxlKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
TGVuZ3RoKHVpbnQzMl90IGxlbmd0aCkgeyByZXR1cm4gbGVuZ3RoIDwgbWF4VGFibGVFbnRyaWVz
OyB9CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldCh1aW50MzJfdCwgSlNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBnZXQodWludDMyX3QpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGdyb3codWludDMyX3QgZGVsdGEpOworICAgIE9wdGlvbmFsPHVpbnQzMl90PiBn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSk7CiAgICAgdm9pZCBjb3B5
KGNvbnN0IFRhYmxlKiBzcmNUYWJsZSwgdWludDMyX3QgZHN0SW5kZXgsIHVpbnQzMl90IHNyY0lu
ZGV4KTsKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCmlu
ZGV4IDEwMTgzNDcwYjdmNjY0ZTg2YmJkODI5MWMyMDFlMDA2YmMzYWU4MmEuLjliY2UxNDJiOGY3
Y2VhYTM1NmNlZDdlZGNlZTk2MmViYTQ5YzI4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApAQCAtODEsMTEgKzgxLDEx
IEBAIHZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+dGFibGUoKS0+dmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKLWJvb2wgSlNXZWJBc3NlbWJseVRhYmxlOjpncm93KHVpbnQz
Ml90IGRlbHRhKQorYm9vbCBKU1dlYkFzc2VtYmx5VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEs
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIGlmIChkZWx0YSA9PSAwKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhKTsKKyAgICByZXR1
cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
V2ViQXNzZW1ibHlUYWJsZTo6Z2V0KHVpbnQzMl90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCBjN2NjMmViZmRk
Yzg5M2NhNWI5Y2Q2NzVlMmVlMzUxNWQ5MTAwMDYxLi5kZWVhMjYxNDM3MzYwZDYxOTc5ZWIwMTQy
YzM4NGNkYWViNWY1OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVt
KCk7IH0KICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5n
dGgoKTsgfQogICAgIHVpbnQzMl90IGFsbG9jYXRlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFibGUtPmFsbG9jYXRlZExlbmd0aChsZW5ndGgoKSk7IH0KLSAgICBib29sIGdyb3codWludDMy
X3QgZGVsdGEpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIGdyb3codWludDMyX3QgZGVs
dGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgSlNWYWx1
ZSBnZXQodWludDMyX3QpOwogICAgIHZvaWQgc2V0KHVpbnQzMl90LCBXZWJBc3NlbWJseUZ1bmN0
aW9uKik7CiAgICAgdm9pZCBzZXQodWludDMyX3QsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA1ZmJkZTk1YzE4MTU5ZDI5NTAyNTMz
NmQ3MzM0NTJkYjk1ZTBmNmE1Li5iNzk4ZDZmMGQ3MDA3NWU5MWE4MmVmODQ5NTE1NjA5YjM4NjYx
ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmoKICAgICB7CiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2Vt
Ymx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRv
IGJlIGFuIG9iamVjdCJfcyk7CiAgICAgICAgIG1lbW9yeURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNP
YmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCkBAIC04MSw3ICs4MSw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImV4dGVybnJl
ZiIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RXh0ZXJucmVm
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0
byBiZSB0aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcykpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldl
YkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0aGUgc3Ry
aW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcyk7CiAgICAgfQogCiAgICAgSWRlbnRpZmll
ciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwpA
QCAtMTA5LDE5ICsxMDksMzMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgbWF4
aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBtYXhTaXplVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgICAgIGlmIChpbml0aWFsID4gKm1heGltdW0pIHsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LAotICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiJ21heGlt
dW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlh
bCcgcHJvcGVydHkiX3MpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWwgPiAqbWF4
aW11bSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICInbWF4aW11bScgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcyk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKGluaXRpYWws
IG1heGltdW0sIHR5cGUpOwotICAgIGlmICghd2FzbVRhYmxlKSB7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLAot
ICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CisgICAgaWYgKCF3YXNtVGFibGUpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJjb3VsZG4ndCBjcmVhdGUg
VGFibGUiX3MpOworCisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiBqc1dlYkFzc2VtYmx5VGFibGUg
PSBKU1dlYkFzc2VtYmx5VGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCB3ZWJBc3Nl
bWJseVRhYmxlU3RydWN0dXJlLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIEpT
VmFsdWUgZGVmYXVsdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgIWRlZmF1bHRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IG51
bGxwdHI7CisgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGpzV2ViQXNzZW1ibHlUYWJsZS0+dGFibGUo
KS0+aXNGdW5jcmVmVGFibGUoKSAmJiAoIWRlZmF1bHRWYWx1ZS5pc051bGwoKSAmJiAhaXNXZWJB
c3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZGVmYXVsdFZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21X
cmFwcGVyRnVuY3Rpb24pKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0
YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CisgICAgICAgIGZvciAodWludDMyX3Qg
dGFibGVJbmRleCA9IDA7IHRhYmxlSW5kZXggPCBpbml0aWFsOyArK3RhYmxlSW5kZXgpIHsKKyAg
ICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxlKCktPmlzRnVuY3JlZlRhYmxl
KCkpCisgICAgICAgICAgICAgICAganNXZWJBc3NlbWJseVRhYmxlLT5zZXQodGFibGVJbmRleCwg
d2FzbUZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxl
KCktPmlzRXh0ZXJucmVmVGFibGUoKSkKKyAgICAgICAgICAgICAgICBqc1dlYkFzc2VtYmx5VGFi
bGUtPnNldCh0YWJsZUluZGV4LCBkZWZhdWx0VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgfQogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNXZWJBc3NlbWJseVRhYmxlOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgd2ViQXNzZW1i
bHlUYWJsZVN0cnVjdHVyZSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1dlYkFzc2VtYmx5
VGFibGUpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYmx5
VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKaW5kZXggODZmNGU3OGZlYTUyMTA1MTAwNjgxNTk3ZTQ1NmExODk5ZWNm
YmE4MS4uMDc0MjEzYWMzNmI4MmFkZTg4NWMzNTVjZGYwZjExYTVlMzJlNGJjZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKQEAgLTkxLDEwICs5MSwxNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3csIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKKyAgICBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKGRlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBkZWZhdWx0VmFsdWUgPSBqc051bGwoKTsKKyAgICBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgdGFibGUtPnRhYmxlKCktPmlzRnVuY3JlZlRhYmxl
KCkgJiYgKCFkZWZhdWx0VmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24odm0sIGRlZmF1bHRWYWx1ZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3Jv
dyBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBv
ZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CiAgICAgdWludDMyX3Qgb2xkTGVuZ3RoID0gdGFi
bGUtPmxlbmd0aCgpOwogCi0gICAgaWYgKCF0YWJsZS0+Z3JvdyhkZWx0YSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlLnBy
b3RvdHlwZS5ncm93IGNvdWxkIG5vdCBncm93IHRoZSB0YWJsZSJfcykpKTsKKyAgICBpZiAoIXRh
YmxlLT5ncm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUucHJv
dG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhlIHRhYmxlIl9zKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2xkTGVuZ3RoKSk7CiB9CkBAIC0xMTAsNyArMTE1LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3Jh
cHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
IChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0
cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcykpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
IldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3Mg
dGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRhYmxlLT5nZXQoaW5kZXgpKTsKIH0KQEAgLTEyNCwxOCArMTI5LDIwIEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOworICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSAmJiB2
YWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICB2YWx1ZSA9IGpzTnVsbCgpOwogCiAgICAgdWlu
dDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIGlmIChpbmRleCA+PSB0YWJsZS0+bGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2VtYmx5LlRh
YmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3Ro
IG9mIHRoZSB0YWJsZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQg
ZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSJfcyk7
CiAKICAgICBpZiAodGFibGUtPnRhYmxlKCktPmFzRnVuY3JlZlRhYmxlKCkpIHsKICAgICAgICAg
V2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICAgICAgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb24gPSBudWxscHRyOwog
ICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9u
KHZtLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuVGFi
bGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBv
ciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcykpKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFz
c2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRv
IGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iX3MpOwogCiAg
ICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHRhYmxlLT5jbGVhcihpbmRl
eCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDhiYTEwMTg0ZDQ1ZWI3ZjI0ZGE2MmU0MzkzZjllYThhNjU5NzZiYTcuLjAxZTU4ZWFmNmQ5
ZmQzNjRjZjU4YjIzYTg4Yjg3YWNlNzRlYzNjODQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDEtMDYg
IERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBb
V0FTTS1SZWZlcmVuY2VzXSBBZGQgb3B0aW9uYWwgZGVmYXVsdCB2YWx1ZSBwYXJhbWV0ZXIgZm9y
IFRhYmxlLmNvbnN0cnVjdG9yLCBUYWJsZS5ncm93IGFuZCBUYWJsZS5zZXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDMyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgVGFibGUu
Z3JvdywgVGFibGUuc2V0IGFuZCBUYWJsZSBjdG9yIHdpdGggb3B0aW9uYWwgaW5pdGlhbGl6aW5n
IHBhcmFtZXRlci4KKyAgICAgICAgU3BlYzogaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIuaW8v
cmVmZXJlbmNlLXR5cGVzL2pzLWFwaS9pbmRleC5odG1sI3RhYmxlcy4KKworICAgICAgICAqIHdh
c20vcmVmZXJlbmNlcy90YWJsZV9qc19hcGkuanM6IEFkZGVkLgorICAgICAgICAoUGVsbWVuKToK
KyAgICAgICAgKHRlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJsZXMpOgorICAgICAgICAoYXN5
bmMgdGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMpOgorICAgICAgICAodGVzdFRhYmxlQ29u
c3RydWN0b3JGb3JFeHRlcm5yZWZUYWJsZXMpOgorICAgICAgICAoYXN5bmMgdGVzdFRhYmxlQ29u
c3RydWN0b3JGb3JGdW5jcmVmVGFibGVzKToKKyAgICAgICAgKGFzeW5jIHRlc3RUYWJsZVNldEZv
ckZ1bmNyZWZUYWJsZXMpOgorCiAyMDIxLTAxLTA1ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpo
ZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkZWQgZmV3
IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vcmVmZXJl
bmNlcy90YWJsZV9qc19hcGkuanMgYi9KU1Rlc3RzL3dhc20vcmVmZXJlbmNlcy90YWJsZV9qc19h
cGkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWVhY2YzNWU4MDA3N2UzMmRiYzdiOThjMGVmZDkwMmNiNGVlNTM1
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3RhYmxlX2pzX2Fw
aS5qcwpAQCAtMCwwICsxLDgwIEBACisvL0AgcnVuV2ViQXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJB
c3NlbWJseVJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNz
ZXJ0LmpzJzsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVyLmpz
IjsKKworLy8gdHJpdmlhbAorZnVuY3Rpb24gUGVsbWVuKGNhbG9yaWVzKSB7CisgIHRoaXMuY2Fs
b3JpZXMgPSBjYWxvcmllczsKK30KK2NvbnN0IGNhbG9yaWVzID0gMTAwOworCitmdW5jdGlvbiB0
ZXN0VGFibGVHcm93Rm9yRXh0ZXJucmVmVGFibGVzKCkgeworICBjb25zdCB0YWJsZSA9IG5ldyBX
ZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZXh0ZXJu
cmVmIn0pOworICB0YWJsZS5ncm93KDMsIG5ldyBQZWxtZW4oY2Fsb3JpZXMpKTsKKyAgYXNzZXJ0
LmVxKHRhYmxlLmdldCgxKS5jYWxvcmllcywgY2Fsb3JpZXMpOworICBhc3NlcnQuZXEodGFibGUu
Z2V0KDIpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMykuY2Fs
b3JpZXMsIGNhbG9yaWVzKTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFRhYmxlR3Jvd0ZvckZ1
bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0IHRhYmxlID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtp
bml0aWFsOjEsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJmdW5jcmVmIn0pOworICBjb25zdCBjYWxv
cmllcyA9IDEwMDsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJsZS5ncm93KDMsIG5ldyBQZWxt
ZW4oY2Fsb3JpZXMpKSwgRXJyb3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBl
eHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBX
ZWJBc3NlbWJseS5GdW5jdGlvbiIpOworCisgIHRhYmxlLmdyb3coMywgbnVsbCk7CisgIGFzc2Vy
dC5lcSh0YWJsZS5nZXQoMSksIG51bGwpOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDIpLCBudWxs
KTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgzKSwgbnVsbCk7CisKKyAgY29uc3QgaW5zdGFuY2Ug
PSBhd2FpdCBpbnN0YW50aWF0ZShgKG1vZHVsZSAoZnVuYyAoZXhwb3J0ICJmb28iKSkpYCwge30s
IHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKyAgdGFibGUuZ3JvdygzLCBpbnN0YW5jZS5leHBv
cnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoNCksIGluc3RhbmNlLmV4cG9ydHMuZm9v
KTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCg1KSwgaW5zdGFuY2UuZXhwb3J0cy5mb28pOworICBh
c3NlcnQuZXEodGFibGUuZ2V0KDYpLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RUYWJsZUNvbnN0cnVjdG9yRm9yRXh0ZXJucmVmVGFibGVzKCkgeworICBjb25zdCB0
YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEwLCBlbGVt
ZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxtZW4oY2Fsb3JpZXMpKTsKKyAgYXNzZXJ0LmVxKHRh
YmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3JpZXMpOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDEp
LmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMikuY2Fsb3JpZXMs
IGNhbG9yaWVzKTsKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJsZS5nZXQoMyksIFJhbmdlRXJy
b3IsICJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50ZWdlciBs
ZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgdGFibGUiKTsKK30KKworYXN5bmMgZnVuY3Rpb24g
dGVzdFRhYmxlQ29uc3RydWN0b3JGb3JGdW5jcmVmVGFibGVzKCkgeworICBjb25zdCBpbnN0YW5j
ZSA9IGF3YWl0IGluc3RhbnRpYXRlKGAobW9kdWxlIChmdW5jIChleHBvcnQgImZvbyIpKSlgLCB7
fSwge3JlZmVyZW5jZV90eXBlczogdHJ1ZX0pOworICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3Nl
bWJseS5UYWJsZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZnVuY3JlZiJ9LCBp
bnN0YW5jZS5leHBvcnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMCksIGluc3RhbmNl
LmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgxKSwgaW5zdGFuY2UuZXhwb3J0
cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDIpLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7
CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6
MywgbWF4aW11bToxMCwgZWxlbWVudDogImZ1bmNyZWYifSwge30pLCBUeXBlRXJyb3IsICJXZWJB
c3NlbWJseS5UYWJsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgZXhwZWN0cyB0aGUgc2Vjb25kIGFy
Z3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24i
KTsKK30KKworZnVuY3Rpb24gdGVzdFRhYmxlU2V0Rm9yRXh0ZXJucmVmVGFibGVzKCkgeworICBj
b25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDozLCBtYXhpbXVtOjEw
LCBlbGVtZW50OiAiZXh0ZXJucmVmIn0sIG5ldyBQZWxtZW4oY2Fsb3JpZXMpKTsKKyAgYXNzZXJ0
LmVxKHRhYmxlLmdldCgwKS5jYWxvcmllcywgY2Fsb3JpZXMpOworCisgIHRhYmxlLnNldCgwKTsK
KyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwgbnVsbCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRl
c3RUYWJsZVNldEZvckZ1bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQg
aW5zdGFudGlhdGUoYChtb2R1bGUgKGZ1bmMgKGV4cG9ydCAiZm9vIikpKWAsIHt9LCB7cmVmZXJl
bmNlX3R5cGVzOiB0cnVlfSk7CisgIGNvbnN0IHRhYmxlID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxl
KHtpbml0aWFsOjMsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJmdW5jcmVmIn0pOworICBhc3NlcnQu
ZXEodGFibGUuZ2V0KDApLCBudWxsKTsKKworICB0YWJsZS5zZXQoMCwgaW5zdGFuY2UuZXhwb3J0
cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7
CisKKyAgYXNzZXJ0LnRocm93cygoKSA9PiB0YWJsZS5zZXQoMCwge30pLCBUeXBlRXJyb3IsICJX
ZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVu
dCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIik7Cit9
CisKK3Rlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJsZXMoKTsKK2Fzc2VydC5hc3luY1Rlc3Qo
dGVzdFRhYmxlR3Jvd0ZvckZ1bmNyZWZUYWJsZXMoKSk7CisKK3Rlc3RUYWJsZUNvbnN0cnVjdG9y
Rm9yRXh0ZXJucmVmVGFibGVzKCk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RUYWJsZUNvbnN0cnVj
dG9yRm9yRnVuY3JlZlRhYmxlcygpKTsKKwordGVzdFRhYmxlU2V0Rm9yRXh0ZXJucmVmVGFibGVz
KCk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RUYWJsZVNldEZvckZ1bmNyZWZUYWJsZXMoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417243</attachid>
            <date>2021-01-07 21:54:15 -0800</date>
            <delta_ts>2021-01-08 10:18:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220323-20210108125413.patch</filename>
            <type>text/plain</type>
            <size>18981</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MzBiOTc5MjFlNjUwNWE0ODg5ZTI5ZWZmZTllMzQxNWRiNjgzM2ZkLi43ODA2Y2M3OWFiZGYzZmQx
OGJmYWEwMzdlOWJlMTNlYmJhMDhjMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMS0wMS0wNiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZh
dWx0IHZhbHVlIHBhcmFtZXRlciBmb3IgVGFibGUuY29uc3RydWN0b3IsIFRhYmxlLmdyb3cgYW5k
IFRhYmxlLnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBuZXcgb3B0aW9uYWwgcGFyYW1ldGVyICJkZWZhdWx0VmFsdWUiIGZv
ciBUYWJsZS5ncm93KG51bU9mRWxlbWVudHNUb0FkZCwgW2RlZmF1bHRWYWx1ZV0pLgorICAgICAg
ICBJdCBpcyB1c2VkIHRvIGluaXRpYWxpemUgbmV3bHkgYWRkZWQgdGFibGUgZWxlbWVudHMuCisg
ICAgICAgIEludHJvZHVjZSB0aGUgbmV3IG9wdGlvbmFsIHBhcmFtZXRlciAiZGVmYXVsdFZhbHVl
IiBmb3IgVGFibGUoe2luaXRpYWw6IE4sIGVsZW1lbnQ6dHlwZX0sIFtkZWZhdWx0VmFsdWVdKS4K
KyAgICAgICAgQWZ0ZXIgVGFibGUgaXMgY3JlYXRlZCB3ZSBhcHBlbmQgaW5pdGlhbCB0aW1lcyBk
ZWZhdWx0VmFsdWUgdG8gdGFibGUgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgQWxzbyBhZGQg
dHlwZSBjaGVjayBmb3IgZnVuY3JlZidzIHRhYmxlIGZvciBUYWJsZS5ncm93LCBUYWJsZSBjdG9y
IGFuZCBUYWJsZS5zZXQuCisgICAgICAgIFNwZWM6IGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHVi
LmlvL3JlZmVyZW5jZS10eXBlcy9qcy1hcGkvaW5kZXguaHRtbCN0YWJsZXMuCisKKyAgICAgICAg
KiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OlRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL1dhc21UYWJsZS5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjpUYWJsZTo6aXNGdW5jcmVmVGFibGUgY29uc3QpOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseVRhYmxlOjpncm93KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorCiAyMDIxLTAxLTA1ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRi
ZXpoZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gQWRkZWQg
ZmV3IHVucmVhY2hlZC1pbnZhbGlkIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHAKaW5kZXggMjlkZjg0YjU4MGY1ZTEyNGVjMmM1MGIyOGFkZjQx
OWEzNjcwNWM1My4uMDg5NTFjZTFhMzQyY2Y5OGRkYWY2MmExOWIyOTA1ODgxYjk2NjBmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNzQ1
LDcgKzc0NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25XYXNtVGFibGVH
cm93LCBpbnQzMl90LCAoSW5zdGFuY2UqIGluc3RhbmNlLCB1CiB7CiAgICAgQVNTRVJUKHRhYmxl
SW5kZXggPCBpbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKS50YWJsZUNvdW50
KCkpOwogICAgIGF1dG8gb2xkU2l6ZSA9IGluc3RhbmNlLT50YWJsZSh0YWJsZUluZGV4KS0+bGVu
Z3RoKCk7Ci0gICAgYXV0byBuZXdTaXplID0gaW5zdGFuY2UtPnRhYmxlKHRhYmxlSW5kZXgpLT5n
cm93KGRlbHRhKTsKKyAgICBhdXRvIG5ld1NpemUgPSBpbnN0YW5jZS0+dGFibGUodGFibGVJbmRl
eCktPmdyb3coZGVsdGEsIGpzTnVsbCgpKTsKICAgICBpZiAoIW5ld1NpemUpCiAgICAgICAgIHJl
dHVybiAtMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXgg
Yjc5ZDMzMjdmNDZjYjU5ODkzMjg0ZjllZmE4MjY5MGNmZTk4YzY4Zi4uY2ZhZmQyMDMwZDZhNDI5
NWFkMGYyZTAxZTQ0YzVmM2Q0YWMzYmEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxUYWJsZT4gVGFibGU6OnRyeUNy
ZWF0ZSh1aW50MzJfdCBpbml0aWFsLCBPcHRpb25hbDx1aW50MzJfdD4gbWF4aW11bSwgVGFiCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotT3B0aW9uYWw8dWludDMyX3Q+
IFRhYmxlOjpncm93KHVpbnQzMl90IGRlbHRhKQorT3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX293bmVyKTsKICAgICBpZiAoZGVsdGEgPT0gMCkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3codWludDMyX3QgZGVsdGEpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIGlmICghY2hlY2tlZEdyb3co
bV9qc1ZhbHVlcywgW10gKFdyaXRlQmFycmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNldFN0
YXJ0aW5nVmFsdWUoanNOdWxsKCkpOyB9KSkKKyAgICBpZiAoIWNoZWNrZWRHcm93KG1fanNWYWx1
ZXMsIFtkZWZhdWx0VmFsdWVdIChXcml0ZUJhcnJpZXI8VW5rbm93bj4mIHNsb3QpIHsgc2xvdC5z
ZXRTdGFydGluZ1ZhbHVlKGRlZmF1bHRWYWx1ZSk7IH0pKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgc2V0TGVuZ3RoKG5ld0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5oCmluZGV4IDU4MGYwZWYzMWEyZTQzNTcxNGRlZmQ1NDUyMTg3NzEzNmU4
NDFhYjYuLjU2MTk4NzRjMTI4YzBlNWNkYjYxNDdjNmRhMDFjMGZjYjgyNDNjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoK
IAogICAgIFRhYmxlRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgIGJvb2wgaXNFeHRlcm5yZWZUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUYWJs
ZUVsZW1lbnRUeXBlOjpFeHRlcm5yZWY7IH0KKyAgICBib29sIGlzRnVuY3JlZlRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWY7IH0KICAgICBG
dW5jUmVmVGFibGUqIGFzRnVuY3JlZlRhYmxlKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
TGVuZ3RoKHVpbnQzMl90IGxlbmd0aCkgeyByZXR1cm4gbGVuZ3RoIDwgbWF4VGFibGVFbnRyaWVz
OyB9CkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldCh1aW50MzJfdCwgSlNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBnZXQodWludDMyX3QpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGdyb3codWludDMyX3QgZGVsdGEpOworICAgIE9wdGlvbmFsPHVpbnQzMl90PiBn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSk7CiAgICAgdm9pZCBjb3B5
KGNvbnN0IFRhYmxlKiBzcmNUYWJsZSwgdWludDMyX3QgZHN0SW5kZXgsIHVpbnQzMl90IHNyY0lu
ZGV4KTsKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCmlu
ZGV4IDEwMTgzNDcwYjdmNjY0ZTg2YmJkODI5MWMyMDFlMDA2YmMzYWU4MmEuLjliY2UxNDJiOGY3
Y2VhYTM1NmNlZDdlZGNlZTk2MmViYTQ5YzI4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcApAQCAtODEsMTEgKzgxLDEx
IEBAIHZvaWQgSlNXZWJBc3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+dGFibGUoKS0+dmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiB9CiAKLWJvb2wgSlNXZWJBc3NlbWJseVRhYmxlOjpncm93KHVpbnQz
Ml90IGRlbHRhKQorYm9vbCBKU1dlYkFzc2VtYmx5VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEs
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogewogICAgIGlmIChkZWx0YSA9PSAwKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhKTsKKyAgICByZXR1
cm4gISFtX3RhYmxlLT5ncm93KGRlbHRhLCBkZWZhdWx0VmFsdWUpOwogfQogCiBKU1ZhbHVlIEpT
V2ViQXNzZW1ibHlUYWJsZTo6Z2V0KHVpbnQzMl90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCBjN2NjMmViZmRk
Yzg5M2NhNWI5Y2Q2NzVlMmVlMzUxNWQ5MTAwMDYxLi5kZWVhMjYxNDM3MzYwZDYxOTc5ZWIwMTQy
YzM4NGNkYWViNWY1OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5VGFibGUuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5tYXhpbXVt
KCk7IH0KICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlLT5sZW5n
dGgoKTsgfQogICAgIHVpbnQzMl90IGFsbG9jYXRlZExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFibGUtPmFsbG9jYXRlZExlbmd0aChsZW5ndGgoKSk7IH0KLSAgICBib29sIGdyb3codWludDMy
X3QgZGVsdGEpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBib29sIGdyb3codWludDMyX3QgZGVs
dGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgSlNWYWx1
ZSBnZXQodWludDMyX3QpOwogICAgIHZvaWQgc2V0KHVpbnQzMl90LCBXZWJBc3NlbWJseUZ1bmN0
aW9uKik7CiAgICAgdm9pZCBzZXQodWludDMyX3QsIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA1ZmJkZTk1YzE4MTU5ZDI5NTAyNTMz
NmQ3MzM0NTJkYjk1ZTBmNmE1Li5iNzk4ZDZmMGQ3MDA3NWU5MWE4MmVmODQ5NTE1NjA5YjM4NjYx
ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRhYmxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmoKICAgICB7CiAgICAgICAgIEpTVmFsdWUgYXJndW1lbnQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgICAgICBpZiAoIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIldlYkFzc2Vt
Ymx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCJfcykp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzIGZpcnN0IGFyZ3VtZW50IHRv
IGJlIGFuIG9iamVjdCJfcyk7CiAgICAgICAgIG1lbW9yeURlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNP
YmplY3QqPihhcmd1bWVudCk7CiAgICAgfQogCkBAIC04MSw3ICs4MSw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnRTdHJpbmcgPT0gImV4dGVybnJl
ZiIpCiAgICAgICAgICAgICB0eXBlID0gV2FzbTo6VGFibGVFbGVtZW50VHlwZTo6RXh0ZXJucmVm
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgIldlYkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0
byBiZSB0aGUgc3RyaW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcykpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldl
YkFzc2VtYmx5LlRhYmxlIGV4cGVjdHMgaXRzICdlbGVtZW50JyBmaWVsZCB0byBiZSB0aGUgc3Ry
aW5nICdmdW5jcmVmJyBvciAnZXh0ZXJucmVmJyJfcyk7CiAgICAgfQogCiAgICAgSWRlbnRpZmll
ciBpbml0aWFsSWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5pdGlhbCIpOwpA
QCAtMTA5LDE5ICsxMDksMzMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEpT
V2ViQXNzZW1ibHlUYWJsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgbWF4
aW11bSA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBtYXhTaXplVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgICAgIGlmIChpbml0aWFsID4gKm1heGltdW0pIHsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LAotICAgICAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiJ21heGlt
dW0nIHByb3BlcnR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAnaW5pdGlh
bCcgcHJvcGVydHkiX3MpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWwgPiAqbWF4
aW11bSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICInbWF4aW11bScgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gdGhlICdpbml0aWFsJyBwcm9wZXJ0eSJfcyk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFdhc206OlRhYmxlPiB3YXNtVGFibGUgPSBXYXNtOjpUYWJsZTo6dHJ5Q3JlYXRlKGluaXRpYWws
IG1heGltdW0sIHR5cGUpOwotICAgIGlmICghd2FzbVRhYmxlKSB7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLAot
ICAgICAgICAgICAgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjb3VsZG4ndCBjcmVh
dGUgVGFibGUiX3MpKSk7CisgICAgaWYgKCF3YXNtVGFibGUpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJjb3VsZG4ndCBjcmVhdGUg
VGFibGUiX3MpOworCisgICAgSlNXZWJBc3NlbWJseVRhYmxlKiBqc1dlYkFzc2VtYmx5VGFibGUg
PSBKU1dlYkFzc2VtYmx5VGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCB3ZWJBc3Nl
bWJseVRhYmxlU3RydWN0dXJlLCB3YXNtVGFibGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIEpT
VmFsdWUgZGVmYXVsdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCkgJiYgIWRlZmF1bHRWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IG51
bGxwdHI7CisgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGpzV2ViQXNzZW1ibHlUYWJsZS0+dGFibGUo
KS0+aXNGdW5jcmVmVGFibGUoKSAmJiAoIWRlZmF1bHRWYWx1ZS5pc051bGwoKSAmJiAhaXNXZWJB
c3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZGVmYXVsdFZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21X
cmFwcGVyRnVuY3Rpb24pKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0
YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CisgICAgICAgIGZvciAodWludDMyX3Qg
dGFibGVJbmRleCA9IDA7IHRhYmxlSW5kZXggPCBpbml0aWFsOyArK3RhYmxlSW5kZXgpIHsKKyAg
ICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxlKCktPmlzRnVuY3JlZlRhYmxl
KCkpCisgICAgICAgICAgICAgICAganNXZWJBc3NlbWJseVRhYmxlLT5zZXQodGFibGVJbmRleCwg
d2FzbUZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGlmIChqc1dlYkFzc2VtYmx5VGFibGUtPnRhYmxl
KCktPmlzRXh0ZXJucmVmVGFibGUoKSkKKyAgICAgICAgICAgICAgICBqc1dlYkFzc2VtYmx5VGFi
bGUtPnNldCh0YWJsZUluZGV4LCBkZWZhdWx0VmFsdWUpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgfQogICAg
IH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNXZWJBc3NlbWJseVRhYmxlOjp0cnlDcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgd2ViQXNzZW1i
bHlUYWJsZVN0cnVjdHVyZSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1dlYkFzc2VtYmx5
VGFibGUpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxKU1dlYkFzc2VtYmx5
VGFibGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKaW5kZXggODZmNGU3OGZlYTUyMTA1MTAwNjgxNTk3ZTQ1NmExODk5ZWNm
YmE4MS4uZGE3YmI2YjYwNTVlZTk2ZjVkMjk3YjE1ODhjNmVjYjNiZDM3MjA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZS5jcHAKQEAgLTkxLDEwICs5MSwxNSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3csIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIHVpbnQzMl90IGRlbHRhID0gdG9Ob25XcmFwcGluZ1VpbnQzMihnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKKyAgICBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSA9IGpz
TnVsbCgpOworICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMoKSAmJiBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+IDEpCisgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKHRhYmxlLT50YWJsZSgpLT5pc0Z1bmNyZWZU
YWJsZSgpICYmICFkZWZhdWx0VmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVu
Y3Rpb24odm0sIGRlZmF1bHRWYWx1ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5n
cm93IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNl
IG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKTsKICAgICB1aW50MzJfdCBvbGRMZW5ndGggPSB0
YWJsZS0+bGVuZ3RoKCk7CiAKLSAgICBpZiAoIXRhYmxlLT5ncm93KGRlbHRhKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuVGFibGUu
cHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhlIHRhYmxlIl9zKSkpOworICAgIGlmICgh
dGFibGUtPmdyb3coZGVsdGEsIGRlZmF1bHRWYWx1ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJXZWJBc3NlbWJseS5UYWJsZS5w
cm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUgdGFibGUiX3MpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihvbGRMZW5ndGgpKTsKIH0KQEAgLTExMCw3ICsxMTUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dl
dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25X
cmFwcGluZ1VpbnQzMihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
aWYgKGluZGV4ID49IHRhYmxlLT5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdldCBleHBl
Y3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdldCBleHBlY3RzIGFuIGludGVnZXIgbGVz
cyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9zKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGFibGUtPmdldChpbmRleCkpOwogfQpAQCAtMTI0LDE4ICsxMjksMjAgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpICYm
IHZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHZhbHVlID0ganNOdWxsKCk7CiAKICAgICB1
aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgaWYgKGluZGV4ID49IHRhYmxlLT5sZW5ndGgoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiV2ViQXNzZW1ibHku
VGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5n
dGggb2YgdGhlIHRhYmxlIl9zKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNl
dCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHRhYmxlIl9z
KTsKIAogICAgIGlmICh0YWJsZS0+dGFibGUoKS0+YXNGdW5jcmVmVGFibGUoKSkgewogICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBudWxscHRyOwogICAgICAgICBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbiA9IG51bGxwdHI7
CiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24odm0sIHZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKQotICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJXZWJBc3NlbWJseS5U
YWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxs
IG9yIGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIl9zKSkpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiV2Vi
QXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQg
dG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiJfcyk7CiAK
ICAgICAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgdGFibGUtPmNsZWFyKGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOGJhMTAxODRkNDVlYjdmMjRkYTYyZTQzOTNmOWVhOGE2NTk3NmJhNy4uMDFlNThlYWY2
ZDlmZDM2NGNmNThiMjNhODhiODdhY2U3NGVjM2M4NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wMS0w
NiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtXQVNNLVJlZmVyZW5jZXNdIEFkZCBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIHBhcmFtZXRlciBm
b3IgVGFibGUuY29uc3RydWN0b3IsIFRhYmxlLmdyb3cgYW5kIFRhYmxlLnNldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBUYWJs
ZS5ncm93LCBUYWJsZS5zZXQgYW5kIFRhYmxlIGN0b3Igd2l0aCBvcHRpb25hbCBpbml0aWFsaXpp
bmcgcGFyYW1ldGVyLgorICAgICAgICBTcGVjOiBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5p
by9yZWZlcmVuY2UtdHlwZXMvanMtYXBpL2luZGV4Lmh0bWwjdGFibGVzLgorCisgICAgICAgICog
d2FzbS9yZWZlcmVuY2VzL3RhYmxlX2pzX2FwaS5qczogQWRkZWQuCisgICAgICAgIChQZWxtZW4p
OgorICAgICAgICAodGVzdFRhYmxlR3Jvd0ZvckV4dGVybnJlZlRhYmxlcyk6CisgICAgICAgIChh
c3luYyB0ZXN0VGFibGVHcm93Rm9yRnVuY3JlZlRhYmxlcyk6CisgICAgICAgICh0ZXN0VGFibGVD
b25zdHJ1Y3RvckZvckV4dGVybnJlZlRhYmxlcyk6CisgICAgICAgIChhc3luYyB0ZXN0VGFibGVD
b25zdHJ1Y3RvckZvckZ1bmNyZWZUYWJsZXMpOgorICAgICAgICAoYXN5bmMgdGVzdFRhYmxlU2V0
Rm9yRnVuY3JlZlRhYmxlcyk6CisKIDIwMjEtMDEtMDUgIERtaXRyeSBCZXpoZXRza292ICA8ZGJl
emhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBBZGRlZCBm
ZXcgdW5yZWFjaGVkLWludmFsaWQgdGVzdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9yZWZl
cmVuY2VzL3RhYmxlX2pzX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9yZWZlcmVuY2VzL3RhYmxlX2pz
X2FwaS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZWFjZjM1ZTgwMDc3ZTMyZGJjN2I5OGMwZWZkOTAyY2I0ZWU1
MzVjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL3JlZmVyZW5jZXMvdGFibGVfanNf
YXBpLmpzCkBAIC0wLDAgKzEsODAgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5UmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9h
c3NlcnQuanMnOworaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIu
anMiOworCisvLyB0cml2aWFsCitmdW5jdGlvbiBQZWxtZW4oY2Fsb3JpZXMpIHsKKyAgdGhpcy5j
YWxvcmllcyA9IGNhbG9yaWVzOworfQorY29uc3QgY2Fsb3JpZXMgPSAxMDA7CisKK2Z1bmN0aW9u
IHRlc3RUYWJsZUdyb3dGb3JFeHRlcm5yZWZUYWJsZXMoKSB7CisgIGNvbnN0IHRhYmxlID0gbmV3
IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJleHRl
cm5yZWYifSk7CisgIHRhYmxlLmdyb3coMywgbmV3IFBlbG1lbihjYWxvcmllcykpOworICBhc3Nl
cnQuZXEodGFibGUuZ2V0KDEpLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5lcSh0YWJs
ZS5nZXQoMikuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgzKS5j
YWxvcmllcywgY2Fsb3JpZXMpOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0VGFibGVHcm93Rm9y
RnVuY3JlZlRhYmxlcygpIHsKKyAgY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUo
e2luaXRpYWw6MSwgbWF4aW11bToxMCwgZWxlbWVudDogImZ1bmNyZWYifSk7CisgIGNvbnN0IGNh
bG9yaWVzID0gMTAwOworICBhc3NlcnQudGhyb3dzKCgpID0+IHRhYmxlLmdyb3coMywgbmV3IFBl
bG1lbihjYWxvcmllcykpLCBFcnJvciwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5ncm93
IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9m
IFdlYkFzc2VtYmx5LkZ1bmN0aW9uIik7CisKKyAgdGFibGUuZ3JvdygzLCBudWxsKTsKKyAgYXNz
ZXJ0LmVxKHRhYmxlLmdldCgxKSwgbnVsbCk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMiksIG51
bGwpOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDMpLCBudWxsKTsKKworICBjb25zdCBpbnN0YW5j
ZSA9IGF3YWl0IGluc3RhbnRpYXRlKGAobW9kdWxlIChmdW5jIChleHBvcnQgImZvbyIpKSlgLCB7
fSwge3JlZmVyZW5jZV90eXBlczogdHJ1ZX0pOworICB0YWJsZS5ncm93KDMsIGluc3RhbmNlLmV4
cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCg0KSwgaW5zdGFuY2UuZXhwb3J0cy5m
b28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDUpLCBpbnN0YW5jZS5leHBvcnRzLmZvbyk7Cisg
IGFzc2VydC5lcSh0YWJsZS5nZXQoNiksIGluc3RhbmNlLmV4cG9ydHMuZm9vKTsKK30KKworZnVu
Y3Rpb24gdGVzdFRhYmxlQ29uc3RydWN0b3JGb3JFeHRlcm5yZWZUYWJsZXMoKSB7CisgIGNvbnN0
IHRhYmxlID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjMsIG1heGltdW06MTAsIGVs
ZW1lbnQ6ICJleHRlcm5yZWYifSwgbmV3IFBlbG1lbihjYWxvcmllcykpOworICBhc3NlcnQuZXEo
dGFibGUuZ2V0KDApLmNhbG9yaWVzLCBjYWxvcmllcyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQo
MSkuY2Fsb3JpZXMsIGNhbG9yaWVzKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgyKS5jYWxvcmll
cywgY2Fsb3JpZXMpOworICBhc3NlcnQudGhyb3dzKCgpID0+IHRhYmxlLmdldCgzKSwgUmFuZ2VF
cnJvciwgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2Vy
IGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSIpOworfQorCithc3luYyBmdW5jdGlv
biB0ZXN0VGFibGVDb25zdHJ1Y3RvckZvckZ1bmNyZWZUYWJsZXMoKSB7CisgIGNvbnN0IGluc3Rh
bmNlID0gYXdhaXQgaW5zdGFudGlhdGUoYChtb2R1bGUgKGZ1bmMgKGV4cG9ydCAiZm9vIikpKWAs
IHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisgIGNvbnN0IHRhYmxlID0gbmV3IFdlYkFz
c2VtYmx5LlRhYmxlKHtpbml0aWFsOjMsIG1heGltdW06MTAsIGVsZW1lbnQ6ICJmdW5jcmVmIn0s
IGluc3RhbmNlLmV4cG9ydHMuZm9vKTsKKyAgYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSwgaW5zdGFu
Y2UuZXhwb3J0cy5mb28pOworICBhc3NlcnQuZXEodGFibGUuZ2V0KDEpLCBpbnN0YW5jZS5leHBv
cnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMiksIGluc3RhbmNlLmV4cG9ydHMuZm9v
KTsKKworICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlh
bDozLCBtYXhpbXVtOjEwLCBlbGVtZW50OiAiZnVuY3JlZiJ9LCB7fSksIFR5cGVFcnJvciwgIldl
YkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBleHBlY3RzIHRoZSBzZWNvbmQg
YXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlv
biIpOworfQorCitmdW5jdGlvbiB0ZXN0VGFibGVTZXRGb3JFeHRlcm5yZWZUYWJsZXMoKSB7Cisg
IGNvbnN0IHRhYmxlID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjMsIG1heGltdW06
MTAsIGVsZW1lbnQ6ICJleHRlcm5yZWYifSwgbmV3IFBlbG1lbihjYWxvcmllcykpOworICBhc3Nl
cnQuZXEodGFibGUuZ2V0KDApLmNhbG9yaWVzLCBjYWxvcmllcyk7CisKKyAgdGFibGUuc2V0KDAp
OworICBhc3NlcnQuZXEodGFibGUuZ2V0KDApLCBudWxsKTsKK30KKworYXN5bmMgZnVuY3Rpb24g
dGVzdFRhYmxlU2V0Rm9yRnVuY3JlZlRhYmxlcygpIHsKKyAgY29uc3QgaW5zdGFuY2UgPSBhd2Fp
dCBpbnN0YW50aWF0ZShgKG1vZHVsZSAoZnVuYyAoZXhwb3J0ICJmb28iKSkpYCwge30sIHtyZWZl
cmVuY2VfdHlwZXM6IHRydWV9KTsKKyAgY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHkuVGFi
bGUoe2luaXRpYWw6MywgbWF4aW11bToxMCwgZWxlbWVudDogImZ1bmNyZWYifSk7CisgIGFzc2Vy
dC5lcSh0YWJsZS5nZXQoMCksIG51bGwpOworCisgIHRhYmxlLnNldCgwLCBpbnN0YW5jZS5leHBv
cnRzLmZvbyk7CisgIGFzc2VydC5lcSh0YWJsZS5nZXQoMCksIGluc3RhbmNlLmV4cG9ydHMuZm9v
KTsKKworICBhc3NlcnQudGhyb3dzKCgpID0+IHRhYmxlLnNldCgwLCB7fSksIFR5cGVFcnJvciwg
IldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuRnVuY3Rpb24iKTsK
K30KKwordGVzdFRhYmxlR3Jvd0ZvckV4dGVybnJlZlRhYmxlcygpOworYXNzZXJ0LmFzeW5jVGVz
dCh0ZXN0VGFibGVHcm93Rm9yRnVuY3JlZlRhYmxlcygpKTsKKwordGVzdFRhYmxlQ29uc3RydWN0
b3JGb3JFeHRlcm5yZWZUYWJsZXMoKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVzdFRhYmxlQ29uc3Ry
dWN0b3JGb3JGdW5jcmVmVGFibGVzKCkpOworCit0ZXN0VGFibGVTZXRGb3JFeHRlcm5yZWZUYWJs
ZXMoKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVzdFRhYmxlU2V0Rm9yRnVuY3JlZlRhYmxlcygpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>