<?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>158116</bug_id>
          
          <creation_ts>2016-05-26 05:09:24 -0700</creation_ts>
          <short_desc>Partly implement Function.prototype.{caller,arguments} reflection proposal</short_desc>
          <delta_ts>2021-07-25 15:33:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Claude Pache">claude.pache</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>erights</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>keith_miller</cc>
    
    <cc>leonardo.balter</cc>
    
    <cc>ljharb</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>1196697</commentid>
    <comment_count>0</comment_count>
    <who name="Claude Pache">claude.pache</who>
    <bug_when>2016-05-26 05:09:24 -0700</bug_when>
    <thetext>According to [ES6 6.7.1.3] Invariants of the Essential Internal Methods:


     If a property P is described as a data property with Desc.[[Value]] equal to v and Desc.[[Writable]] and Desc.[[Configurable]] are both false, then the SameValue must be returned for the Desc.[[Value]] attribute of the property on all future calls to [[GetOwnProperty]] ( P ).

[ES6 6.7.1.3]: http://www.ecma-international.org/ecma-262/6.0/#sec-invariants-of-the-essential-internal-methods


Testcase against `Function#arguments`

```js
function f() { return Object.getOwnPropertyDescriptor(f, &apos;arguments&apos;); }
Object.getOwnPropertyDescriptor(f, &apos;arguments&apos;);
// value: null, writable: false, configurable: false
f();
// value: Arguments[], writable: false, configurable: false
```


Testcase against `Function#caller`

```js
function g() { return Object.getOwnPropertyDescriptor(g, &apos;caller&apos;); }
function h() { return g(); }
Object.getOwnPropertyDescriptor(g, &apos;caller&apos;);
// value: null, writable: false, configurable: false
h();
// value: function h(), writable: false, configurable: false
```


Suggested fix: Use getters.


Similar bug: Bug 151348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657501</commentid>
    <comment_count>1</comment_count>
    <who name="Leo Balter">leonardo.balter</who>
    <bug_when>2020-05-29 16:24:13 -0700</bug_when>
    <thetext>I&apos;ve observed this bug within a non directly related code: 

```
(function() {
  &apos;use strict&apos;;
  class Foo {}
  const a = new Proxy(function() {}, { ownKeys() { return Reflect.ownKeys(Foo) } });
  console.log(Object.getOwnPropertySymbols(a));
})(); // strict mode, ok
 
(function() {
  &apos;use sloppy&apos;;
  class Foo {}
  const a = new Proxy(function() {}, { ownKeys() { return Reflect.ownKeys(Foo) } });
  console.log(Object.getOwnPropertySymbols(a));
})();
```

The code in sloppy mode breaks in Chrome and Safari because the function object will have non-configurable own properties arguments and caller and the Proxy trap is required to list all non-configurable properties from the Proxy target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757962</commentid>
    <comment_count>2</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2021-05-07 12:43:30 -0700</bug_when>
    <thetext>Ping. What is the status of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767609</commentid>
    <comment_count>3</comment_count>
      <attachid>430793</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-07 17:29:59 -0700</bug_when>
    <thetext>Created attachment 430793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767613</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-07 17:41:08 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #3)
&gt; Created attachment 430793 [details]
&gt; Patch

                                    r278563                   patch

reflect-own-keys-function       45.4040+-0.8465     ^     21.7507+-0.2064        ^ definitely 2.0875x faster
function-prototype-get          39.7061+-0.9041     ^     35.6181+-0.3754        ^ definitely 1.1148x faster

&lt;geometric&gt;                     42.4357+-0.6210     ^     27.8294+-0.1872        ^ definitely 1.5248x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767856</commentid>
    <comment_count>5</comment_count>
      <attachid>430875</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-08 12:32:43 -0700</bug_when>
    <thetext>Created attachment 430875
Patch

Adjust LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774690</commentid>
    <comment_count>6</comment_count>
      <attachid>432853</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-03 10:57:13 -0700</bug_when>
    <thetext>Created attachment 432853
Patch

Adjust put-to-proto-chain-overrides-put.js stress test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778691</commentid>
    <comment_count>7</comment_count>
      <attachid>432853</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 04:49:26 -0700</bug_when>
    <thetext>Comment on attachment 432853
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779376</commentid>
    <comment_count>8</comment_count>
      <attachid>432853</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-07-25 15:05:40 -0700</bug_when>
    <thetext>Comment on attachment 432853
Patch

I appreciate the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779378</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-25 15:32:31 -0700</bug_when>
    <thetext>Committed r280289 (239947@main): &lt;https://commits.webkit.org/239947@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432853.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779379</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-25 15:33:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/81083194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430793</attachid>
            <date>2021-06-07 17:29:59 -0700</date>
            <delta_ts>2021-06-08 12:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158116-20210608032957.patch</filename>
            <type>text/plain</type>
            <size>63664</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzg1NzkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTA3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQYXJ0bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3RvdHlw
ZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVjdGlvbiBwcm9wb3NhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0
LzE5LmZ1bmN0aW9uLmJhc2VsaW5lOgorICAgICAgICAqIENoYWtyYUNvcmUvdGVzdC9zdHJpY3Qv
MjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRzLmJhc2VsaW5lLWpzYzoKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLWdldC5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL3JlZmxlY3Qtb3duLWtleXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9mb3ItaW4tc2hhZG93LW5vbi1lbnVtZXJhYmxlLmpzOgorICAgICAgICAqIHN0
cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVyLmpzOgorICAgICAgICAqIHN0cmVzcy9oYXMt
b3duLXByb3BlcnR5LWFyZ3VtZW50cy5qczoKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWFzc2ln
bi1mYXN0LXBhdGguanM6CisgICAgICAgICogc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOgorICAgICAg
ICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IFNraXAgMyB0ZXN0IGNhc2VzIHRoYXQgYXJlIG5vdyBp
bmNvcnJlY3QuCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDogTWFyayAyIHRl
c3QgY2FzZXMgYXMgcGFzc2luZy4KKwogMjAyMS0wNi0wNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaG9ydCBjaXJjdWl0IHJlYWQgbW9kaWZ5IHdyaXRlIG5v
ZGVzIGVtaXQgYnl0ZSBjb2RlIHRoYXQgdXNlcyB0aGUgd3JvbmcgbG9jYWxzCkluZGV4OiBKU1Rl
c3RzL0NoYWtyYUNvcmUvdGVzdC9zdHJpY3QvMTkuZnVuY3Rpb24uYmFzZWxpbmUKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9DaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0LzE5LmZ1bmN0aW9uLmJhc2VsaW5l
CShyZXZpc2lvbiAyNzg0MzkpCisrKyBKU1Rlc3RzL0NoYWtyYUNvcmUvdGVzdC9zdHJpY3QvMTku
ZnVuY3Rpb24uYmFzZWxpbmUJKHdvcmtpbmcgY29weSkKQEAgLTIsMTcgKzIsNSBAQCBSZXR1cm46
IGZ1bmN0aW9uLmNhbGxlciBnZXQKIFJldHVybjogZnVuY3Rpb24uY2FsbGVyIHNldAogUmV0dXJu
OiBmdW5jdGlvbi5hcmd1bWVudHMgZ2V0CiBSZXR1cm46IGZ1bmN0aW9uLmFyZ3VtZW50cyBnZXQK
LVRlc3Q1LmNhbGxlcjpjb25maWd1cmFibGUgOiBmYWxzZQotVGVzdDUuY2FsbGVyOmVudW1lcmFi
bGUgICA6IGZhbHNlCi1UZXN0NS5jYWxsZXI6d3JpdGFibGUgICAgIDogZmFsc2UKLVRlc3Q1LmNh
bGxlcjpnZXR0ZXIgICAgICAgOiB1bmRlZmluZWQKLVRlc3Q1LmNhbGxlcjpzZXR0ZXIgICAgICAg
OiB1bmRlZmluZWQKLVRlc3Q1LmNhbGxlcjp2YWx1ZSAgICAgICAgOiBudWxsCi1SZXR1cm46IGZ1
bmN0aW9uLmNhbGxlciBnZXQKLVRlc3Q2LmFyZ3VtZW50czpjb25maWd1cmFibGUgOiBmYWxzZQot
VGVzdDYuYXJndW1lbnRzOmVudW1lcmFibGUgICA6IGZhbHNlCi1UZXN0Ni5hcmd1bWVudHM6d3Jp
dGFibGUgICAgIDogZmFsc2UKLVRlc3Q2LmFyZ3VtZW50czpnZXR0ZXIgICAgICAgOiB1bmRlZmlu
ZWQKLVRlc3Q2LmFyZ3VtZW50czpzZXR0ZXIgICAgICAgOiB1bmRlZmluZWQKLVRlc3Q2LmFyZ3Vt
ZW50czp2YWx1ZSAgICAgICAgOiBbb2JqZWN0IEFyZ3VtZW50c10KLVJldHVybjogZnVuY3Rpb24u
YXJndW1lbnRzIGdldAorRXhjZXB0aW9uOiBmdW5jdGlvbi5jYWxsZXIgZ2V0IFR5cGVFcnJvcgor
RXhjZXB0aW9uOiBmdW5jdGlvbi5hcmd1bWVudHMgZ2V0IFR5cGVFcnJvcgpJbmRleDogSlNUZXN0
cy9DaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0LzIyLmNhbGxlckNhbGxlZUFyZ3VtZW50cy5iYXNlbGlu
ZS1qc2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9DaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0LzIyLmNh
bGxlckNhbGxlZUFyZ3VtZW50cy5iYXNlbGluZS1qc2MJKHJldmlzaW9uIDI3ODQzOSkKKysrIEpT
VGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmljdC8yMi5jYWxsZXJDYWxsZWVBcmd1bWVudHMuYmFz
ZWxpbmUtanNjCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE5ICsyLDE5IEBACiBoYXNPd25Qcm9wZXJ0
eShjYWxsZXIpOiBmYWxzZQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe2Vj
aG8oImhhc093blByb3BlcnR5KGNhbGxlcik6ICIsIGZvby5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVy
IikpO30pKCk7Ci1oYXNPd25Qcm9wZXJ0eShjYWxsZXIpOiB0cnVlCitoYXNPd25Qcm9wZXJ0eShj
YWxsZXIpOiBmYWxzZQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ug
c3RyaWN0IjtlY2hvKCJoYXNPd25Qcm9wZXJ0eShjYWxsZXIpOiAiLCBmb28uaGFzT3duUHJvcGVy
dHkoImNhbGxlciIpKTt9KSgpOwotaGFzT3duUHJvcGVydHkoY2FsbGVyKTogdHJ1ZQoraGFzT3du
UHJvcGVydHkoY2FsbGVyKTogZmFsc2UKIAogKGZ1bmN0aW9uKCl7ZWNobygiaGFzT3duUHJvcGVy
dHkoY2FsbGVlKTogIiwgYXJndW1lbnRzLmhhc093blByb3BlcnR5KCJjYWxsZWUiKSk7fSkoKTsK
IGhhc093blByb3BlcnR5KGNhbGxlZSk6IHRydWUKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTso
ZnVuY3Rpb24oKXtlY2hvKCJoYXNPd25Qcm9wZXJ0eShhcmd1bWVudHMpOiAiLCBmb28uaGFzT3du
UHJvcGVydHkoImFyZ3VtZW50cyIpKTt9KSgpOwotaGFzT3duUHJvcGVydHkoYXJndW1lbnRzKTog
dHJ1ZQoraGFzT3duUHJvcGVydHkoYXJndW1lbnRzKTogZmFsc2UKIAogdmFyIGZvbyA9IGZ1bmN0
aW9uKCl7fTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZWNobygiaGFzT3duUHJvcGVydHkoYXJn
dW1lbnRzKTogIiwgZm9vLmhhc093blByb3BlcnR5KCJhcmd1bWVudHMiKSk7fSkoKTsKLWhhc093
blByb3BlcnR5KGFyZ3VtZW50cyk6IHRydWUKK2hhc093blByb3BlcnR5KGFyZ3VtZW50cyk6IGZh
bHNlCiAKIChmdW5jdGlvbigpe2FyZ3VtZW50cy5jYWxsZXI7fSkoKTsKIApAQCAtMzMsNDEgKzMz
LDM5IEBAIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSAKIHZhciBmb28g
PSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7Zm9vLmNhbGxlciA9IDA7fSkoKTsKIAogdmFyIGZv
byA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9vLmNhbGxlciA9IDA7
fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0
eS4KIAogKGZ1bmN0aW9uKCl7YXJndW1lbnRzLmNhbGxlZSA9IDA7fSkoKTsKIAogdmFyIGZvbyA9
IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXtmb28uYXJndW1lbnRzID0gMDt9KSgpOwogCiB2YXIg
Zm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijtmb28uYXJndW1lbnRz
ID0gMDt9KSgpOwotVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHBy
b3BlcnR5LgogCiAoZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJndW1lbnRzLCAi
Y2FsbGVyIiwge3ZhbHVlOiAwfSk7fSkoKTsKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVu
Y3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAiY2FsbGVyIiwge3ZhbHVlOiAwfSk7
fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25s
eSBwcm9wZXJ0eS4KIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXsidXNlIHN0
cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgImNhbGxlciIsIHt2YWx1ZTogMH0pO30p
KCk7Ci1UeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkg
cHJvcGVydHkuCiAKIChmdW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhcmd1bWVudHMs
ICJjYWxsZWUiLCB7dmFsdWU6IDB9KTt9KSgpOwogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9Oyhm
dW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJhcmd1bWVudHMiLCB7dmFsdWU6
IDB9KTt9KSgpOwotVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJl
YWRvbmx5IHByb3BlcnR5LgogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1
c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAiYXJndW1lbnRzIiwge3ZhbHVl
OiAwfSk7fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSBy
ZWFkb25seSBwcm9wZXJ0eS4KIAogKGZ1bmN0aW9uKCl7dmFyIGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgImNhbGxlciIpO2lmKGRlc2NyaXB0
b3IuaGFzT3duUHJvcGVydHkoImdldCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLmdldCk7aWYoZGVz
Y3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9
KSgpOwogVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
ZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eScpCiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1
bmN0aW9uKCl7dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGZvbywgImNhbGxlciIpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpKSBzYWZl
Q2FsbChkZXNjcmlwdG9yLmdldCk7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0Iikp
IHNhZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9KSgpOworVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eScpCiAK
IHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJjYWxsZXIiKTtp
ZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5n
ZXQpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSBzYWZlQ2FsbChkZXNjcmlw
dG9yLnNldCk7fSkoKTsKK1R5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2
YWx1YXRpbmcgJ2Rlc2NyaXB0b3IuaGFzT3duUHJvcGVydHknKQogCiAoZnVuY3Rpb24oKXt2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAi
Y2FsbGVlIik7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikpIHNhZmVDYWxsKGRl
c2NyaXB0b3IuZ2V0KTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkgc2FmZUNh
bGwoZGVzY3JpcHRvci5zZXQpO30pKCk7CiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0
aW9uKCl7dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZv
bywgImFyZ3VtZW50cyIpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpKSBzYWZl
Q2FsbChkZXNjcmlwdG9yLmdldCk7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0Iikp
IHNhZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9KSgpOworVHlwZUVycm9yOiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eScpCiAK
IHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJhcmd1bWVudHMi
KTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRv
ci5nZXQpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSBzYWZlQ2FsbChkZXNj
cmlwdG9yLnNldCk7fSkoKTsKK1R5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ2Rlc2NyaXB0b3IuaGFzT3duUHJvcGVydHknKQogCkluZGV4OiBKU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtZ2V0LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXByb3RvdHlwZS1nZXQuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLWdl
dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2
YXIgcHJvdG90eXBlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMmU1OyArK2kpCisgICAgICAg
IHByb3RvdHlwZSA9IChmdW5jdGlvbigpIHt9KS5wcm90b3R5cGU7CisgICAgaWYgKCFwcm90b3R5
cGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7Cklu
ZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9yZWZsZWN0LW93bi1rZXlzLWZ1bmN0aW9uLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3JlZmxlY3Qtb3duLWtleXMt
ZnVuY3Rpb24uanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVm
bGVjdC1vd24ta2V5cy1mdW5jdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAK
K25vSW5saW5lKFJlZmxlY3Qub3duS2V5cyk7CisKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIga2V5
czsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgICAgICBrZXlzID0gUmVm
bGVjdC5vd25LZXlzKGZ1bmN0aW9uKCkge30pOworICAgIGlmICgha2V5cykKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL2Zvci1pbi1zaGFkb3ctbm9uLWVudW1lcmFibGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvZm9yLWluLXNoYWRvdy1ub24tZW51bWVyYWJsZS5qcwkocmV2aXNpb24gMjc4NDM5
KQorKysgSlNUZXN0cy9zdHJlc3MvZm9yLWluLXNoYWRvdy1ub24tZW51bWVyYWJsZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBjb25zdCB0ZXN0Q2FzZXMgPSBbCiAgIHsKICAg
ICBuYW1lOiAiRnVuY3Rpb24gKG5vbi1zdHJpY3QpIiwKICAgICBjcmVhdGVPYmplY3Q6ICgpID0+
IGZ1bmN0aW9uKCkge30sCi0gICAgZG9udEVudW1LZXlzOiBbImFyZ3VtZW50cyIsICJjYWxsZXIi
LCAibGVuZ3RoIiwgIm5hbWUiLCAicHJvdG90eXBlIl0sCisgICAgZG9udEVudW1LZXlzOiBbImxl
bmd0aCIsICJuYW1lIiwgInByb3RvdHlwZSJdLAogICB9LAogICB7CiAgICAgbmFtZTogIlJlZ0V4
cCIsCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVyLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWhpZGRlbi1hcy1jYWxsZXIuanMJ
KHJldmlzaW9uIDI3ODQzOSkKKysrIEpTVGVzdHMvc3RyZXNzL2Z1bmN0aW9uLWhpZGRlbi1hcy1j
YWxsZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMsMTEgKzMsMTMgQEAgZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCwgdGVzdAogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCB2
YWx1ZTogJHthY3R1YWx9ICgke3Rlc3RJbmZvfSlgKTsKIH0KIAorY29uc3QgZnVuY3Rpb25Qcm90
b3R5cGVDYWxsZXJHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEZ1bmN0
aW9uLnByb3RvdHlwZSwgImNhbGxlciIpLmdldDsKKwogbGV0IGNhbGxlclZpYUdldDsKIGxldCBj
YWxsZXJWaWFHZXRPd25Qcm9wZXJ0eTsKIGZ1bmN0aW9uIHVwZGF0ZUNhbGxlcigpIHsKICAgICBj
YWxsZXJWaWFHZXQgPSB1cGRhdGVDYWxsZXIuY2FsbGVyOwotICAgIGNhbGxlclZpYUdldE93blBy
b3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1cGRhdGVDYWxsZXIsICJj
YWxsZXIiKS52YWx1ZTsKKyAgICBjYWxsZXJWaWFHZXRPd25Qcm9wZXJ0eSA9IGZ1bmN0aW9uUHJv
dG90eXBlQ2FsbGVyR2V0dGVyLmNhbGwodXBkYXRlQ2FsbGVyKTsKIH0KIG5vSW5saW5lKHVwZGF0
ZUNhbGxlcik7CiAKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktYXJndW1l
bnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktYXJn
dW1lbnRzLmpzCShyZXZpc2lvbiAyNzg0MzkpCisrKyBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXBy
b3BlcnR5LWFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNSw0ICs1LDQgQEAgZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewogCiBjbGFzcyBBIGV4dGVuZHMgRnVuY3Rp
b24ge30KIHNob3VsZEJlKG5ldyBBKCIndXNlIHN0cmljdCc7IikuaGFzT3duUHJvcGVydHkoJ2Fy
Z3VtZW50cycpLCBmYWxzZSk7Ci1zaG91bGRCZShuZXcgQSgpLmhhc093blByb3BlcnR5KCdhcmd1
bWVudHMnKSwgdHJ1ZSk7CitzaG91bGRCZShuZXcgQSgpLmhhc093blByb3BlcnR5KCdhcmd1bWVu
dHMnKSwgZmFsc2UpOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBh
dGguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBh
dGguanMJKHJldmlzaW9uIDI3ODQzOSkKKysrIEpTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24t
ZmFzdC1wYXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGZ1bmN0aW9uIGNo
ZWNrUHJvcGVydHkob2JqZWN0LCBuYW1lLCB2YWwKICAgICAgICAgb2s6IDQyCiAgICAgfSk7CiAK
LSAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhy
ZXN1bHQpLnNvcnQoKSksIGBbImFyZ3VtZW50cyIsImNhbGxlciIsImxlbmd0aCIsIm5hbWUiLCJv
ayIsInByb3RvdHlwZSJdYCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMocmVzdWx0KS5zb3J0KCkpLCBgWyJsZW5ndGgiLCJuYW1lIiwib2si
LCJwcm90b3R5cGUiXWApOwogICAgIGNoZWNrUHJvcGVydHkocmVzdWx0LCAib2siLCA0Mik7CiB9
CiB7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcwkocmV2aXNpb24gMjc4NDM5KQorKysgSlNUZXN0
cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyMDQsMTEgKzEyMDQs
MTEgQEAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpOwogKGZ1bmN0aW9uIGZ1bmN0aW9uQ2FzZSgpIHsK
ICAgICB2YXIgZnVuYyA9IGZ1bmN0aW9uICgpIHsgfTsKICAgICBzaG91bGRCZShSZWZsZWN0Lmdl
dChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOwotICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1
bmMsICdhcmd1bWVudHMnLCA0MiksIGZhbHNlKTsKKyAgICBzaG91bGRCZShSZWZsZWN0LnNldChm
dW5jLCAnYXJndW1lbnRzJywgNDIpLCB0cnVlKTsKICAgICBzaG91bGRCZShSZWZsZWN0LmdldChm
dW5jLCAnYXJndW1lbnRzJyksIG51bGwpOwogCiAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoZnVu
YywgJ2NhbGxlcicpLCBudWxsKTsKLSAgICBzaG91bGRCZShSZWZsZWN0LnNldChmdW5jLCAnY2Fs
bGVyJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoZnVuYywgJ2NhbGxl
cicsIDQyKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoZnVuYywgJ2NhbGxlcicp
LCBudWxsKTsKIAogICAgIHJlY2VpdmVyVGVzdChmdW5jdGlvbiAoKSB7fSwgZnVuY3Rpb24gKCkg
e30pOwpAQCAtMTIxOSwxMSArMTIxOSwxNiBAQCB2YXIgc3ltYm9sID0gU3ltYm9sKCk7CiAgICAg
cmVjZWl2ZXJUZXN0SW5kZXhlZChmdW5jdGlvbiAoKSB7fSwge30pOwogCiAgICAgdmFyIHJlY2Vp
dmVyID0ge307Ci0gICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoZnVuYywgJ2FyZ3VtZW50cycsICdW
JywgcmVjZWl2ZXIpLCBmYWxzZSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBS
ZWZsZWN0LnNldChmdW5jLCAnYXJndW1lbnRzJywgJ1YnLCByZWNlaXZlcik7CisgICAgfSwgYFR5
cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFj
Y2Vzc2VkIGluIHRoaXMgY29udGV4dC5gKTsKICAgICBzaG91bGRCZShSZWZsZWN0LmdldChyZWNl
aXZlciwgJ2FyZ3VtZW50cycpLCB1bmRlZmluZWQpOwogICAgIHNob3VsZEJlKHJlY2VpdmVyLmhh
c093blByb3BlcnR5KCdhcmd1bWVudHMnKSwgZmFsc2UpOwogICAgIHNob3VsZEJlKFJlZmxlY3Qu
Z2V0KGZ1bmMsICdhcmd1bWVudHMnKSwgbnVsbCk7Ci0gICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQo
ZnVuYywgJ2NhbGxlcicsICdWJywgcmVjZWl2ZXIpLCBmYWxzZSk7CisKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIFJlZmxlY3Quc2V0KGZ1bmMsICdjYWxsZXInLCAnVicsIHJlY2Vp
dmVyKTsKKyAgICB9LCBgVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2Fs
bGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LmApOwogICAgIHNob3VsZEJl
KFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAnY2FsbGVyJyksIHVuZGVmaW5lZCk7CiAgICAgc2hvdWxk
QmUocmVjZWl2ZXIuaGFzT3duUHJvcGVydHkoJ2NhbGxlcicpLCBmYWxzZSk7CiAgICAgc2hvdWxk
QmUoUmVmbGVjdC5nZXQoZnVuYywgJ2NhbGxlcicpLCBudWxsKTsKSW5kZXg6IEpTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwJKHJldmlzaW9uIDI3ODQzOSkKKysrIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTEgQEAgc2tpcDoKICAgICAtIGNsZWFudXBTb21lCiAg
IHBhdGhzOgogICBmaWxlczoKKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9jbGF1ZGVwYWNoZS9l
cy1sZWdhY3ktZnVuY3Rpb24tcmVmbGVjdGlvbgorICAgIC0gdGVzdC9idWlsdC1pbnMvVGhyb3dU
eXBlRXJyb3IvdW5pcXVlLXBlci1yZWFsbS1mdW5jdGlvbi1wcm90by5qcworICAgIC0gdGVzdC9i
dWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3Jlc3RyaWN0ZWQtcHJvcGVydHktYXJndW1lbnRz
LmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvcmVzdHJpY3RlZC1w
cm9wZXJ0eS1jYWxsZXIuanMKKwogICAgICMgU2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1hdHRpbmcu
IFdlIHNob3VsZCB1cGRhdGUgdGVzdDI2MiBzaWRlLgogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVU
aW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRSYW5nZVRvUGFydHMvZW4tVVMuanMKICAgICAtIHRl
c3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0UmFuZ2VUb1BhcnRzL2Zy
YWN0aW9uYWxTZWNvbmREaWdpdHMuanMKSW5kZXg6IEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJ
KHJldmlzaW9uIDI3ODQzOSkKKysrIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAko
d29ya2luZyBjb3B5KQpAQCAtNzYyLDEwICs3NjIsNiBAQCB0ZXN0L2J1aWx0LWlucy9GdW5jdGlv
bi9wcm90b3R5cGUvdG9TdHJpCiB0ZXN0L2J1aWx0LWlucy9PYmplY3QvZW50cmllcy9vcmRlci1h
ZnRlci1kZWZpbmUtcHJvcGVydHkuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFthLCBuYW1lXSBhbmQgW25hbWUsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcK
ICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFthLCBuYW1lXSBhbmQgW25h
bWUsIGFdIHRvIGhhdmUgdGhlIHNhbWUgY29udGVudHMuICcKLXRlc3QvYnVpbHQtaW5zL09iamVj
dC9pbnRlcm5hbHMvRGVmaW5lT3duUHJvcGVydHkvY29uc2lzdGVudC12YWx1ZS1mdW5jdGlvbi1h
cmd1bWVudHMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq251bGzCuywgwqtbb2JqZWN0IEFyZ3VtZW50c13CuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVp
bHQtaW5zL09iamVjdC9pbnRlcm5hbHMvRGVmaW5lT3duUHJvcGVydHkvY29uc2lzdGVudC12YWx1
ZS1mdW5jdGlvbi1jYWxsZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq251bGzCuywgwqtmdW5jdGlvbiBnKCkgeycKIHRlc3QvYnVpbHQtaW5zL09i
amVjdC9pbnRlcm5hbHMvRGVmaW5lT3duUHJvcGVydHkvY29uc2lzdGVudC12YWx1ZS1yZWdleHAt
ZG9sbGFyMS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrwrssIMKreMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrwrssIMKreMK7KSB0byBiZSB0cnVlJwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTEgQEAKKzIwMjEtMDYtMDcg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFBhcnRs
eSBpbXBsZW1lbnQgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxsZXIsYXJndW1lbnRzfSByZWZsZWN0
aW9uIHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTgxMTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUbyBlbnN1cmUgd2ViLWNvbXBhdGliaWxpdHksIG9ubHkgdGhlIHNhZmUgc3Vic2V0IG9m
IEZ1bmN0aW9uLnByb3RvdHlwZS57Y2FsbGVyLGFyZ3VtZW50c30KKyAgICAgICAgcmVmbGVjdGlv
biBwcm9wb3NhbCBbMV0gaXMgaW1wbGVtZW50ZWQsIHdoaWNoIGlzIGN1cnJlbnRseSBzaGlwcGVk
IGluIFNwaWRlck1vbmtleS4KKworICAgICAgICBDb21wbGV0ZSBsaXN0IG9mIGRpZmZlcmVuY2Vz
IGZyb20gdGhlIHByb3Bvc2VkIHNwZWM6CisKKyAgICAgICAgICAxLiBDcm9zcy1yZWFsbSByZWNl
aXZlciBmdW5jdGlvbiBpcyBhbGxvd2VkIGluc3RlYWQgb2YgdGhyb3dpbmcgYSBUeXBlRXJyb3Iu
CisKKyAgICAgICAgICAgICBUaHJvd2luZyBpcyBsaWtlbHkgc2FmZSB0byBzaGlwLCBidXQgIzIy
NTk5NyBuZWVkcyB0byBiZSBmaXhlZCBmaXJzdCBmb3IKKyAgICAgICAgICAgICBjdXN0b20gcHJv
cGVydGllcyB0byByZWNlaXZlIGNvcnJlY3QgZ2xvYmFsIG9iamVjdC4KKworICAgICAgICAgIDIu
IENyb3NzLXJlYWxtIGNhbGxlciBmdW5jdGlvbiBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGBudWxs
YC4KKworICAgICAgICAgICAgIEhpZGluZyBjcm9zcy1yZWFsbSBjYWxsZXIgbWF5IGJyZWFrIHRo
aW5nczogd2UgY3VycmVudGx5IGhhdmUgYSB0ZXN0IGZvcgorICAgICAgICAgICAgIHRoZSBvcHBv
c2l0ZSBiZWhhdmlvci4KKworICAgICAgICAgIDMuIERlZmluZXMgImNhbGxlciIgYW5kICJhcmd1
bWVudHMiIHNldHRlcnMgdGhhdCB0aHJvdyBmb3IgZGlzYWxsb3dlZCByZWNlaXZlcnMsCisgICAg
ICAgICAgICAgaW5zdGVhZCBmYWlsaW5nIHNpbGVudGx5IGluIHNsb3BweSBtb2RlLgorCisgICAg
ICAgICAgICAgVGhpcyBpcyBhY3R1YWxseSBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gdGhlIHNwZWMs
IHdoaWNoIGlzIHByZWZlcmFibGUsCisgICAgICAgICAgICAgYW5kIGFsaWducyB3aXRoIFY4IGFu
ZCBTTS4KKworICAgICAgICBNb3N0IGltcG9ydGFudGx5LCB0aGlzIHBhdGNoIHJlbW92ZXMgb3du
ICJjYWxsZXIiIGFuZCAiYXJndW1lbnRzIiBwcm9wZXJ0aWVzIGZyb20KKyAgICAgICAgc2xvcHB5
IG1vZGUgRVM1IGZ1bmN0aW9ucy4gVGhleSB3ZXJlIG5vbi1jb25maWd1cmFibGUsIG1ha2luZyBp
dCBoYXJkZXIgdG8gdXNlCisgICAgICAgIHRoZWlyIGhvbGRlciBhcyBhIFtbUHJveHlUYXJnZXRd
XS4gVGhleSB3ZXJlIGFsc28gbm9uLXdyaXRhYmxlLCB3aXRoIGEgY29uc3RhbnRseQorICAgICAg
ICBjaGFuZ2luZyBbW1ZhbHVlXV0sIHdoaWNoIHZpb2xhdGVkIHRoZSBpbnZhcmlhbnRzIG9mIGlu
dGVybmFsIG1ldGhvZHMgWzJdLgorCisgICAgICAgIEFzIGEgcmVzdWx0LCBKU0Z1bmN0aW9uIG1l
dGhvZHMgYXJlIGdyZWF0bHkgc2ltcGxpZmllZCwgZXNwZWNpYWxseSBkZWZpbmVPd25Qcm9wZXJ0
eSgpCisgICAgICAgIGFuZCBnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcygpLiBUaGUgbGF0dGVy
IGlzIG5vdyAyLjF4IGZhc3RlciBhY2NvcmRpbmcgdG8gdGhlCisgICAgICAgIHByb3ZpZGVkIG1p
Y3JvYmVuY2htYXJrLiBBbHNvLCByZW1vdmVzIGRvdWJsZSAicHJvdG90eXBlIiBsb29rdXAgZnJv
bSBbW0dldF1dLAorICAgICAgICB3aGljaCBpcyBhIDEwJSBwcm9ncmVzc2lvbi4KKworICAgICAg
ICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9jbGF1ZGVwYWNoZS9lcy1sZWdhY3ktZnVuY3Rpb24t
cmVmbGVjdGlvbgorICAgICAgICBbMl06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaW52
YXJpYW50cy1vZi10aGUtZXNzZW50aWFsLWludGVybmFsLW1ldGhvZHMKKworICAgICAgICAqIHJ1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6Om1h
dGVyaWFsaXplU3BlY2lhbHMpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
Lmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjppc0FsbG93ZWRSZWNlaXZlckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1
bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3I6OnJlc3VsdCBj
b25zdCk6CisgICAgICAgIChKU0M6OlJldHJpZXZlQXJndW1lbnRzRnVuY3Rvcjo6b3BlcmF0b3Io
KSBjb25zdCk6CisgICAgICAgIChKU0M6OnJldHJpZXZlQXJndW1lbnRzKToKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6UmV0cmlldmVDYWxs
ZXJGdW5jdGlvbkZ1bmN0b3I6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yKToKKyAgICAg
ICAgKEpTQzo6UmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3I6OnJlc3VsdCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yOjpvcGVyYXRvcigpIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6cmV0cmlldmVDYWxsZXJGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJv
dG90eXBlOjppbml0UmVzdHJpY3RlZFByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OnB1dCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3I6OlJldHJpZXZlQXJn
dW1lbnRzRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJldHJpZXZlQXJndW1lbnRz
RnVuY3Rvcjo6cmVzdWx0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmV0cmlldmVB
cmd1bWVudHNGdW5jdG9yOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6cmV0cmlldmVBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1
bmN0aW9uRnVuY3Rvcjo6UmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rvcjo6cmVzdWx0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3I6
Om9wZXJhdG9yKCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUNhbGxl
ckZ1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBtX3Rocm93VHlwZUVycm9yR2V0
dGVyU2V0dGVyIGFuZCBtYWtlIFtbVGhyb3dUeXBlRXJyb3JdXSBsYXppbHktY3JlYXRlZC4KKwor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRU
cmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisKIDIwMjEtMDYtMDMg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhbiBBU1NFUlQg
aW4gb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkoKSB0byBhY2NvdW50IGZvciBUZXJtaW5h
dGlvbkV4Y2VwdGlvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjc4NDM5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QK
IAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAgICAg
ICAgICAgICBpZiAoaXNTdHJpY3RNb2RlIHx8IGV4ZWN1dGFibGUtPnVzZXNOb25TaW1wbGVQYXJh
bWV0ZXJMaXN0KCkpIHsKLSAgICAgICAgICAgICAgICBzbG90LnNldEdldHRlclNsb3QodGhpc09i
amVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IsIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCh2bSktPnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyKCkpOworICAgICAgICAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzT2JqZWN0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciwgdGhpc09iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIoKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIDAsIHRoaXNPYmplY3QtPm1fY2FsbGVlLmdldCgpKTsK
QEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVj
aWFsCiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4
dCgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUgfHwgZXhlY3V0YWJsZS0+dXNlc05vblNp
bXBsZVBhcmFtZXRlckxpc3QoKSkKLSAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVjdCh2bSktPnRo
cm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKyAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3Io
Z2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVj
dCh2bSktPnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBlbHNlCiAgICAgICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCBKU1ZhbHVlKG1fY2FsbGVlLmdldCgpKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEyICsx
MzksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGlz
R2VuZXJhdG9yUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogICAgIGJvb2wgaXNBc3luY0dlbmVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIGlzQXN5bmNHZW5lcmF0b3JQYXJzZU1vZGUocGFyc2VNb2Rl
KCkpOyB9CiAgICAgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsgfQotICAgIGJvb2wgaGFzQ2FsbGVyQW5kQXJn
dW1lbnRzUHJvcGVydGllcygpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBQZXIgaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkgc2xv
cHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJlLUVTNikgc3lu
dGFjdGljIGZvcm1zIGNhbiBjb250YWluCi0gICAgICAgIC8vICJjYWxsZXIiIGFuZCAiYXJndW1l
bnRzIi4KLSAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpOwotICAgIH0KICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDEwIEBACiAj
aW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0
YWJsZS5oIgogI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzUsNiArMzcsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpzX2lu
Zgogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1bmNUb1N0
cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsRnVuY3Rpb25Qcm90
b3R5cGUpOwogCitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihhcmd1bWVudHNHZXR0
ZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY2FsbGVyR2V0dGVyKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGNhbGxlckFuZEFyZ3VtZW50c1NldHRlcik7
CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvcGVydGllcy1vZi10aGUtZnVu
Y3Rpb24tcHJvdG90eXBlLW9iamVjdAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxGdW5j
dGlvblByb3RvdHlwZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCiB7CkBAIC02MSwx
NiArNjcsMTIgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZQogICAg
ICpjYWxsRnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxs
UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1
dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5lcmF0
b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKKyAgICBwdXREaXJlY3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgYXJndW1lbnRzR2V0dGVyLCBjYWxsZXJBbmRBcmd1bWVudHNTZXR0ZXIpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ip
OworICAgIHB1dERpcmVjdEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBj
YWxsZXJHZXR0ZXIsIGNhbGxlckFuZEFyZ3VtZW50c1NldHRlciksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisKICAgICAq
aGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rp
b25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmpl
Y3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KLSAgICAKLXZvaWQgRnVuY3Rpb25Qcm90b3R5
cGU6OmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi17Ci0gICAgR2V0dGVyU2V0dGVyKiBlcnJvckdldHRlclNldHRlciA9IGdsb2Jh
bE9iamVjdC0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXIoKTsKLSAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwgZXJyb3JHZXR0ZXJTZXR0ZXIsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7Ci0gICAgcHV0
RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5hcmd1bWVudHMsIGVycm9yR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwotfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKQEAgLTE1MSw0ICsxNTMsMTYx
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnUKICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIH0KIAorLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1yZWZsZWN0aW9uL2Jsb2Iv
bWFzdGVyL3NwZWMubWQjaXNhbGxvd2VkcmVjZWl2ZXJmdW5jdGlvbmZvcmNhbGxlcmFuZGFyZ3Vt
ZW50c2Z1bmMtZXhwZWN0ZWRyZWFsbSAoZXhjZXB0IHN0ZXAgMykKK3N0YXRpYyBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNBbGxvd2VkUmVjZWl2ZXJGdW5jdGlvbkZvckNhbGxlckFuZEFyZ3VtZW50cyhK
U0Z1bmN0aW9uKiBmdW5jdGlvbikKK3sKKyAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKKyAgICByZXR1cm4g
IWV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgJiYgZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUgJiYgIWV4ZWN1dGFibGUt
PmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7Cit9CisKK2NsYXNzIFJldHJpZXZlQXJndW1l
bnRzRnVuY3RvciB7CitwdWJsaWM6CisgICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKFZNJiB2
bSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCisgICAgICAgIDogbV92bSh2bSkKKyAgICAgICAg
LCBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikKKyAgICAgICAgLCBtX3Jlc3VsdChqc051bGwo
KSkKKyAgICB7CisgICAgfQorCisgICAgSlNWYWx1ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdDsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zp
c2l0b3ImIHZpc2l0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxl
ZSgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CisKKyAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsK
KyAgICAgICAgaWYgKGNhbGxlZSAhPSBtX3RhcmdldENhbGxlZSkKKyAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworCisgICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZSh2
aXNpdG9yLT5jcmVhdGVBcmd1bWVudHMobV92bSkpOworICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBKU09iamVj
dCogbV90YXJnZXRDYWxsZWU7CisgICAgbXV0YWJsZSBKU1ZhbHVlIG1fcmVzdWx0OworfTsKKwor
c3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCit7CisgICAgUmV0cmlldmVBcmd1bWVudHNG
dW5jdG9yIGZ1bmN0b3Iodm0sIGZ1bmN0aW9uT2JqKTsKKyAgICBpZiAoY2FsbEZyYW1lKQorICAg
ICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0sIGZ1bmN0b3IpOworICAgIHJldHVybiBmdW5jdG9y
LnJlc3VsdCgpOworfQorCisvLyBodHRwczovL2dpdGh1Yi5jb20vY2xhdWRlcGFjaGUvZXMtbGVn
YWN5LWZ1bmN0aW9uLXJlZmxlY3Rpb24vYmxvYi9tYXN0ZXIvc3BlYy5tZCNnZXQtZnVuY3Rpb25w
cm90b3R5cGVhcmd1bWVudHMKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihhcmd1bWVudHNHZXR0
ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTRnVuY3Rp
b24qIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghdGhpc09iaiB8fCAhaXNBbGxvd2VkUmVjZWl2ZXJG
dW5jdGlvbkZvckNhbGxlckFuZEFyZ3VtZW50cyh0aGlzT2JqKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgUmVzdHJpY3RlZFByb3BlcnR5QWNj
ZXNzRXJyb3IpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXRyaWV2ZUFyZ3VtZW50
cyh2bSwgdm0udG9wQ2FsbEZyYW1lLCB0aGlzT2JqKSk7Cit9CisKK2NsYXNzIFJldHJpZXZlQ2Fs
bGVyRnVuY3Rpb25GdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBSZXRyaWV2ZUNhbGxlckZ1bmN0aW9u
RnVuY3RvcihKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKKyAgICAgICAgOiBtX3RhcmdldENhbGxl
ZShmdW5jdGlvbk9iaikKKyAgICAgICAgLCBtX2hhc0ZvdW5kRnJhbWUoZmFsc2UpCisgICAgICAg
ICwgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFtZShmYWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChq
c051bGwoKSkKKyAgICB7CisgICAgfQorCisgICAgSlNWYWx1ZSByZXN1bHQoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3VsdDsgfQorCisgICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShT
dGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIXZpc2l0b3It
PmNhbGxlZSgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CisKKyAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB2aXNpdG9yLT5jYWxsZWUoKS5hc0Nl
bGwoKTsKKworICAgICAgICBpZiAoY2FsbGVlICYmIGNhbGxlZS0+aW5oZXJpdHM8SlNCb3VuZEZ1
bmN0aW9uPihjYWxsZWUtPnZtKCkpKQorICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
Q29udGludWU7CisKKyAgICAgICAgaWYgKCFtX2hhc0ZvdW5kRnJhbWUgJiYgY2FsbGVlICE9IG1f
dGFyZ2V0Q2FsbGVlKQorICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CisKKyAgICAgICAgbV9oYXNGb3VuZEZyYW1lID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFtX2hhc1Nr
aXBwZWRUb0NhbGxlckZyYW1lKSB7CisgICAgICAgICAgICBtX2hhc1NraXBwZWRUb0NhbGxlckZy
YW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbGxlZSkKKyAgICAgICAgICAgIG1fcmVzdWx0ID0g
Y2FsbGVlOworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBKU09iamVjdCogbV90YXJnZXRDYWxsZWU7CisgICAgbXV0YWJsZSBib29sIG1f
aGFzRm91bmRGcmFtZTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFt
ZTsKKyAgICBtdXRhYmxlIEpTVmFsdWUgbV9yZXN1bHQ7Cit9OworCitzdGF0aWMgSlNWYWx1ZSBy
ZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uT2JqKQoreworICAgIFJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9y
IGZ1bmN0b3IoZnVuY3Rpb25PYmopOworICAgIGlmIChjYWxsRnJhbWUpCisgICAgICAgIGNhbGxG
cmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7
Cit9CisKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jbGF1ZGVwYWNoZS9lcy1sZWdhY3ktZnVuY3Rp
b24tcmVmbGVjdGlvbi9ibG9iL21hc3Rlci9zcGVjLm1kI2dldC1mdW5jdGlvbnByb3RvdHlwZWNh
bGxlcgorSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGNhbGxlckdldHRlciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpz
RHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCF0aGlzT2JqIHx8ICFpc0FsbG93ZWRSZWNlaXZlckZ1bmN0aW9uRm9yQ2FsbGVy
QW5kQXJndW1lbnRzKHRoaXNPYmopKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBSZXN0cmljdGVkUHJvcGVydHlBY2Nlc3NFcnJvcik7CisKKyAg
ICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24odm0sIHZtLnRvcENhbGxG
cmFtZSwgdGhpc09iaik7CisgICAgaWYgKGNhbGxlci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisKKyAgICAvLyAxMS4gSWYgY2FsbGVyIGlzIG5v
dCBhbiBFQ01BU2NyaXB0IGZ1bmN0aW9uIG9iamVjdCwgcmV0dXJuIG51bGwuCisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbGVyKTsK
KyAgICBpZiAoIWZ1bmN0aW9uIHx8IGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKworICAgIC8vIDEy
LiBJZiBjYWxsZXIuW1tTdHJpY3RdXSBpcyB0cnVlLCByZXR1cm4gbnVsbC4KKyAgICBpZiAoZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKworICAgIC8vIFByZXZlbnQgYm9kaWVzIChw
cml2YXRlIGltcGxlbWVudGF0aW9ucykgb2YgZ2VuZXJhdG9yIC8gYXN5bmMgZnVuY3Rpb25zIGZy
b20gYmVpbmcgZXhwb3NlZC4KKyAgICAvLyBUaGV5IGV4cGVjdCB0byBiZSBjYWxsZWQgYnkgQGdl
bmVyYXRvclJlc3VtZSgpICYgZnJpZW5kcyB3aXRoIGNlcnRhaW4gYXJndW1lbnRzLCBhbmQgY3Jh
c2ggb3RoZXJ3aXNlLgorICAgIC8vIDE0LiBJZiBjYWxsZXIuW1tFQ01BU2NyaXB0Q29kZV1dIGlz
IGEgR2VuZXJhdG9yQm9keSwgYW4gQXN5bmNGdW5jdGlvbkJvZHksIGFuIEFzeW5jR2VuZXJhdG9y
Qm9keSwgb3IgYW4gQXN5bmNDb25jaXNlQm9keSwgcmV0dXJuIG51bGwuCisgICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCk7
CisgICAgaWYgKGlzR2VuZXJhdG9yUGFyc2VNb2RlKHBhcnNlTW9kZSkgfHwgaXNBc3luY0Z1bmN0
aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY2FsbGVyQW5kQXJndW1lbnRzU2V0dGVyLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNG
dW5jdGlvbiogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCF0aGlzT2JqIHx8ICFpc0FsbG93ZWRSZWNl
aXZlckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1lbnRzKHRoaXNPYmopKQorICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBSZXN0cmljdGVkUHJvcGVydHlBY2Nlc3NF
cnJvcik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmgJKHJldmlzaW9uIDI3ODQzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uLCBK
U0Z1bmN0aW9uKiogaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAKLSAgICB2b2lkIGluaXRS
ZXN0cmljdGVkUHJvcGVydGllcyhWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0KICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI3ODQzOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJDYXRjaFNjb3BlLmgiCi0jaW5jbHVk
ZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKQEAg
LTUzLDkgKzUyLDYgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxIb3N0RnVuY3Rpbwog
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QUNv
bnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpKTsKIH0K
IAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoYXJndW1lbnRzR2V0dGVyKTsKLXN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGNhbGxlckdldHRlcik7Ci0KIGNvbnN0IENs
YXNzSW5mbyBKU0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKIGNv
bnN0IENsYXNzSW5mbyBKU1N0cmljdEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTdHJp
Y3RGdW5jdGlvbikgfTsKIGNvbnN0IENsYXNzSW5mbyBKU1Nsb3BweUZ1bmN0aW9uOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNTbG9wcHlGdW5jdGlvbikgfTsKQEAgLTI4NCwxMzkgKzI4MCw2IEBAIENh
bGxEYXRhIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCoKICAgICByZXR1cm4gY2FsbERh
dGE7CiB9CiAKLWNsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAg
UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmop
Ci0gICAgICAgIDogbV92bSh2bSkKLSAgICAgICAgLCBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9i
aikKLSAgICAgICAgLCBtX3Jlc3VsdChqc051bGwoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgSlNW
YWx1ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQotCi0gICAgU3RhY2tWaXNp
dG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKQotICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0KLSAgICAgICAgSlNDZWxsKiBjYWxsZWUg
PSB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsKLSAgICAgICAgaWYgKGNhbGxlZSAhPSBtX3Rh
cmdldENhbGxlZSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwot
Ci0gICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZSh2aXNpdG9yLT5jcmVhdGVBcmd1bWVudHMobV92
bSkpOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBWTSYgbV92bTsKLSAgICBKU09iamVjdCogbV90YXJnZXRDYWxsZWU7Ci0gICAgbXV0
YWJsZSBKU1ZhbHVlIG1fcmVzdWx0OwotfTsKLQotc3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1
bWVudHMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb25P
YmopCi17Ci0gICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIGZ1bmN0b3Iodm0sIGZ1bmN0aW9u
T2JqKTsKLSAgICBpZiAoY2FsbEZyYW1lKQotICAgICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0s
IGZ1bmN0b3IpOwotICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOwotfQotCi1KU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoYXJndW1lbnRzR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQotewotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganND
YXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgQVNTRVJU
KCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmV0cmlldmVBcmd1bWVudHModm0sIHZtLnRvcENhbGxGcmFtZSwgdGhpc09iaikpOwotfQot
Ci1jbGFzcyBSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgUmV0
cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IoSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCi0gICAg
ICAgIDogbV90YXJnZXRDYWxsZWUoZnVuY3Rpb25PYmopCi0gICAgICAgICwgbV9oYXNGb3VuZEZy
YW1lKGZhbHNlKQotICAgICAgICAsIG1faGFzU2tpcHBlZFRvQ2FsbGVyRnJhbWUoZmFsc2UpCi0g
ICAgICAgICwgbV9yZXN1bHQoanNOdWxsKCkpCi0gICAgewotICAgIH0KLQotICAgIEpTVmFsdWUg
cmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KLQotICAgIFN0YWNrVmlzaXRvcjo6
U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKCF2aXNpdG9yLT5jYWxsZWUoKS5pc0NlbGwoKSkKLSAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotCi0gICAgICAgIEpTQ2VsbCogY2FsbGVlID0gdmlz
aXRvci0+Y2FsbGVlKCkuYXNDZWxsKCk7Ci0KLSAgICAgICAgaWYgKGNhbGxlZSAmJiBjYWxsZWUt
PmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4oY2FsbGVlLT52bSgpKSkKLSAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotCi0gICAgICAgIGlmICghbV9oYXNGb3VuZEZy
YW1lICYmIChjYWxsZWUgIT0gbV90YXJnZXRDYWxsZWUpKQotICAgICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6Q29udGludWU7Ci0KLSAgICAgICAgbV9oYXNGb3VuZEZyYW1lID0gdHJ1ZTsK
LSAgICAgICAgaWYgKCFtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lKSB7Ci0gICAgICAgICAgICBt
X2hhc1NraXBwZWRUb0NhbGxlckZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNhbGxlZSkKLSAg
ICAgICAgICAgIG1fcmVzdWx0ID0gY2FsbGVlOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU09iamVjdCogbV90YXJnZXRDYWxsZWU7
Ci0gICAgbXV0YWJsZSBib29sIG1faGFzRm91bmRGcmFtZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9o
YXNTa2lwcGVkVG9DYWxsZXJGcmFtZTsKLSAgICBtdXRhYmxlIEpTVmFsdWUgbV9yZXN1bHQ7Ci19
OwotCi1zdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKFZNJiB2bSwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQotewotICAgIFJldHJpZXZl
Q2FsbGVyRnVuY3Rpb25GdW5jdG9yIGZ1bmN0b3IoZnVuY3Rpb25PYmopOwotICAgIGlmIChjYWxs
RnJhbWUpCi0gICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7Ci0gICAgcmV0
dXJuIGZ1bmN0b3IucmVzdWx0KCk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjYWxs
ZXJHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotCi0gICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVu
Y3Rpb24oKSk7Ci0gICAgSlNWYWx1ZSBjYWxsZXIgPSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKHZt
LCB2bS50b3BDYWxsRnJhbWUsIHRoaXNPYmopOwotCi0gICAgLy8gU2VlIEVTNS4xIDE1LjMuNS40
IC0gRnVuY3Rpb24uY2FsbGVyIG1heSBub3QgYmUgdXNlZCB0byByZXRyaWV2ZSBhIHN0cmljdCBj
YWxsZXIuCi0gICAgaWYgKCFjYWxsZXIuaXNPYmplY3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+
aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7Ci0gICAgICAgIC8vIEl0IGlzbid0IGEgSlNGdW5j
dGlvbiwgYnV0IGlmIGl0IGlzIGEgSlNDYWxsZWUgZnJvbSBhIHByb2dyYW0gb3IgZXZhbCBjYWxs
IG9yIGFuIGludGVybmFsIGNvbnN0cnVjdG9yLCByZXR1cm4gbnVsbC4KLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwgY2FsbGVyKSB8fCBqc0R5bmFtaWNDYXN0PEludGVy
bmFsRnVuY3Rpb24qPih2bSwgY2FsbGVyKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdWxsKCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7
Ci0gICAgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
YWxsZXIpOwotCi0gICAgLy8gRmlyZWZveCByZXR1cm5zIG51bGwgZm9yIG5hdGl2ZSBjb2RlIGNh
bGxlcnMsIHNvIHdlIG1hdGNoIHRoYXQgYmVoYXZpb3IuCi0gICAgaWYgKGZ1bmN0aW9uLT5pc0hv
c3RPckJ1aWx0aW5GdW5jdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKLQotICAgIGlmIChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwotCi0g
ICAgLy8gUHJldmVudCBib2RpZXMgKHByaXZhdGUgaW1wbGVtZW50YXRpb25zKSBvZiBnZW5lcmF0
b3IgLyBhc3luYyBmdW5jdGlvbnMgZnJvbSBiZWluZyBleHBvc2VkLgotICAgIC8vIFRoZXkgYXJl
IGNhbGxlZCBieSBAZ2VuZXJhdG9yUmVzdW1lKCkgJiBmcmllbmRzLCBleHBlY3RpbmcgY2VydGFp
biBhcmd1bWVudHMsIGFuZCBjcmFzaCBvdGhlcndpc2UuCi0gICAgLy8gQWxzbywgaGlkZSBnZW5l
cmF0b3IgLyBhc3luYyBmdW5jdGlvbiB3cmFwcGVycyBmb3IgY29uc2lzdGVuY3kgYW5kIGJlY2F1
c2UgaXQncyBvbiBzdGFuZGFyZHMgdHJhY2s6Ci0gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Ns
YXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1yZWZsZWN0aW9uL2Jsb2IvbWFzdGVyL3NwZWMu
bWQjZ2V0LWZ1bmN0aW9ucHJvdG90eXBlY2FsbGVyIChzdGVwIDE0KQotICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpOwot
ICAgIGlmIChpc0dlbmVyYXRvclBhcnNlTW9kZShwYXJzZU1vZGUpIHx8IGlzQXN5bmNGdW5jdGlv
blBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVsbCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVyKTsKLX0KLQogYm9v
bCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTQ1
OSwyMCArMzIyLDYgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgog
ICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIH0KICAg
ICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzLCB0aGlzT2JqZWN0LT5n
ZXREaXJlY3Qob2Zmc2V0KSwgb2Zmc2V0KTsKLSAgICB9Ci0KLSAgICBpZiAocHJvcGVydHlOYW1l
ID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewotICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0g
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwotICAg
ICAgICAKLSAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIGFyZ3VtZW50c0dldHRlcik7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+Y2FsbGVyKSB7Ci0gICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCkt
Pmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkKLSAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7Ci0KLSAgICAgICAgc2xvdC5zZXRDYWNo
ZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUs
IGNhbGxlckdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNDg2LDMx
ICszMzUsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25TcGVjaWFsUHJvcGVydHlOYQogewog
ICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkluY2x1ZGUpIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0
aW5GdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQuCi0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgICAg
ICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3Qp
OwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAg
ICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1
bWVudHNQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2
bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWRMZW5ndGgoKSkKLSAgICAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOwotICAgICAgICAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5oYXNSZWlmaWVkTmFtZSgpKQotICAgICAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmlzQnVpbHRpbkZ1bmN0aW9uKCkgfHwgdGhp
c09iamVjdC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWRMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9CisgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExl
bmd0aCgpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5oYXNSZWlmaWVkTmFtZSgpKQorICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7CisgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSAmJiB0aGlzT2Jq
ZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSkKKyAgICAgICAgICAg
IHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgfQog
fQogCkBAIC01NTQsMTMgKzM4Niw2IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHbG8KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAg
fQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMg
fHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikgewotICAgICAgICBp
ZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9w
ZXJ0aWVzKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1
dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsK
LQotICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7Ci0gICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0KICAgICBQcm9wZXJ0eVN0YXR1cyBwcm9wZXJ0eVR5cGUg
PSB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzTGF6eShwcm9wZXJ0eVR5cGUpKQogICAgICAgICBz
bG90LmRpc2FibGVDYWNoaW5nKCk7CkBAIC01ODYsMTIgKzQxMSw3IEBAIGJvb2wgSlNGdW5jdGlv
bjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiAKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAodm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0g
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKSB7CiAgICAgICAgIC8v
IEZvciBub24taG9zdCBmdW5jdGlvbnMsIGRvbid0IGxldCB0aGVzZSBwcm9wZXJ0aWVzIGJ5IGRl
bGV0ZWQgLSBleGNlcHQgYnkgRGVmaW5lT3duUHJvcGVydHkuCi0gICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVy
IHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpICYmIGV4ZWN1
dGFibGUtPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSAmJiBleGVjdXRhYmxlLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpKQorICAg
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0
aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90eXBlUHJvcGVydHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9w
ZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CkBAIC02MzEsNDUg
KzQ1MSwxMiBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAg
ICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRh
KCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9w
ZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0
KCk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhy
b3dFeGNlcHRpb24pKTsKLSAgICB9Ci0KLSAgICBib29sIHZhbHVlQ2hlY2s7Ci0gICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpIHsKLSAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVy
dGllcygpKQotICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZp
bmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCB0aHJvd0V4Y2VwdGlvbikpOwotCi0gICAgICAgIHZhbHVlQ2hlY2sgPSAhZGVzY3JpcHRv
ci52YWx1ZSgpOwotICAgICAgICBpZiAoIXZhbHVlQ2hlY2spIHsKLSAgICAgICAgICAgIHZhbHVl
Q2hlY2sgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yLnZhbHVlKCksIHJldHJp
ZXZlQXJndW1lbnRzKHZtLCB2bS50b3BDYWxsRnJhbWUsIHRoaXNPYmplY3QpKTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikgewotICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVu
dHNQcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7Ci0KLSAgICAgICAgdmFsdWVDaGVjayA9ICFk
ZXNjcmlwdG9yLnZhbHVlKCk7Ci0gICAgICAgIGlmICghdmFsdWVDaGVjaykgewotICAgICAgICAg
ICAgdmFsdWVDaGVjayA9IHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IudmFsdWUo
KSwgcmV0cmlldmVDYWxsZXJGdW5jdGlvbih2bSwgdm0udG9wQ2FsbEZyYW1lLCB0aGlzT2JqZWN0
KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0
eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogICAgIH0KLSAgICAgCi0g
ICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29u
ZmlndXJhYmxlKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgdGhyb3dFeGNlcHRpb24sIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFi
aWxpdHlFcnJvcik7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBk
ZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUVudW1lcmFiaWxpdHlFcnJvcik7Ci0gICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2Ny
aXB0b3IoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlz
bUVycm9yKTsKLSAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlw
dG9yLndyaXRhYmxlKCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgdGhyb3dFeGNlcHRpb24sIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJp
bGl0eUVycm9yKTsKLSAgICBpZiAoIXZhbHVlQ2hlY2spCi0gICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIFJlYWRvbmx5UHJvcGVydHlD
aGFuZ2VFcnJvcik7Ci0gICAgcmV0dXJuIHRydWU7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CiB9CiAKIC8vIEVDTUEgMTMu
Mi4yIFtbQ29uc3RydWN0XV0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3ODQzOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzgwLDEyICs3ODAsNiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAg
ICAgfSk7CiAKICAgICBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNl
dCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7Ci0gICAgbV90aHJvd1R5cGVF
cnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2Vy
ID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JGdW5jdGlvbigpOwotICAgICAgICAgICAgR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBp
bml0Lm93bmVyLCB0aHJvd2VyLCB0aHJvd2VyKTsKLSAgICAgICAgICAgIGluaXQuc2V0KGdldHRl
clNldHRlcik7Ci0gICAgICAgIH0pOwogCiAgICAgbV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7
CiAgICAgU3RydWN0dXJlKiBudWxsU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUgPSBOdWxsU2V0dGVy
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5n
ZXQoKSk7CkBAIC04MDEsMTYgKzc5NSwxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZN
JiB2bSkKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUodm0pLT5zZXRQcm90b3R5
cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1f
b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCB2bS5zdHJ1
Y3R1cmVDYWNoZS5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSh0aGlzLCBtX29iamVj
dFByb3RvdHlwZS5nZXQoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkp
KTsKICAgICBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0
PEpTRnVuY3Rpb24qPihvYmplY3RQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT52YWx1ZU9mKSkpOwotICAgIAotICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIGVtcHR5U3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJv
d1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik7Ci0gICAgdGhyb3dlci0+ZnJlZXpl
KHZtKTsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCB0aGlzLCB0aHJvd2VyLCB0aHJvd2VyKTsKLSAgICBtX3Rocm93VHlwZUVycm9yQXJn
dW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhpcywgZ2V0dGVyU2V0
dGVyKTsKLSAgICAKLSAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3Bl
cnRpZXModm0sIHRoaXMpOwogCiAgICAgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhp
cywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIG51
bGxwdHIpKTsKIAorICAgIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0
ZXIuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVy
PiYgaW5pdCkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBlbXB0eVN0cmluZygpLCBnbG9iYWxGdW5j
VGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIpOworICAgICAgICAgICAgdGhy
b3dlci0+ZnJlZXplKGluaXQudm0pOworICAgICAgICAgICAgaW5pdC5zZXQoR2V0dGVyU2V0dGVy
OjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgdGhyb3dlciwgdGhyb3dlcikpOworICAgICAg
ICB9KTsKICAgICBtX3R5cGVkQXJyYXlQcm90by5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlPiYgaW5pdCkgewogICAgICAg
ICAgICAgaW5pdC5zZXQoSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0s
IGluaXQub3duZXIsIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBpbml0Lm93bmVyLCBpbml0Lm93bmVyLT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSkp
KTsKQEAgLTIwOTUsOSArMjA4OCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW5JbXBsKEoKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvVmFs
dWVPZkZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1
bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKLSAgICB0aGlzT2JqZWN0LT5t
X3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5k
Q2FsbGVyR2V0dGVyU2V0dGVyKTsKKyAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJn
dW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3Qt
Pm1fbW9kdWxlTG9hZGVyLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDAsOSArMzQwLDggQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgSlNGdW5jdGlvbj4gbV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9s
RnVuY3Rpb247Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBHZXR0ZXJTZXR0ZXI+
IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0
PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZTsKLSAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0
dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVy
OworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93
VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyOwogCiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlcj4gbV9tb2R1bGVMb2FkZXI7CiAKQEAgLTY5
NiwxMCArNjk1LDcgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1N5bWJvbFJl
cGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNl
LmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNv
bnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7
Ci0gICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxl
ckdldHRlclNldHRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFy
Z3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlci5nZXQoKTsKLSAgICB9CisgICAgR2V0
dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUdldHRlclNldHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIu
Z2V0KHRoaXMpOyB9CiAgICAgCiAgICAgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCh0aGlzKTsgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBBU0NJSUxpdGVyYWwgT2JqZWN0UHJv
dG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yIHsgIk9iamVjdC5wcm90b3R5cGUuX19wcm90
b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCJfcyB9OworY29uc3QgQVNDSUlMaXRlcmFs
IFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9yIHsgIidhcmd1bWVudHMnLCAnY2FsbGVlJywg
YW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIl9zIH07CiAK
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KIHN0YXRpYyBCaXRtYXA8MjU2PiBt
YWtlQ2hhcmFjdGVyQml0bWFwKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291
bnRdKQpAQCAtNjgxLDcgKzY4Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxG
dW5jVGhyb3cKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2Fs
bGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIpOworICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFj
Y2Vzc0Vycm9yKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNNYWtl
VHlwZUVycm9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzg0MzkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEpTT2JqZWN0OwogLy8gaXMgYSAwLjUlIHJl
ZHVjdGlvbi4KIAogZXh0ZXJuIGNvbnN0IEFTQ0lJTGl0ZXJhbCBPYmplY3RQcm90b0NhbGxlZE9u
TnVsbE9yVW5kZWZpbmVkRXJyb3I7CitleHRlcm4gY29uc3QgQVNDSUlMaXRlcmFsIFJlc3RyaWN0
ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9yOwogCiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2Jh
bEZ1bmNFdmFsKTsKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1BhcnNlSW50
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJl
dmlzaW9uIDI3ODQzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwNSw2ICsxOTA1LDIyIEBAIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlvbihW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKCFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOwor
ICAgIEFTU0VSVCh2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKKyAgICBBU1NFUlQoYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpOworCisg
ICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVj
dHVyZUlEKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBwcmVwYXJlVG9QdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1cmVJ
RCwgc3RydWN0dXJlKTsKKyAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOworCisgICAg
aWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCisgICAgICAgIHN0
cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKKyAgICBzdHJ1Y3R1cmUt
PnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXNXaXRoUHJvdG9DaGVjayhwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKK30KKwogYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciogYWNjZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
CiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3Ip
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lv
biAyNzg0MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NTAsNiArNjUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0RGly
ZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBH
ZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBib29sIHB1dERpcmVjdEFj
Y2Vzc29yKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0
aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAog
ICAgIGJvb2wgcHV0R2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBib29sIHB1dFNldHRlcihKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzg0MzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNi0wNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgUGFydGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90
b3R5cGUue2NhbGxlcixhcmd1bWVudHN9IHJlZmxlY3Rpb24gcHJvcG9zYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Jhc2ljLXN0cmljdC1tb2Rl
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9ub24tc3RyaWN0LWZ1bmN0aW9uLXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0
LW1vZGUuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24t
cHJvcGVydGllcy5qczoKKwogMjAyMS0wNi0wMyAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dQRV0gcG9zaXRpb246c3RpY2t5IGNvbnRlbnQgaXMgbm90IGNvcnJl
Y3RseSBvZmZzZXQgb24gYXN5bmMgc2Nyb2xsZWQgb3ZlcmZsb3cgbGF5ZXJzIHdpdGggYW4gUlRM
IHZlcnRpY2FsIHNjcm9sbGJhcgpJbmRleDogTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL09i
amVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4NDM5KQor
KysgTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyh7X19wcm90b18KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyh7X19wcm90
b19fOlsxLDIsM119KSBpcyBbXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVj
dC5jcmVhdGUoe30sIHsgJ2EnOiB7ICd2YWx1ZSc6IDEsICdlbnVtZXJhYmxlJzogZmFsc2UgfSB9
KSkgaXMgWydhJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QuY3JlYXRl
KFsxLDIsM10sIHsgJ2EnOiB7ICd2YWx1ZSc6IDEsICdlbnVtZXJhYmxlJzogZmFsc2UgfSB9KSkg
aXMgWydhJ10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhuZXcgRnVuY3Rpb24oKSkg
aXMgWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSdd
Ci1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoKGZ1bmN0aW9uKCl7dmFyIHg9bmV3IEZ1
bmN0aW9uKCk7eC5fX3Byb3RvX189WzEsMiwzXTtyZXR1cm4geDt9KSgpKSBpcyBbJ2FyZ3VtZW50
cycsICdjYWxsZXInLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KK1BBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhuZXcgRnVuY3Rpb24oKSkgaXMgWydsZW5ndGgnLCAnbmFtZScs
ICdwcm90b3R5cGUnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKChmdW5jdGlvbigp
e3ZhciB4PW5ldyBGdW5jdGlvbigpO3guX19wcm90b19fPVsxLDIsM107cmV0dXJuIHg7fSkoKSkg
aXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKG5ldyBTdHJpbmcoJycpKSBpcyBbJ2xlbmd0aCddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMobmV3IFN0cmluZygnYScpKSBpcyBbJzAnLCAnbGVuZ3RoJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhuZXcgU3RyaW5nKCdhYmMnKSkgaXMgWycwJywgJzEn
LCAnMicsICdsZW5ndGgnXQpJbmRleDogTGF5b3V0VGVzdHMvanMvYmFzaWMtc3RyaWN0LW1vZGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Jhc2ljLXN0cmljdC1t
b2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4NDM5KQorKysgTGF5b3V0VGVzdHMvanMvYmFz
aWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2
LDggQEAgUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dQogUEFTUyAoZnVu
Y3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJykudmFsdWU7IH0pKCkgaXMgdW5kZWZpbmVkLgog
UEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVyJyk7IH0pKCkgaXMgdW5kZWZpbmVk
LgogUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpOyByZXR1
cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKLVBBU1Mg
KGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2NhbGxlcicpOyByZXR1cm4gZGVz
Y3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKLVBBU1MgKGZ1bmN0
aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2FyZ3VtZW50cycpOyByZXR1cm4gZGVzY3Jp
cHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2NhbGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5n
ZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIGZhbHNlCitQQVNTIChmdW5jdGlvbiBmKGFy
Zyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZi5fX3Byb3RvX18sICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0
ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyBmYWxzZQogUEFTUyAndXNlIHN0cmljdCc7IChm
dW5jdGlvbiBmKCkgeyBmb3IodmFyIGkgaW4gdGhpcyk7IH0pKCk7IHRydWU7IGlzIHRydWUKIFBB
U1MgJ3VzZSBzdHJpY3QnzLsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIGNo
YXJhY3RlciAnXHUwMzNiJy4KIFBBU1MgKGZ1bmN0aW9uKCl7J3VzZSBzdHJpY3QnzLt9KSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgY2hhcmFjdGVyICdcdTAzM2InLgpAQCAt
MjEzLDcgKzIxMyw3IEBAIFBBU1MgKGZ1bmN0aW9uICgpIHsndXNlIHN0cmljdCc7ICB0cnkgeyAK
IFBBU1MgdHJ5IHsgdGhyb3cgMTsgfSBjYXRjaCAoZSkgeyBhR2xvYmFsID0gdHJ1ZTsgfSBpcyB0
cnVlCiBQQVNTIChmdW5jdGlvbiAoKSB7IHRyeSB7IHRocm93IDE7IH0gY2F0Y2ggKGUpIHsgYUds
b2JhbCA9IHRydWU7IH19KSgpOyBhR2xvYmFsOyBpcyB0cnVlCiBQQVNTIChmdW5jdGlvbiAoKSB7
dHJ5IHsgdGhyb3cgMTsgfSBjYXRjaCAoZSkgeyBhR2xvYmFsID0gdHJ1ZTsgfX0pKCk7IGFHbG9i
YWw7IGlzIHRydWUKLVBBU1MgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
KGZ1bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IH0pLl9fcHJvdG9fXywgImNhbGxlciIpLmdldCkg
aXMgJ2Z1bmN0aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59JworUEFTUyBTdHJpbmcoT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0Ijsg
fSkuX19wcm90b19fLCAiY2FsbGVyIikuZ2V0KSBpcyAnZnVuY3Rpb24gY2FsbGVyKCkge1xuICAg
IFtuYXRpdmUgY29kZV1cbn0nCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2pzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJv
cGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvbm9uLXN0
cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4NDM5KQor
KysgTGF5b3V0VGVzdHMvanMvbm9uLXN0cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxNSArMywxNSBAQCBUZXN0IGNhbGxlciBhbmQgYXJn
dW1lbnRzIHByb3BlcnRpZXMgaW4gCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkubGVuZ3RoIGlzIDUK
LVBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVz
KCJjYWxsZXIiKSBpcyB0cnVlCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0
aW9uICgpIHt9KS5pbmNsdWRlcygiYXJndW1lbnRzIikgaXMgdHJ1ZQotUEFTUyAoZnVuY3Rpb24o
KXt9KS5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkubGVuZ3RoIGlzIDMKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJjYWxsZXIiKSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkuaW5j
bHVkZXMoImFyZ3VtZW50cyIpIGlzIGZhbHNlCitQQVNTIChmdW5jdGlvbigpe30pLmhhc093blBy
b3BlcnR5KCJjYWxsZXIiKSBpcyBmYWxzZQogUEFTUyAoZnVuY3Rpb24oKXt9KS5fX3Byb3RvX18u
aGFzT3duUHJvcGVydHkoImNhbGxlciIpIGlzIHRydWUKLVBBU1MgKGZ1bmN0aW9uKCl7fSkuaGFz
T3duUHJvcGVydHkoImFyZ3VtZW50cyIpIGlzIHRydWUKK1BBU1MgKGZ1bmN0aW9uKCl7fSkuaGFz
T3duUHJvcGVydHkoImFyZ3VtZW50cyIpIGlzIGZhbHNlCiBQQVNTIChmdW5jdGlvbigpe30pLl9f
cHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikgaXMgdHJ1ZQotUEFTUyB0eXBlb2Yg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJhcmd1bWVudHMiKSBpcyAib2Jq
ZWN0IgotUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJj
YWxsZXIiKSBpcyAib2JqZWN0IgorUEFTUyB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihmb28sICJhcmd1bWVudHMiKSBpcyAidW5kZWZpbmVkIgorUEFTUyB0eXBlb2YgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJjYWxsZXIiKSBpcyAidW5kZWZpbmVk
IgogUEFTUyBmb28uY2FsbGVyIGlzIG51bGwKIFBBU1MgZm9vLmFyZ3VtZW50cyBpcyBudWxsCiBQ
QVNTIGZvby5jYWxsZXIgaXMgbnVsbApJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwkocmV2aXNpb24g
Mjc4NDM5KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBAIHZhciBleHBlY3Rl
ZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAgICAgIk9iamVjdC5jcmVhdGUoe30sIHsgJ2EnOiB7ICd2
YWx1ZSc6IDEsICdlbnVtZXJhYmxlJzogZmFsc2UgfSB9KSI6ICJbJ2EnXSIsCiAgICAgIk9iamVj
dC5jcmVhdGUoWzEsMiwzXSwgeyAnYSc6IHsgJ3ZhbHVlJzogMSwgJ2VudW1lcmFibGUnOiBmYWxz
ZSB9IH0pIjogIlsnYSddIiwKIC8vIEZ1bmN0aW9uIG9iamVjdHMKLSAgICAibmV3IEZ1bmN0aW9u
KCkiOiAiWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlw
ZSddIiwKLSAgICAiKGZ1bmN0aW9uKCl7dmFyIHg9bmV3IEZ1bmN0aW9uKCk7eC5fX3Byb3RvX189
WzEsMiwzXTtyZXR1cm4geDt9KSgpIjogIlsnYXJndW1lbnRzJywgJ2NhbGxlcicsICdsZW5ndGgn
LCAnbmFtZScsICdwcm90b3R5cGUnXSIsCisgICAgIm5ldyBGdW5jdGlvbigpIjogIlsnbGVuZ3Ro
JywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAorICAgICIoZnVuY3Rpb24oKXt2YXIgeD1uZXcgRnVu
Y3Rpb24oKTt4Ll9fcHJvdG9fXz1bMSwyLDNdO3JldHVybiB4O30pKCkiOiAiWydsZW5ndGgnLCAn
bmFtZScsICdwcm90b3R5cGUnXSIsCiAvLyBTdHJpbmcgb2JqZWN0cwogICAgICJuZXcgU3RyaW5n
KCcnKSI6ICJbJ2xlbmd0aCddIiwKICAgICAibmV3IFN0cmluZygnYScpIjogIlsnMCcsICdsZW5n
dGgnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1v
ZGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXN0
cmljdC1tb2RlLmpzCShyZXZpc2lvbiAyNzg0MzkpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw4ICsxODcs
OCBAQCBzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlCiBzaG91bGRCZVVu
ZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIik7
CiBzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVy
biBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpOyB9
KSgpIik7CiBzaG91bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAn
Y2FsbGVlJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCki
KTsKLXNob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2Nh
bGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7
Ci1zaG91bGRCZVRydWUoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZi5fX3Byb3RvX18sICdhcmd1
bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIp
Oworc2hvdWxkQmVGYWxzZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2Nh
bGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7
CitzaG91bGRCZUZhbHNlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnYXJn
dW1lbnRzJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCki
KTsKIHNob3VsZEJlVHJ1ZSgiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZhciBp
IGluIHRoaXMpOyB9KSgpOyB0cnVlOyIpCiAKIHNob3VsZEJlU3ludGF4RXJyb3IoIid1c2Ugc3Ry
aWN0J1x1MDMzYiIpOwpAQCAtMjE1LDQgKzIxNSw0IEBAIGFHbG9iYWwgPSBmYWxzZTsKIHNob3Vs
ZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpIHt0cnkgeyB0aHJvdyAxOyB9IGNhdGNoIChlKSB7IGFHbG9i
YWwgPSB0cnVlOyB9fSkoKTsgYUdsb2JhbDsiKTsKIAogLy8gTWFrZSBzdXJlIHRoaXMgZG9lc24n
dCBjcmFzaCEKLXNob3VsZEJlKCdTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cigoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgfSkuX19wcm90b19fLCAiY2FsbGVyIikuZ2V0
KScsICInZnVuY3Rpb24gKCkge1xcbiAgICBbbmF0aXZlIGNvZGVdXFxufSciKTsKK3Nob3VsZEJl
KCdTdHJpbmcoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigoZnVuY3Rpb24oKSB7ICJ1
c2Ugc3RyaWN0IjsgfSkuX19wcm90b19fLCAiY2FsbGVyIikuZ2V0KScsICInZnVuY3Rpb24gY2Fs
bGVyKCkge1xcbiAgICBbbmF0aXZlIGNvZGVdXFxufSciKTsKSW5kZXg6IExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9ub24tc3RyaWN0LWZ1bmN0aW9uLXByb3BlcnRpZXMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJv
cGVydGllcy5qcwkocmV2aXNpb24gMjc4NDM5KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVydGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAt
NCwxOSArNCwxOSBAQCBmdW5jdGlvbiBmb28oKSB7CiAgICAgcmV0dXJuIDE7CiB9CiAKLXNob3Vs
ZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkubGVuZ3RoJywn
NScpOworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9
KS5sZW5ndGgnLCAnMycpOwogCi1zaG91bGRCZVRydWUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKGZ1bmN0aW9uICgpIHt9KS5pbmNsdWRlcygiY2FsbGVyIiknKTsKLXNob3VsZEJlVHJ1ZSgn
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJhcmd1
bWVudHMiKScpOworc2hvdWxkQmVGYWxzZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVu
Y3Rpb24gKCkge30pLmluY2x1ZGVzKCJjYWxsZXIiKScpOworc2hvdWxkQmVGYWxzZSgnT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJhcmd1bWVudHMi
KScpOwogCi1zaG91bGRCZVRydWUoJyhmdW5jdGlvbigpe30pLmhhc093blByb3BlcnR5KCJjYWxs
ZXIiKScpOworc2hvdWxkQmVGYWxzZSgnKGZ1bmN0aW9uKCl7fSkuaGFzT3duUHJvcGVydHkoImNh
bGxlciIpJyk7CiBzaG91bGRCZVRydWUoJyhmdW5jdGlvbigpe30pLl9fcHJvdG9fXy5oYXNPd25Q
cm9wZXJ0eSgiY2FsbGVyIiknKTsKIAotc2hvdWxkQmVUcnVlKCcoZnVuY3Rpb24oKXt9KS5oYXNP
d25Qcm9wZXJ0eSgiYXJndW1lbnRzIiknKTsKK3Nob3VsZEJlRmFsc2UoJyhmdW5jdGlvbigpe30p
Lmhhc093blByb3BlcnR5KCJhcmd1bWVudHMiKScpOwogc2hvdWxkQmVUcnVlKCcoZnVuY3Rpb24o
KXt9KS5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkoImFyZ3VtZW50cyIpJyk7CiAKLXNob3VsZEJl
KCd0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJhcmd1bWVudHMi
KScsICcib2JqZWN0IicpOwotc2hvdWxkQmUoJ3R5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGZvbywgImNhbGxlciIpJywgJyJvYmplY3QiJyk7CitzaG91bGRCZSgndHlwZW9m
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiYXJndW1lbnRzIiknLCAnInVu
ZGVmaW5lZCInKTsKK3Nob3VsZEJlKCd0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihmb28sICJjYWxsZXIiKScsICcidW5kZWZpbmVkIicpOwogCiBzaG91bGRCZSgnZm9vLmNh
bGxlcicsICdudWxsJyk7CiBzaG91bGRCZSgnZm9vLmFyZ3VtZW50cycsICdudWxsJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430875</attachid>
            <date>2021-06-08 12:32:43 -0700</date>
            <delta_ts>2021-07-03 10:57:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158116-20210608223241.patch</filename>
            <type>text/plain</type>
            <size>76802</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzg2MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTA2LTA4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQYXJ0bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3RvdHlw
ZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVjdGlvbiBwcm9wb3NhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0
LzE5LmZ1bmN0aW9uLmJhc2VsaW5lOgorICAgICAgICAqIENoYWtyYUNvcmUvdGVzdC9zdHJpY3Qv
MjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRzLmJhc2VsaW5lLWpzYzoKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLWdldC5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL3JlZmxlY3Qtb3duLWtleXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9mb3ItaW4tc2hhZG93LW5vbi1lbnVtZXJhYmxlLmpzOgorICAgICAgICAqIHN0
cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVyLmpzOgorICAgICAgICAqIHN0cmVzcy9oYXMt
b3duLXByb3BlcnR5LWFyZ3VtZW50cy5qczoKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWFzc2ln
bi1mYXN0LXBhdGguanM6CisgICAgICAgICogc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOgorICAgICAg
ICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6IFNraXAgMyB0ZXN0IGNhc2VzIHRoYXQgYXJlIG5vdyBp
bmNvcnJlY3QuCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDogTWFyayAyIHRl
c3QgY2FzZXMgYXMgcGFzc2luZy4KKwogMjAyMS0wNi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBSZXNvbHZlZENsb3N1cmVWYXIgdG8g
Z2V0IGJyYW5kIGZyb20gc2NvcGUKSW5kZXg6IEpTVGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmlj
dC8xOS5mdW5jdGlvbi5iYXNlbGluZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL0NoYWtyYUNvcmUv
dGVzdC9zdHJpY3QvMTkuZnVuY3Rpb24uYmFzZWxpbmUJKHJldmlzaW9uIDI3ODYwOSkKKysrIEpT
VGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmljdC8xOS5mdW5jdGlvbi5iYXNlbGluZQkod29ya2lu
ZyBjb3B5KQpAQCAtMiwxNyArMiw1IEBAIFJldHVybjogZnVuY3Rpb24uY2FsbGVyIGdldAogUmV0
dXJuOiBmdW5jdGlvbi5jYWxsZXIgc2V0CiBSZXR1cm46IGZ1bmN0aW9uLmFyZ3VtZW50cyBnZXQK
IFJldHVybjogZnVuY3Rpb24uYXJndW1lbnRzIGdldAotVGVzdDUuY2FsbGVyOmNvbmZpZ3VyYWJs
ZSA6IGZhbHNlCi1UZXN0NS5jYWxsZXI6ZW51bWVyYWJsZSAgIDogZmFsc2UKLVRlc3Q1LmNhbGxl
cjp3cml0YWJsZSAgICAgOiBmYWxzZQotVGVzdDUuY2FsbGVyOmdldHRlciAgICAgICA6IHVuZGVm
aW5lZAotVGVzdDUuY2FsbGVyOnNldHRlciAgICAgICA6IHVuZGVmaW5lZAotVGVzdDUuY2FsbGVy
OnZhbHVlICAgICAgICA6IG51bGwKLVJldHVybjogZnVuY3Rpb24uY2FsbGVyIGdldAotVGVzdDYu
YXJndW1lbnRzOmNvbmZpZ3VyYWJsZSA6IGZhbHNlCi1UZXN0Ni5hcmd1bWVudHM6ZW51bWVyYWJs
ZSAgIDogZmFsc2UKLVRlc3Q2LmFyZ3VtZW50czp3cml0YWJsZSAgICAgOiBmYWxzZQotVGVzdDYu
YXJndW1lbnRzOmdldHRlciAgICAgICA6IHVuZGVmaW5lZAotVGVzdDYuYXJndW1lbnRzOnNldHRl
ciAgICAgICA6IHVuZGVmaW5lZAotVGVzdDYuYXJndW1lbnRzOnZhbHVlICAgICAgICA6IFtvYmpl
Y3QgQXJndW1lbnRzXQotUmV0dXJuOiBmdW5jdGlvbi5hcmd1bWVudHMgZ2V0CitFeGNlcHRpb246
IGZ1bmN0aW9uLmNhbGxlciBnZXQgVHlwZUVycm9yCitFeGNlcHRpb246IGZ1bmN0aW9uLmFyZ3Vt
ZW50cyBnZXQgVHlwZUVycm9yCkluZGV4OiBKU1Rlc3RzL0NoYWtyYUNvcmUvdGVzdC9zdHJpY3Qv
MjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRzLmJhc2VsaW5lLWpzYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL0NoYWtyYUNvcmUvdGVzdC9zdHJpY3QvMjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRzLmJhc2Vs
aW5lLWpzYwkocmV2aXNpb24gMjc4NjA5KQorKysgSlNUZXN0cy9DaGFrcmFDb3JlL3Rlc3Qvc3Ry
aWN0LzIyLmNhbGxlckNhbGxlZUFyZ3VtZW50cy5iYXNlbGluZS1qc2MJKHdvcmtpbmcgY29weSkK
QEAgLTIsMTkgKzIsMTkgQEAKIGhhc093blByb3BlcnR5KGNhbGxlcik6IGZhbHNlCiAKIHZhciBm
b28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7ZWNobygiaGFzT3duUHJvcGVydHkoY2FsbGVy
KTogIiwgZm9vLmhhc093blByb3BlcnR5KCJjYWxsZXIiKSk7fSkoKTsKLWhhc093blByb3BlcnR5
KGNhbGxlcik6IHRydWUKK2hhc093blByb3BlcnR5KGNhbGxlcik6IGZhbHNlCiAKIHZhciBmb28g
PSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2VjaG8oImhhc093blByb3Bl
cnR5KGNhbGxlcik6ICIsIGZvby5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikpO30pKCk7Ci1oYXNP
d25Qcm9wZXJ0eShjYWxsZXIpOiB0cnVlCitoYXNPd25Qcm9wZXJ0eShjYWxsZXIpOiBmYWxzZQog
CiAoZnVuY3Rpb24oKXtlY2hvKCJoYXNPd25Qcm9wZXJ0eShjYWxsZWUpOiAiLCBhcmd1bWVudHMu
aGFzT3duUHJvcGVydHkoImNhbGxlZSIpKTt9KSgpOwogaGFzT3duUHJvcGVydHkoY2FsbGVlKTog
dHJ1ZQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe2VjaG8oImhhc093blBy
b3BlcnR5KGFyZ3VtZW50cyk6ICIsIGZvby5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikpO30p
KCk7Ci1oYXNPd25Qcm9wZXJ0eShhcmd1bWVudHMpOiB0cnVlCitoYXNPd25Qcm9wZXJ0eShhcmd1
bWVudHMpOiBmYWxzZQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ug
c3RyaWN0IjtlY2hvKCJoYXNPd25Qcm9wZXJ0eShhcmd1bWVudHMpOiAiLCBmb28uaGFzT3duUHJv
cGVydHkoImFyZ3VtZW50cyIpKTt9KSgpOwotaGFzT3duUHJvcGVydHkoYXJndW1lbnRzKTogdHJ1
ZQoraGFzT3duUHJvcGVydHkoYXJndW1lbnRzKTogZmFsc2UKIAogKGZ1bmN0aW9uKCl7YXJndW1l
bnRzLmNhbGxlcjt9KSgpOwogCkBAIC0zMyw0MSArMzMsMzkgQEAgdmFyIGZvbyA9IGZ1bmN0aW9u
KCl7fTsoZnVuY3Rpb24oKXsidXNlIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24o
KXtmb28uY2FsbGVyID0gMDt9KSgpOwogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlv
bigpeyJ1c2Ugc3RyaWN0Ijtmb28uY2FsbGVyID0gMDt9KSgpOwotVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LgogCiAoZnVuY3Rpb24oKXthcmd1bWVu
dHMuY2FsbGVlID0gMDt9KSgpOwogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigp
e2Zvby5hcmd1bWVudHMgPSAwO30pKCk7CiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0
aW9uKCl7InVzZSBzdHJpY3QiO2Zvby5hcmd1bWVudHMgPSAwO30pKCk7Ci1UeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuCiAKIChmdW5jdGlvbigpe09i
amVjdC5kZWZpbmVQcm9wZXJ0eShhcmd1bWVudHMsICJjYWxsZXIiLCB7dmFsdWU6IDB9KTt9KSgp
OwogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShmb28sICJjYWxsZXIiLCB7dmFsdWU6IDB9KTt9KSgpOwotVHlwZUVycm9yOiBBdHRlbXB0
aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LgogCiB2YXIgZm9vID0g
ZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZm9vLCAiY2FsbGVyIiwge3ZhbHVlOiAwfSk7fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4KIAogKGZ1bmN0aW9uKCl7
T2JqZWN0LmRlZmluZVByb3BlcnR5KGFyZ3VtZW50cywgImNhbGxlZSIsIHt2YWx1ZTogMH0pO30p
KCk7CiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7T2JqZWN0LmRlZmluZVBy
b3BlcnR5KGZvbywgImFyZ3VtZW50cyIsIHt2YWx1ZTogMH0pO30pKCk7Ci1UeXBlRXJyb3I6IEF0
dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuCiAKIHZhciBm
b28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShmb28sICJhcmd1bWVudHMiLCB7dmFsdWU6IDB9KTt9KSgpOwotVHlwZUVycm9yOiBB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LgogCiAoZnVu
Y3Rpb24oKXt2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
YXJndW1lbnRzLCAiY2FsbGVyIik7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0Iikp
IHNhZmVDYWxsKGRlc2NyaXB0b3IuZ2V0KTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJz
ZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5zZXQpO30pKCk7CiBUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdkZXNjcmlwdG9yLmhhc093blByb3BlcnR5
JykKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt2YXIgZGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiY2FsbGVyIik7aWYoZGVzY3Jp
cHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0b3IuZ2V0KTtpZihk
ZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5zZXQp
O30pKCk7CitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdkZXNjcmlwdG9yLmhhc093blByb3BlcnR5JykKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTso
ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGZvbywgImNhbGxlciIpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVy
dHkoImdldCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLmdldCk7aWYoZGVzY3JpcHRvci5oYXNPd25Q
cm9wZXJ0eSgic2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9KSgpOworVHlwZUVycm9y
OiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZGVzY3JpcHRvci5oYXNP
d25Qcm9wZXJ0eScpCiAKIChmdW5jdGlvbigpe3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICJjYWxsZWUiKTtpZihkZXNjcmlwdG9yLmhh
c093blByb3BlcnR5KCJnZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5nZXQpO2lmKGRlc2NyaXB0
b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLnNldCk7fSkoKTsK
IAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXt2YXIgZGVzY3JpcHRvciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiYXJndW1lbnRzIik7aWYoZGVzY3Jp
cHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0b3IuZ2V0KTtpZihk
ZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5zZXQp
O30pKCk7CitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdkZXNjcmlwdG9yLmhhc093blByb3BlcnR5JykKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTso
ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGZvbywgImFyZ3VtZW50cyIpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJv
cGVydHkoImdldCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLmdldCk7aWYoZGVzY3JpcHRvci5oYXNP
d25Qcm9wZXJ0eSgic2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9KSgpOworVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnZGVzY3JpcHRvci5o
YXNPd25Qcm9wZXJ0eScpCiAKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9u
LXByb3RvdHlwZS1nZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZnVuY3Rpb24tcHJvdG90eXBlLWdldC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtZ2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNyBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBwcm90b3R5cGU7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAyZTU7ICsraSkKKyAgICAgICAgcHJvdG90eXBlID0gKGZ1bmN0aW9uKCkg
e30pLnByb3RvdHlwZTsKKyAgICBpZiAoIXByb3RvdHlwZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQgYXNzZXJ0aW9uISIpOworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3JlZmxlY3Qtb3duLWtleXMtZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvcmVmbGVjdC1vd24ta2V5cy1mdW5jdGlvbi5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9yZWZsZWN0LW93bi1rZXlzLWZ1bmN0aW9uLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorbm9JbmxpbmUoUmVmbGVjdC5vd25LZXlz
KTsKKworKGZ1bmN0aW9uKCkgeworICAgIHZhciBrZXlzOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU1OyArK2kpCisgICAgICAgIGtleXMgPSBSZWZsZWN0Lm93bktleXMoZnVuY3Rpb24oKSB7
fSk7CisgICAgaWYgKCFrZXlzKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRp
b24hIik7Cit9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvZm9yLWluLXNoYWRvdy1ub24tZW51
bWVyYWJsZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9mb3ItaW4tc2hhZG93LW5v
bi1lbnVtZXJhYmxlLmpzCShyZXZpc2lvbiAyNzg2MDkpCisrKyBKU1Rlc3RzL3N0cmVzcy9mb3It
aW4tc2hhZG93LW5vbi1lbnVtZXJhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBAIGNvbnN0IHRlc3RDYXNlcyA9IFsKICAgewogICAgIG5hbWU6ICJGdW5jdGlvbiAobm9uLXN0
cmljdCkiLAogICAgIGNyZWF0ZU9iamVjdDogKCkgPT4gZnVuY3Rpb24oKSB7fSwKLSAgICBkb250
RW51bUtleXM6IFsiYXJndW1lbnRzIiwgImNhbGxlciIsICJsZW5ndGgiLCAibmFtZSIsICJwcm90
b3R5cGUiXSwKKyAgICBkb250RW51bUtleXM6IFsibGVuZ3RoIiwgIm5hbWUiLCAicHJvdG90eXBl
Il0sCiAgIH0sCiAgIHsKICAgICBuYW1lOiAiUmVnRXhwIiwKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L2Z1bmN0aW9uLWhpZGRlbi1hcy1jYWxsZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJl
c3MvZnVuY3Rpb24taGlkZGVuLWFzLWNhbGxlci5qcwkocmV2aXNpb24gMjc4NjA5KQorKysgSlNU
ZXN0cy9zdHJlc3MvZnVuY3Rpb24taGlkZGVuLWFzLWNhbGxlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMywxMSArMywxMyBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkLCB0ZXN0
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0gKCR7dGVzdElu
Zm99KWApOwogfQogCitjb25zdCBmdW5jdGlvblByb3RvdHlwZUNhbGxlckdldHRlciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRnVuY3Rpb24ucHJvdG90eXBlLCAiY2FsbGVyIiku
Z2V0OworCiBsZXQgY2FsbGVyVmlhR2V0OwogbGV0IGNhbGxlclZpYUdldE93blByb3BlcnR5Owog
ZnVuY3Rpb24gdXBkYXRlQ2FsbGVyKCkgewogICAgIGNhbGxlclZpYUdldCA9IHVwZGF0ZUNhbGxl
ci5jYWxsZXI7Ci0gICAgY2FsbGVyVmlhR2V0T3duUHJvcGVydHkgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHVwZGF0ZUNhbGxlciwgImNhbGxlciIpLnZhbHVlOworICAgIGNhbGxl
clZpYUdldE93blByb3BlcnR5ID0gZnVuY3Rpb25Qcm90b3R5cGVDYWxsZXJHZXR0ZXIuY2FsbCh1
cGRhdGVDYWxsZXIpOwogfQogbm9JbmxpbmUodXBkYXRlQ2FsbGVyKTsKIApJbmRleDogSlNUZXN0
cy9zdHJlc3MvaGFzLW93bi1wcm9wZXJ0eS1hcmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNU
ZXN0cy9zdHJlc3MvaGFzLW93bi1wcm9wZXJ0eS1hcmd1bWVudHMuanMJKHJldmlzaW9uIDI3ODYw
OSkKKysrIEpTVGVzdHMvc3RyZXNzL2hhcy1vd24tcHJvcGVydHktYXJndW1lbnRzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDQgKzUsNCBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CiAKIGNsYXNzIEEgZXh0ZW5kcyBGdW5jdGlvbiB7fQogc2hvdWxkQmUobmV3IEEoIid1
c2Ugc3RyaWN0JzsiKS5oYXNPd25Qcm9wZXJ0eSgnYXJndW1lbnRzJyksIGZhbHNlKTsKLXNob3Vs
ZEJlKG5ldyBBKCkuaGFzT3duUHJvcGVydHkoJ2FyZ3VtZW50cycpLCB0cnVlKTsKK3Nob3VsZEJl
KG5ldyBBKCkuaGFzT3duUHJvcGVydHkoJ2FyZ3VtZW50cycpLCBmYWxzZSk7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9vYmplY3QtYXNzaWduLWZhc3QtcGF0aC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9vYmplY3QtYXNzaWduLWZhc3QtcGF0aC5qcwkocmV2aXNpb24gMjc4NjA5KQor
KysgSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgZnVuY3Rpb24gY2hlY2tQcm9wZXJ0eShvYmplY3QsIG5hbWUs
IHZhbAogICAgICAgICBvazogNDIKICAgICB9KTsKIAotICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJlc3VsdCkuc29ydCgpKSwgYFsiYXJndW1l
bnRzIiwiY2FsbGVyIiwibGVuZ3RoIiwibmFtZSIsIm9rIiwicHJvdG90eXBlIl1gKTsKKyAgICBz
aG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyZXN1bHQp
LnNvcnQoKSksIGBbImxlbmd0aCIsIm5hbWUiLCJvayIsInByb3RvdHlwZSJdYCk7CiAgICAgY2hl
Y2tQcm9wZXJ0eShyZXN1bHQsICJvayIsIDQyKTsKIH0KIHsKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3JlZmxlY3Qtc2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0
LmpzCShyZXZpc2lvbiAyNzg2MDkpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWZsZWN0LXNldC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTIwNCwxMSArMTIwNCwxMSBAQCB2YXIgc3ltYm9sID0gU3ltYm9s
KCk7CiAoZnVuY3Rpb24gZnVuY3Rpb25DYXNlKCkgewogICAgIHZhciBmdW5jID0gZnVuY3Rpb24g
KCkgeyB9OwogICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMsICdhcmd1bWVudHMnKSwgbnVs
bCk7Ci0gICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoZnVuYywgJ2FyZ3VtZW50cycsIDQyKSwgZmFs
c2UpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1bmMsICdhcmd1bWVudHMnLCA0MiksIHRy
dWUpOwogICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMsICdhcmd1bWVudHMnKSwgbnVsbCk7
CiAKICAgICBzaG91bGRCZShSZWZsZWN0LmdldChmdW5jLCAnY2FsbGVyJyksIG51bGwpOwotICAg
IHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1bmMsICdjYWxsZXInLCA0MiksIGZhbHNlKTsKKyAgICBz
aG91bGRCZShSZWZsZWN0LnNldChmdW5jLCAnY2FsbGVyJywgNDIpLCB0cnVlKTsKICAgICBzaG91
bGRCZShSZWZsZWN0LmdldChmdW5jLCAnY2FsbGVyJyksIG51bGwpOwogCiAgICAgcmVjZWl2ZXJU
ZXN0KGZ1bmN0aW9uICgpIHt9LCBmdW5jdGlvbiAoKSB7fSk7CkBAIC0xMjE5LDExICsxMjE5LDE2
IEBAIHZhciBzeW1ib2wgPSBTeW1ib2woKTsKICAgICByZWNlaXZlclRlc3RJbmRleGVkKGZ1bmN0
aW9uICgpIHt9LCB7fSk7CiAKICAgICB2YXIgcmVjZWl2ZXIgPSB7fTsKLSAgICBzaG91bGRCZShS
ZWZsZWN0LnNldChmdW5jLCAnYXJndW1lbnRzJywgJ1YnLCByZWNlaXZlciksIGZhbHNlKTsKKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIFJlZmxlY3Quc2V0KGZ1bmMsICdhcmd1bWVu
dHMnLCAnVicsIHJlY2VpdmVyKTsKKyAgICB9LCBgVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2Nh
bGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LmAp
OwogICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KHJlY2VpdmVyLCAnYXJndW1lbnRzJyksIHVuZGVm
aW5lZCk7CiAgICAgc2hvdWxkQmUocmVjZWl2ZXIuaGFzT3duUHJvcGVydHkoJ2FyZ3VtZW50cycp
LCBmYWxzZSk7CiAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQoZnVuYywgJ2FyZ3VtZW50cycpLCBu
dWxsKTsKLSAgICBzaG91bGRCZShSZWZsZWN0LnNldChmdW5jLCAnY2FsbGVyJywgJ1YnLCByZWNl
aXZlciksIGZhbHNlKTsKKworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgUmVmbGVj
dC5zZXQoZnVuYywgJ2NhbGxlcicsICdWJywgcmVjZWl2ZXIpOworICAgIH0sIGBUeXBlRXJyb3I6
ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBp
biB0aGlzIGNvbnRleHQuYCk7CiAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQocmVjZWl2ZXIsICdj
YWxsZXInKSwgdW5kZWZpbmVkKTsKICAgICBzaG91bGRCZShyZWNlaXZlci5oYXNPd25Qcm9wZXJ0
eSgnY2FsbGVyJyksIGZhbHNlKTsKICAgICBzaG91bGRCZShSZWZsZWN0LmdldChmdW5jLCAnY2Fs
bGVyJyksIG51bGwpOwpJbmRleDogSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAkocmV2aXNpb24gMjc4NjA5KQorKysg
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwx
MSBAQCBza2lwOgogICAgIC0gY2xlYW51cFNvbWUKICAgcGF0aHM6CiAgIGZpbGVzOgorICAgICMg
aHR0cHM6Ly9naXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1yZWZsZWN0
aW9uCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UaHJvd1R5cGVFcnJvci91bmlxdWUtcGVyLXJlYWxt
LWZ1bmN0aW9uLXByb3RvLmpzCisgICAgLSB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5
cGUvcmVzdHJpY3RlZC1wcm9wZXJ0eS1hcmd1bWVudHMuanMKKyAgICAtIHRlc3QvYnVpbHQtaW5z
L0Z1bmN0aW9uL3Byb3RvdHlwZS9yZXN0cmljdGVkLXByb3BlcnR5LWNhbGxlci5qcworCiAgICAg
IyBTbGlnaHRseSBkaWZmZXJlbnQgZm9ybWF0dGluZy4gV2Ugc2hvdWxkIHVwZGF0ZSB0ZXN0MjYy
IHNpZGUuCiAgICAgLSB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dFJhbmdlVG9QYXJ0cy9lbi1VUy5qcwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRSYW5nZVRvUGFydHMvZnJhY3Rpb25hbFNlY29uZERpZ2l0cy5qcwpJ
bmRleDogSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjc4NjA5KQorKysgSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsMTAg
Kzc2Miw2IEBAIHRlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmkKIHRlc3Qv
YnVpbHQtaW5zL09iamVjdC9lbnRyaWVzL29yZGVyLWFmdGVyLWRlZmluZS1wcm9wZXJ0eS5qczoK
ICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW2EsIG5hbWVdIGFuZCBbbmFtZSwg
YV0gdG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgW2EsIG5hbWVdIGFuZCBbbmFtZSwgYV0gdG8gaGF2ZSB0aGUgc2FtZSBj
b250ZW50cy4gJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2ludGVybmFscy9EZWZpbmVPd25Qcm9w
ZXJ0eS9jb25zaXN0ZW50LXZhbHVlLWZ1bmN0aW9uLWFyZ3VtZW50cy5qczoKLSAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrbnVsbMK7LCDCq1tvYmplY3QgQXJn
dW1lbnRzXcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvT2JqZWN0L2ludGVybmFscy9E
ZWZpbmVPd25Qcm9wZXJ0eS9jb25zaXN0ZW50LXZhbHVlLWZ1bmN0aW9uLWNhbGxlci5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrbnVsbMK7LCDCq2Z1
bmN0aW9uIGcoKSB7JwogdGVzdC9idWlsdC1pbnMvT2JqZWN0L2ludGVybmFscy9EZWZpbmVPd25Q
cm9wZXJ0eS9jb25zaXN0ZW50LXZhbHVlLXJlZ2V4cC1kb2xsYXIxLmpzOgogICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvCuywgwqt4wrspIHRvIGJlIHRydWUn
CiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqvCuywg
wqt4wrspIHRvIGJlIHRydWUnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw5MSBAQAorMjAyMS0wNi0wOCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgUGFydGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90
b3R5cGUue2NhbGxlcixhcmd1bWVudHN9IHJlZmxlY3Rpb24gcHJvcG9zYWwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGVuc3VyZSB3ZWItY29tcGF0
aWJpbGl0eSwgb25seSB0aGUgc2FmZSBzdWJzZXQgb2YgRnVuY3Rpb24ucHJvdG90eXBlLntjYWxs
ZXIsYXJndW1lbnRzfQorICAgICAgICByZWZsZWN0aW9uIHByb3Bvc2FsIFsxXSBpcyBpbXBsZW1l
bnRlZCwgd2hpY2ggaXMgY3VycmVudGx5IHNoaXBwZWQgaW4gU3BpZGVyTW9ua2V5LgorCisgICAg
ICAgIENvbXBsZXRlIGxpc3Qgb2YgZGlmZmVyZW5jZXMgZnJvbSB0aGUgcHJvcG9zZWQgc3BlYzoK
KworICAgICAgICAgIDEuIENyb3NzLXJlYWxtIHJlY2VpdmVyIGZ1bmN0aW9uIGlzIGFsbG93ZWQg
aW5zdGVhZCBvZiB0aHJvd2luZyBhIFR5cGVFcnJvci4KKworICAgICAgICAgICAgIFRocm93aW5n
IGlzIGxpa2VseSBzYWZlIHRvIHNoaXAsIGJ1dCAjMjI1OTk3IG5lZWRzIHRvIGJlIGZpeGVkIGZp
cnN0IGZvcgorICAgICAgICAgICAgIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIHJlY2VpdmUgY29ycmVj
dCBnbG9iYWwgb2JqZWN0LgorCisgICAgICAgICAgMi4gQ3Jvc3MtcmVhbG0gY2FsbGVyIGZ1bmN0
aW9uIGlzIHJldHVybmVkIGluc3RlYWQgb2YgYG51bGxgLgorCisgICAgICAgICAgICAgSGlkaW5n
IGNyb3NzLXJlYWxtIGNhbGxlciBtYXkgYnJlYWsgdGhpbmdzOiB3ZSBjdXJyZW50bHkgaGF2ZSBh
IHRlc3QgZm9yCisgICAgICAgICAgICAgdGhlIG9wcG9zaXRlIGJlaGF2aW9yLgorCisgICAgICAg
ICAgMy4gRGVmaW5lcyAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIgc2V0dGVycyB0aGF0IHRocm93
IGZvciBkaXNhbGxvd2VkIHJlY2VpdmVycywKKyAgICAgICAgICAgICBpbnN0ZWFkIGZhaWxpbmcg
c2lsZW50bHkgaW4gc2xvcHB5IG1vZGUuCisKKyAgICAgICAgICAgICBUaGlzIGlzIGFjdHVhbGx5
IG1vcmUgcmVzdHJpY3RpdmUgdGhhbiB0aGUgc3BlYywgd2hpY2ggaXMgcHJlZmVyYWJsZSwKKyAg
ICAgICAgICAgICBhbmQgYWxpZ25zIHdpdGggVjggYW5kIFNNLgorCisgICAgICAgIE1vc3QgaW1w
b3J0YW50bHksIHRoaXMgcGF0Y2ggcmVtb3ZlcyBvd24gImNhbGxlciIgYW5kICJhcmd1bWVudHMi
IHByb3BlcnRpZXMgZnJvbQorICAgICAgICBzbG9wcHkgbW9kZSBFUzUgZnVuY3Rpb25zLiBUaGV5
IHdlcmUgbm9uLWNvbmZpZ3VyYWJsZSwgbWFraW5nIGl0IGhhcmRlciB0byB1c2UKKyAgICAgICAg
dGhlaXIgaG9sZGVyIGFzIGEgW1tQcm94eVRhcmdldF1dLiBUaGV5IHdlcmUgYWxzbyBub24td3Jp
dGFibGUsIHdpdGggYSBjb25zdGFudGx5CisgICAgICAgIGNoYW5naW5nIFtbVmFsdWVdXSwgd2hp
Y2ggdmlvbGF0ZWQgdGhlIGludmFyaWFudHMgb2YgaW50ZXJuYWwgbWV0aG9kcyBbMl0uCisKKyAg
ICAgICAgQXMgYSByZXN1bHQsIEpTRnVuY3Rpb24gbWV0aG9kcyBhcmUgZ3JlYXRseSBzaW1wbGlm
aWVkLCBlc3BlY2lhbGx5IGRlZmluZU93blByb3BlcnR5KCkKKyAgICAgICAgYW5kIGdldE93blNw
ZWNpYWxQcm9wZXJ0eU5hbWVzKCkuIFRoZSBsYXR0ZXIgaXMgbm93IDIuMXggZmFzdGVyIGFjY29y
ZGluZyB0byB0aGUKKyAgICAgICAgcHJvdmlkZWQgbWljcm9iZW5jaG1hcmsuIEFsc28sIHJlbW92
ZXMgZG91YmxlICJwcm90b3R5cGUiIGxvb2t1cCBmcm9tIFtbR2V0XV0sCisgICAgICAgIHdoaWNo
IGlzIGEgMTAlIHByb2dyZXNzaW9uLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1yZWZsZWN0aW9uCisgICAgICAgIFsyXTog
aHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pbnZhcmlhbnRzLW9mLXRoZS1lc3NlbnRpYWwt
aW50ZXJuYWwtbWV0aG9kcworCisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
OgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVTcGVjaWFscyk6CisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFk
ZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmlzQWxsb3dlZFJlY2VpdmVyRnVu
Y3Rpb25Gb3JDYWxsZXJBbmRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3Vt
ZW50c0Z1bmN0b3I6OlJldHJpZXZlQXJndW1lbnRzRnVuY3Rvcik6CisgICAgICAgIChKU0M6OlJl
dHJpZXZlQXJndW1lbnRzRnVuY3Rvcjo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmV0
cmlldmVBcmd1bWVudHNGdW5jdG9yOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
cmV0cmlldmVBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rvcjo6UmV0cmll
dmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1
bmN0aW9uRnVuY3Rvcjo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UmV0cmlldmVDYWxs
ZXJGdW5jdGlvbkZ1bmN0b3I6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRy
aWV2ZUNhbGxlckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmluaXRSZXN0cmljdGVkUHJv
cGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omdl
dE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0
KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlJldHJp
ZXZlQXJndW1lbnRzRnVuY3Rvcjo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpyZXN1bHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3I6Om9wZXJhdG9y
KCkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yOjpSZXRyaWV2ZUNh
bGxlckZ1bmN0aW9uRnVuY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJldHJpZXZlQ2Fs
bGVyRnVuY3Rpb25GdW5jdG9yOjpyZXN1bHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OnJldHJpZXZlQ2FsbGVyRnVuY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICBS
ZW1vdmUgdW51c2VkIG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIgYW5kIG1ha2UgW1tUaHJv
d1R5cGVFcnJvcl1dIGxhemlseS1jcmVhdGVkLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0
RGlyZWN0Q3VzdG9tR2V0dGVyU2V0dGVyV2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKwogMjAyMS0wNi0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBSZXNvbHZlZENsb3N1cmVWYXIgdG8gZ2V0
IGJyYW5kIGZyb20gc2NvcGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
b25lZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgxLDcgKzE4MSw3IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNs
b3QKIAogICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKSB7CiAg
ICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlIHx8IGV4ZWN1dGFibGUtPnVzZXNOb25TaW1wbGVQ
YXJhbWV0ZXJMaXN0KCkpIHsKLSAgICAgICAgICAgICAgICBzbG90LnNldEdldHRlclNsb3QodGhp
c09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IsIHRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCh2bSktPnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0
dGVyU2V0dGVyKCkpOworICAgICAgICAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzT2Jq
ZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciwgdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KHZtKS0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIoKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIDAsIHRoaXNPYmplY3QtPm1fY2FsbGVlLmdldCgp
KTsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6bWF0ZXJpYWxpemVT
cGVjaWFsCiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpOwogICAgIAogICAgIGlmIChpc1N0cmljdE1vZGUgfHwgZXhlY3V0YWJsZS0+dXNlc05v
blNpbXBsZVBhcmFtZXRlckxpc3QoKSkKLSAgICAgICAgcHV0RGlyZWN0QWNjZXNzb3IoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9iamVjdCh2bSkt
PnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKyAgICAgICAgcHV0RGlyZWN0QWNjZXNz
b3IoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIHRoaXMtPmdsb2JhbE9i
amVjdCh2bSktPnRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyKCksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKICAgICBlbHNlCiAgICAgICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCBKU1ZhbHVlKG1fY2FsbGVlLmdldCgp
KSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyNzg2MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEy
ICsxMzksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dlbmVyYXRvcigpIGNvbnN0IHsgcmV0dXJu
IGlzR2VuZXJhdG9yUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogICAgIGJvb2wgaXNBc3luY0dl
bmVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGlzQXN5bmNHZW5lcmF0b3JQYXJzZU1vZGUocGFyc2VN
b2RlKCkpOyB9CiAgICAgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsgfQotICAgIGJvb2wgaGFzQ2FsbGVyQW5k
QXJndW1lbnRzUHJvcGVydGllcygpIGNvbnN0Ci0gICAgewotICAgICAgICAvLyBQZXIgaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZm9yYmlkZGVuLWV4dGVuc2lvbnMsIG9ubHkg
c2xvcHB5LW1vZGUgbm9uLWJ1aWx0aW4gZnVuY3Rpb25zIGluIG9sZC1zdHlsZSAocHJlLUVTNikg
c3ludGFjdGljIGZvcm1zIGNhbiBjb250YWluCi0gICAgICAgIC8vICJjYWxsZXIiIGFuZCAiYXJn
dW1lbnRzIi4KLSAgICAgICAgcmV0dXJuICFpc0luU3RyaWN0Q29udGV4dCgpICYmIHBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlICYmICFpc0NsYXNzQ29u
c3RydWN0b3JGdW5jdGlvbigpOwotICAgIH0KICAgICBib29sIGhhc1Byb3RvdHlwZVByb3BlcnR5
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyNzg2MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDEwIEBA
CiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgorI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMzUsNiArMzcsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uUHJvdG90eXBlOjpz
X2luZgogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1bmNU
b1N0cmluZyk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsRnVuY3Rpb25Q
cm90b3R5cGUpOwogCitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihhcmd1bWVudHNH
ZXR0ZXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY2FsbGVyR2V0dGVyKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKGNhbGxlckFuZEFyZ3VtZW50c1NldHRl
cik7CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvcGVydGllcy1vZi10aGUt
ZnVuY3Rpb24tcHJvdG90eXBlLW9iamVjdAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxG
dW5jdGlvblByb3RvdHlwZSwgKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCiB7CkBAIC02
MCwxNiArNjYsMTIgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZQog
ICAgICpjYWxsRnVuY3Rpb24gPSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5j
YWxsUHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIHZtLnByb3BlcnR5TmFtZXMtPmJpbmQsIGZ1bmN0aW9uUHJvdG90eXBlQmluZENvZGVHZW5l
cmF0b3Iodm0pLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAKKyAgICBwdXREaXJlY3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgYXJndW1lbnRzR2V0dGVyLCBjYWxsZXJBbmRBcmd1bWVudHNTZXR0ZXIpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpOworICAgIHB1dERpcmVjdEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCBjYWxsZXJHZXR0ZXIsIGNhbGxlckFuZEFyZ3VtZW50c1NldHRlciksIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisKICAg
ICAqaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVu
Y3Rpb25Qcm90b3R5cGVTeW1ib2xIYXNJbnN0YW5jZUNvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxP
YmplY3QpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5oYXNJbnN0YW5jZVN5bWJvbCwgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24sIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KLSAgICAKLXZvaWQgRnVuY3Rpb25Qcm90
b3R5cGU6OmluaXRSZXN0cmljdGVkUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi17Ci0gICAgR2V0dGVyU2V0dGVyKiBlcnJvckdldHRlclNldHRlciA9IGds
b2JhbE9iamVjdC0+dGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIoKTsKLSAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwgZXJyb3JHZXR0ZXJTZXR0ZXIsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7Ci0gICAg
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMsIGVycm9yR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwotfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKQEAgLTk5LDQgKzEwMSwx
NjEgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdQogICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogfQogCisvLyBodHRwczov
L2dpdGh1Yi5jb20vY2xhdWRlcGFjaGUvZXMtbGVnYWN5LWZ1bmN0aW9uLXJlZmxlY3Rpb24vYmxv
Yi9tYXN0ZXIvc3BlYy5tZCNpc2FsbG93ZWRyZWNlaXZlcmZ1bmN0aW9uZm9yY2FsbGVyYW5kYXJn
dW1lbnRzZnVuYy1leHBlY3RlZHJlYWxtIChleGNlcHQgc3RlcCAzKQorc3RhdGljIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0FsbG93ZWRSZWNlaXZlckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1lbnRz
KEpTRnVuY3Rpb24qIGZ1bmN0aW9uKQoreworICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOworICAgIHJldHVy
biAhZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSAmJiBleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSAmJiAhZXhlY3V0YWJs
ZS0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKK30KKworY2xhc3MgUmV0cmlldmVBcmd1
bWVudHNGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IoVk0m
IHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgICAg
ICAsIG1fdGFyZ2V0Q2FsbGVlKGZ1bmN0aW9uT2JqKQorICAgICAgICAsIG1fcmVzdWx0KGpzTnVs
bCgpKQorICAgIHsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdWx0OyB9CisKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNr
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghdmlzaXRvci0+Y2Fs
bGVlKCkuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKKworICAgICAgICBKU0NlbGwqIGNhbGxlZSA9IHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgp
OworICAgICAgICBpZiAoY2FsbGVlICE9IG1fdGFyZ2V0Q2FsbGVlKQorICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVl
KHZpc2l0b3ItPmNyZWF0ZUFyZ3VtZW50cyhtX3ZtKSk7CisgICAgICAgIHJldHVybiBTdGFja1Zp
c2l0b3I6OkRvbmU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIEpTT2Jq
ZWN0KiBtX3RhcmdldENhbGxlZTsKKyAgICBtdXRhYmxlIEpTVmFsdWUgbV9yZXN1bHQ7Cit9Owor
CitzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUFyZ3VtZW50cyhWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKK3sKKyAgICBSZXRyaWV2ZUFyZ3VtZW50
c0Z1bmN0b3IgZnVuY3Rvcih2bSwgZnVuY3Rpb25PYmopOworICAgIGlmIChjYWxsRnJhbWUpCisg
ICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0
b3IucmVzdWx0KCk7Cit9CisKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jbGF1ZGVwYWNoZS9lcy1s
ZWdhY3ktZnVuY3Rpb24tcmVmbGVjdGlvbi9ibG9iL21hc3Rlci9zcGVjLm1kI2dldC1mdW5jdGlv
bnByb3RvdHlwZWFyZ3VtZW50cworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGFyZ3VtZW50c0dl
dHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNGdW5j
dGlvbiogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCF0aGlzT2JqIHx8ICFpc0FsbG93ZWRSZWNlaXZl
ckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1lbnRzKHRoaXNPYmopKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBSZXN0cmljdGVkUHJvcGVydHlB
Y2Nlc3NFcnJvcik7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJldHJpZXZlQXJndW1l
bnRzKHZtLCB2bS50b3BDYWxsRnJhbWUsIHRoaXNPYmopKTsKK30KKworY2xhc3MgUmV0cmlldmVD
YWxsZXJGdW5jdGlvbkZ1bmN0b3IgeworcHVibGljOgorICAgIFJldHJpZXZlQ2FsbGVyRnVuY3Rp
b25GdW5jdG9yKEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQorICAgICAgICA6IG1fdGFyZ2V0Q2Fs
bGVlKGZ1bmN0aW9uT2JqKQorICAgICAgICAsIG1faGFzRm91bmRGcmFtZShmYWxzZSkKKyAgICAg
ICAgLCBtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lKGZhbHNlKQorICAgICAgICAsIG1fcmVzdWx0
KGpzTnVsbCgpKQorICAgIHsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHJlc3VsdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdWx0OyB9CisKKyAgICBTdGFja1Zpc2l0b3I6OlN0YXR1cyBvcGVyYXRvcigp
KFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghdmlzaXRv
ci0+Y2FsbGVlKCkuaXNDZWxsKCkpCisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpD
b250aW51ZTsKKworICAgICAgICBKU0NlbGwqIGNhbGxlZSA9IHZpc2l0b3ItPmNhbGxlZSgpLmFz
Q2VsbCgpOworCisgICAgICAgIGlmIChjYWxsZWUgJiYgY2FsbGVlLT5pbmhlcml0czxKU0JvdW5k
RnVuY3Rpb24+KGNhbGxlZS0+dm0oKSkpCisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpDb250aW51ZTsKKworICAgICAgICBpZiAoIW1faGFzRm91bmRGcmFtZSAmJiBjYWxsZWUgIT0g
bV90YXJnZXRDYWxsZWUpCisgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51
ZTsKKworICAgICAgICBtX2hhc0ZvdW5kRnJhbWUgPSB0cnVlOworICAgICAgICBpZiAoIW1faGFz
U2tpcHBlZFRvQ2FsbGVyRnJhbWUpIHsKKyAgICAgICAgICAgIG1faGFzU2tpcHBlZFRvQ2FsbGVy
RnJhbWUgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2FsbGVlKQorICAgICAgICAgICAgbV9yZXN1bHQg
PSBjYWxsZWU7CisgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CisgICAgfQorCitw
cml2YXRlOgorICAgIEpTT2JqZWN0KiBtX3RhcmdldENhbGxlZTsKKyAgICBtdXRhYmxlIGJvb2wg
bV9oYXNGb3VuZEZyYW1lOworICAgIG11dGFibGUgYm9vbCBtX2hhc1NraXBwZWRUb0NhbGxlckZy
YW1lOworICAgIG11dGFibGUgSlNWYWx1ZSBtX3Jlc3VsdDsKK307CisKK3N0YXRpYyBKU1ZhbHVl
IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNG
dW5jdGlvbiogZnVuY3Rpb25PYmopCit7CisgICAgUmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0
b3IgZnVuY3RvcihmdW5jdGlvbk9iaik7CisgICAgaWYgKGNhbGxGcmFtZSkKKyAgICAgICAgY2Fs
bEZyYW1lLT5pdGVyYXRlKHZtLCBmdW5jdG9yKTsKKyAgICByZXR1cm4gZnVuY3Rvci5yZXN1bHQo
KTsKK30KKworLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5j
dGlvbi1yZWZsZWN0aW9uL2Jsb2IvbWFzdGVyL3NwZWMubWQjZ2V0LWZ1bmN0aW9ucHJvdG90eXBl
Y2FsbGVyCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoY2FsbGVyR2V0dGVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0g
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBpZiAoIXRoaXNPYmogfHwgIWlzQWxsb3dlZFJlY2VpdmVyRnVuY3Rpb25Gb3JDYWxs
ZXJBbmRBcmd1bWVudHModGhpc09iaikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9yKTsKKwor
ICAgIEpTVmFsdWUgY2FsbGVyID0gcmV0cmlldmVDYWxsZXJGdW5jdGlvbih2bSwgdm0udG9wQ2Fs
bEZyYW1lLCB0aGlzT2JqKTsKKyAgICBpZiAoY2FsbGVyLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKworICAgIC8vIDExLiBJZiBjYWxsZXIgaXMg
bm90IGFuIEVDTUFTY3JpcHQgZnVuY3Rpb24gb2JqZWN0LCByZXR1cm4gbnVsbC4KKyAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjYWxsZXIp
OworICAgIGlmICghZnVuY3Rpb24gfHwgZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9u
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworCisgICAgLy8g
MTIuIElmIGNhbGxlci5bW1N0cmljdF1dIGlzIHRydWUsIHJldHVybiBudWxsLgorICAgIGlmIChm
dW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworCisgICAgLy8gUHJldmVudCBib2RpZXMg
KHByaXZhdGUgaW1wbGVtZW50YXRpb25zKSBvZiBnZW5lcmF0b3IgLyBhc3luYyBmdW5jdGlvbnMg
ZnJvbSBiZWluZyBleHBvc2VkLgorICAgIC8vIFRoZXkgZXhwZWN0IHRvIGJlIGNhbGxlZCBieSBA
Z2VuZXJhdG9yUmVzdW1lKCkgJiBmcmllbmRzIHdpdGggY2VydGFpbiBhcmd1bWVudHMsIGFuZCBj
cmFzaCBvdGhlcndpc2UuCisgICAgLy8gMTQuIElmIGNhbGxlci5bW0VDTUFTY3JpcHRDb2RlXV0g
aXMgYSBHZW5lcmF0b3JCb2R5LCBhbiBBc3luY0Z1bmN0aW9uQm9keSwgYW4gQXN5bmNHZW5lcmF0
b3JCb2R5LCBvciBhbiBBc3luY0NvbmNpc2VCb2R5LCByZXR1cm4gbnVsbC4KKyAgICBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5wYXJzZU1vZGUo
KTsKKyAgICBpZiAoaXNHZW5lcmF0b3JQYXJzZU1vZGUocGFyc2VNb2RlKSB8fCBpc0FzeW5jRnVu
Y3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7Cit9CisK
K0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihjYWxsZXJBbmRBcmd1bWVudHNTZXR0ZXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXRoaXNPYmogfHwgIWlzQWxsb3dlZFJl
Y2VpdmVyRnVuY3Rpb25Gb3JDYWxsZXJBbmRBcmd1bWVudHModGhpc09iaikpCisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vz
c0Vycm9yKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGllcyhWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNGdW5jdGlvbioqIGNhbGxGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24s
IEpTRnVuY3Rpb24qKiBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKIAotICAgIHZvaWQgaW5p
dFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLQogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKEludGVybmFsRnVuY3Rp
b25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjc4NjA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBc3luY0dlbmVyYXRvclByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkNhdGNoU2NvcGUuaCIKLSNpbmNs
dWRlICJDbG9uZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgog
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpA
QCAtNTMsOSArNTIsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbEhvc3RGdW5jdGlv
CiAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSkpOwog
fQogCi1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihhcmd1bWVudHNHZXR0ZXIpOwot
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoY2FsbGVyR2V0dGVyKTsKLQogY29uc3Qg
Q2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9Owog
Y29uc3QgQ2xhc3NJbmZvIEpTU3RyaWN0RnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1N0
cmljdEZ1bmN0aW9uKSB9OwogY29uc3QgQ2xhc3NJbmZvIEpTU2xvcHB5RnVuY3Rpb246OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Nsb3BweUZ1bmN0aW9uKSB9OwpAQCAtMzAwLDEzOSArMjk2LDYgQEAg
Q2FsbERhdGEgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKgogICAgIHJldHVybiBjYWxs
RGF0YTsKIH0KIAotY2xhc3MgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIHsKLXB1YmxpYzoKLSAg
ICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IoVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbk9i
aikKLSAgICAgICAgOiBtX3ZtKHZtKQotICAgICAgICAsIG1fdGFyZ2V0Q2FsbGVlKGZ1bmN0aW9u
T2JqKQotICAgICAgICAsIG1fcmVzdWx0KGpzTnVsbCgpKQotICAgIHsKLSAgICB9Ci0KLSAgICBK
U1ZhbHVlIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9Ci0KLSAgICBTdGFja1Zp
c2l0b3I6OlN0YXR1cyBvcGVyYXRvcigpKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmICghdmlzaXRvci0+Y2FsbGVlKCkuaXNDZWxsKCkpCi0gICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLQotICAgICAgICBKU0NlbGwqIGNhbGxl
ZSA9IHZpc2l0b3ItPmNhbGxlZSgpLmFzQ2VsbCgpOwotICAgICAgICBpZiAoY2FsbGVlICE9IG1f
dGFyZ2V0Q2FsbGVlKQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
Ci0KLSAgICAgICAgbV9yZXN1bHQgPSBKU1ZhbHVlKHZpc2l0b3ItPmNyZWF0ZUFyZ3VtZW50cyht
X3ZtKSk7Ci0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIFZNJiBtX3ZtOwotICAgIEpTT2JqZWN0KiBtX3RhcmdldENhbGxlZTsKLSAgICBt
dXRhYmxlIEpTVmFsdWUgbV9yZXN1bHQ7Ci19OwotCi1zdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUFy
Z3VtZW50cyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
bk9iaikKLXsKLSAgICBSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3IgZnVuY3Rvcih2bSwgZnVuY3Rp
b25PYmopOwotICAgIGlmIChjYWxsRnJhbWUpCi0gICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2
bSwgZnVuY3Rvcik7Ci0gICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7Ci19Ci0KLUpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihhcmd1bWVudHNHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0gICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBBU1NF
UlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXRyaWV2ZUFyZ3VtZW50cyh2bSwgdm0udG9wQ2FsbEZyYW1lLCB0aGlzT2JqKSk7Ci19
Ci0KLWNsYXNzIFJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yIHsKLXB1YmxpYzoKLSAgICBS
ZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3RvcihKU0Z1bmN0aW9uKiBmdW5jdGlvbk9iaikKLSAg
ICAgICAgOiBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikKLSAgICAgICAgLCBtX2hhc0ZvdW5k
RnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFtZShmYWxzZSkK
LSAgICAgICAgLCBtX3Jlc3VsdChqc051bGwoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgSlNWYWx1
ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQotCi0gICAgU3RhY2tWaXNpdG9y
OjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0KLSAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB2
aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsKLQotICAgICAgICBpZiAoY2FsbGVlICYmIGNhbGxl
ZS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPihjYWxsZWUtPnZtKCkpKQotICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0KLSAgICAgICAgaWYgKCFtX2hhc0ZvdW5k
RnJhbWUgJiYgKGNhbGxlZSAhPSBtX3RhcmdldENhbGxlZSkpCi0gICAgICAgICAgICByZXR1cm4g
U3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLQotICAgICAgICBtX2hhc0ZvdW5kRnJhbWUgPSB0cnVl
OwotICAgICAgICBpZiAoIW1faGFzU2tpcHBlZFRvQ2FsbGVyRnJhbWUpIHsKLSAgICAgICAgICAg
IG1faGFzU2tpcHBlZFRvQ2FsbGVyRnJhbWUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6Q29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY2FsbGVlKQot
ICAgICAgICAgICAgbV9yZXN1bHQgPSBjYWxsZWU7Ci0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkRvbmU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTT2JqZWN0KiBtX3RhcmdldENhbGxl
ZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNGb3VuZEZyYW1lOwotICAgIG11dGFibGUgYm9vbCBt
X2hhc1NraXBwZWRUb0NhbGxlckZyYW1lOwotICAgIG11dGFibGUgSlNWYWx1ZSBtX3Jlc3VsdDsK
LX07Ci0KLXN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oVk0mIHZtLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCi17Ci0gICAgUmV0cmll
dmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IgZnVuY3RvcihmdW5jdGlvbk9iaik7Ci0gICAgaWYgKGNh
bGxGcmFtZSkKLSAgICAgICAgY2FsbEZyYW1lLT5pdGVyYXRlKHZtLCBmdW5jdG9yKTsKLSAgICBy
ZXR1cm4gZnVuY3Rvci5yZXN1bHQoKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGNh
bGxlckdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7Ci0KLSAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RG
dW5jdGlvbigpKTsKLSAgICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24o
dm0sIHZtLnRvcENhbGxGcmFtZSwgdGhpc09iaik7Ci0KLSAgICAvLyBTZWUgRVM1LjEgMTUuMy41
LjQgLSBGdW5jdGlvbi5jYWxsZXIgbWF5IG5vdCBiZSB1c2VkIHRvIHJldHJpZXZlIGEgc3RyaWN0
IGNhbGxlci4KLSAgICBpZiAoIWNhbGxlci5pc09iamVjdCgpIHx8ICFhc09iamVjdChjYWxsZXIp
LT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKLSAgICAgICAgLy8gSXQgaXNuJ3QgYSBKU0Z1
bmN0aW9uLCBidXQgaWYgaXQgaXMgYSBKU0NhbGxlZSBmcm9tIGEgcHJvZ3JhbSBvciBldmFsIGNh
bGwgb3IgYW4gaW50ZXJuYWwgY29uc3RydWN0b3IsIHJldHVybiBudWxsLgotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU0NhbGxlZSo+KHZtLCBjYWxsZXIpIHx8IGpzRHluYW1pY0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KHZtLCBjYWxsZXIpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbGVy
KTsKLSAgICB9Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNhbGxlcik7Ci0KLSAgICAvLyBGaXJlZm94IHJldHVybnMgbnVsbCBmb3IgbmF0aXZlIGNvZGUg
Y2FsbGVycywgc28gd2UgbWF0Y2ggdGhhdCBiZWhhdmlvci4KLSAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwotCi0gICAgaWYgKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0K
LSAgICAvLyBQcmV2ZW50IGJvZGllcyAocHJpdmF0ZSBpbXBsZW1lbnRhdGlvbnMpIG9mIGdlbmVy
YXRvciAvIGFzeW5jIGZ1bmN0aW9ucyBmcm9tIGJlaW5nIGV4cG9zZWQuCi0gICAgLy8gVGhleSBh
cmUgY2FsbGVkIGJ5IEBnZW5lcmF0b3JSZXN1bWUoKSAmIGZyaWVuZHMsIGV4cGVjdGluZyBjZXJ0
YWluIGFyZ3VtZW50cywgYW5kIGNyYXNoIG90aGVyd2lzZS4KLSAgICAvLyBBbHNvLCBoaWRlIGdl
bmVyYXRvciAvIGFzeW5jIGZ1bmN0aW9uIHdyYXBwZXJzIGZvciBjb25zaXN0ZW5jeSBhbmQgYmVj
YXVzZSBpdCdzIG9uIHN0YW5kYXJkcyB0cmFjazoKLSAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
Y2xhdWRlcGFjaGUvZXMtbGVnYWN5LWZ1bmN0aW9uLXJlZmxlY3Rpb24vYmxvYi9tYXN0ZXIvc3Bl
Yy5tZCNnZXQtZnVuY3Rpb25wcm90b3R5cGVjYWxsZXIgKHN0ZXAgMTQpCi0gICAgU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCk7
Ci0gICAgaWYgKGlzR2VuZXJhdG9yUGFyc2VNb2RlKHBhcnNlTW9kZSkgfHwgaXNBc3luY0Z1bmN0
aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwotfQotCiBi
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
NDc1LDIwICszMzgsNiBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09i
CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAgfQog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRoaXNPYmplY3Qt
PmdldERpcmVjdChvZmZzZXQpLCBvZmZzZXQpOwotICAgIH0KLQotICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKSB7Ci0gICAgICAgIGlmICghdGhpc09i
amVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkK
LSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSk7Ci0g
ICAgICAgIAotICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgYXJndW1lbnRzR2V0dGVyKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5jYWxsZXIpIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUo
KS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKQotICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKLQotICAgICAgICBzbG90LnNldENh
Y2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSwgY2FsbGVyR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC01MDIs
MzEgKzM1MSwxNCBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hCiB7
CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0
KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKG1vZGUgPT0gRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSkgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZC4KLSAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3Qs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7Ci0gICAg
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2xv
dCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotCi0g
ICAgICAgICAgICBpZiAodGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFy
Z3VtZW50c1Byb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQotICAgICAgICAgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgICAg
ICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkpCi0gICAgICAgICAgICAgICAg
cHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAodGhpc09iamVjdC0+aXNCdWlsdGluRnVuY3Rpb24oKSB8fCB0
aGlzT2JqZWN0LT5pbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSkgewotICAgICAgICAgICAg
ICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQotICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOwotICAgICAg
ICAgICAgICAgIGlmICghdGhpc09iamVjdC0+aGFzUmVpZmllZE5hbWUoKSkKLSAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bmFtZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5oYXNSZWlmaWVk
TGVuZ3RoKCkpCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWROYW1lKCkpCisg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lKTsKKyAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpICYmIHRoaXNP
YmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpKQorICAgICAgICAg
ICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICB9
CiB9CiAKQEAgLTU2NiwxMyArMzk4LDYgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBj
ZWxsLCBKU0dsbwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAg
ICB9CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cyB8fCBwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7Ci0gICAgICAg
IGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1By
b3BlcnRpZXMoKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
OwotCi0gICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKLSAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgfQogICAgIFByb3BlcnR5U3RhdHVzIHByb3BlcnR5VHlw
ZSA9IHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoaXNMYXp5KHByb3BlcnR5VHlwZSkpCiAgICAgICAg
IHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKQEAgLTU5OCwxMiArNDIzLDcgQEAgYm9vbCBKU0Z1bmN0
aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgfSBlbHNlIGlmICh2bS5kZWxldGVQcm9wZXJ0eU1vZGUoKSAh
PSBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpIHsKICAgICAgICAg
Ly8gRm9yIG5vbi1ob3N0IGZ1bmN0aW9ucywgZG9uJ3QgbGV0IHRoZXNlIHByb3BlcnRpZXMgYnkg
ZGVsZXRlZCAtIGV4Y2VwdCBieSBEZWZpbmVPd25Qcm9wZXJ0eS4KLSAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxs
ZXIgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgJiYgZXhl
Y3V0YWJsZS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlICYmIGV4ZWN1dGFibGUtPmhhc1Byb3RvdHlwZVByb3BlcnR5KCkpCisg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlICYm
IHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNQcm90b3R5cGVQcm9wZXJ0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVBy
b3BlcnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKQEAgLTY0Myw0
NSArNDYzLDEyIEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAg
ICAgICAgaWYgKEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+cmFyZURh
dGEoKSkKICAgICAgICAgICAgIHJhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHBy
b3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKICAgICAgICAgc2xvdC5kaXNhbGxvd1ZNRW50cnkucmVz
ZXQoKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Q
cm9wZXJ0eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0
aHJvd0V4Y2VwdGlvbikpOwotICAgIH0KLQotICAgIGJvb2wgdmFsdWVDaGVjazsKLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewotICAgICAgICBp
ZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9w
ZXJ0aWVzKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRl
ZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIHRocm93RXhjZXB0aW9uKSk7Ci0KLSAgICAgICAgdmFsdWVDaGVjayA9ICFkZXNjcmlw
dG9yLnZhbHVlKCk7Ci0gICAgICAgIGlmICghdmFsdWVDaGVjaykgewotICAgICAgICAgICAgdmFs
dWVDaGVjayA9IHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IudmFsdWUoKSwgcmV0
cmlldmVBcmd1bWVudHModm0sIHZtLnRvcENhbGxGcmFtZSwgdGhpc09iamVjdCkpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7Ci0g
ICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFyZ3Vt
ZW50c1Byb3BlcnRpZXMoKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
QmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKLQotICAgICAgICB2YWx1ZUNoZWNrID0g
IWRlc2NyaXB0b3IudmFsdWUoKTsKLSAgICAgICAgaWYgKCF2YWx1ZUNoZWNrKSB7Ci0gICAgICAg
ICAgICB2YWx1ZUNoZWNrID0gc2FtZVZhbHVlKGdsb2JhbE9iamVjdCwgZGVzY3JpcHRvci52YWx1
ZSgpLCByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKHZtLCB2bS50b3BDYWxsRnJhbWUsIHRoaXNPYmpl
Y3QpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3Bl
cnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CiAgICAgfQotICAgICAK
LSAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5j
b25maWd1cmFibGUoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUNvbmZpZ3Vy
YWJpbGl0eUVycm9yKTsKLSAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYm
IGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hh
bmdlRW51bWVyYWJpbGl0eUVycm9yKTsKLSAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVz
Y3JpcHRvcigpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IHRocm93RXhjZXB0aW9uLCBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFu
aXNtRXJyb3IpOwotICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2Ny
aXB0b3Iud3JpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZVdyaXRh
YmlsaXR5RXJyb3IpOwotICAgIGlmICghdmFsdWVDaGVjaykKLSAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgUmVhZG9ubHlQcm9wZXJ0
eUNoYW5nZUVycm9yKTsKLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAogLy8gRUNNQSAx
My4yLjIgW1tDb25zdHJ1Y3RdXQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03ODAsMTIgKzc4MCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAg
ICAgICB9KTsKIAogICAgIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24u
c2V0KHZtLCB0aGlzLCBoYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKTsKLSAgICBtX3Rocm93VHlw
ZUVycm9yR2V0dGVyU2V0dGVyLmluaXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPEdldHRlclNldHRlcj4mIGluaXQpIHsKLSAgICAgICAgICAgIEpTRnVuY3Rpb24qIHRocm93
ZXIgPSBpbml0Lm93bmVyLT50aHJvd1R5cGVFcnJvckZ1bmN0aW9uKCk7Ci0gICAgICAgICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGluaXQudm0s
IGluaXQub3duZXIsIHRocm93ZXIsIHRocm93ZXIpOwotICAgICAgICAgICAgaW5pdC5zZXQoZ2V0
dGVyU2V0dGVyKTsKLSAgICAgICAgfSk7CiAKICAgICBtX251bGxHZXR0ZXJGdW5jdGlvbi5zZXQo
dm0sIHRoaXMsIE51bGxHZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBOdWxsR2V0dGVyRnVuY3Rp
b246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
KTsKICAgICBTdHJ1Y3R1cmUqIG51bGxTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSA9IE51bGxTZXR0
ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKTsKQEAgLTgwMSwxNiArNzk1LDE1IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAg
bV9vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHZtLnN0
cnVjdHVyZUNhY2hlLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHko
KSkpOwogICAgIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nh
c3Q8SlNGdW5jdGlvbio+KG9iamVjdFByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnZhbHVlT2YpKSk7Ci0gICAgCi0gICAgSlNGdW5jdGlvbiogdGhyb3dlciA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgZW1wdHlTdHJpbmcoKSwgZ2xvYmFsRnVuY1Ro
cm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKTsKLSAgICB0aHJvd2VyLT5mcmVl
emUodm0pOwotICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIHRoaXMsIHRocm93ZXIsIHRocm93ZXIpOwotICAgIG1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0aGlzLCBnZXR0ZXJT
ZXR0ZXIpOwotICAgIAotICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPmluaXRSZXN0cmljdGVkUHJv
cGVydGllcyh2bSwgdGhpcyk7CiAKICAgICBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuc2V0KHZtLCB0
aGlzLCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPcGVyYXRpb25zU3BlY2llc0dldHRlckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwg
bnVsbHB0cikpOwogCisgICAgbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUdldHRlclNl
dHRlci5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0
ZXI+JiBpbml0KSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGVtcHR5U3RyaW5nKCksIGdsb2JhbEZ1
bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik7CisgICAgICAgICAgICB0
aHJvd2VyLT5mcmVlemUoaW5pdC52bSk7CisgICAgICAgICAgICBpbml0LnNldChHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyLCB0aHJvd2VyKSk7CisgICAg
ICAgIH0pOwogICAgIG1fdHlwZWRBcnJheVByb3RvLmluaXRMYXRlcigKICAgICAgICAgW10gKGNv
bnN0IEluaXRpYWxpemVyPEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU+JiBpbml0KSB7CiAgICAg
ICAgICAgICBpbml0LnNldChKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5vd25lciwgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIGluaXQub3duZXIsIGluaXQub3duZXItPm1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSkpOwpAQCAtMjEwMiw5ICsyMDk1LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbkltcGwoSgogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwotICAgIHRoaXNPYmplY3Qt
Pm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBQcm90b1N5bWJvbFJlcGxhY2UpOwotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVB
bmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOworICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0MCw5ICszNDAsOCBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBKU0Z1bmN0aW9uPiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1i
b2xGdW5jdGlvbjsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEdldHRlclNldHRl
cj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlOwotICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXI7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBHZXR0ZXJTZXR0ZXI+IG1fdGhy
b3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXI7CiAKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIEpTTW9kdWxlTG9hZGVyPiBtX21vZHVsZUxvYWRlcjsKIApAQCAt
Njk2LDEwICs2OTUsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU3ltYm9s
UmVwbGFjZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b1N5bWJvbFJlcGxh
Y2UuZ2V0KCk7IH0KICAgICBHZXR0ZXJTZXR0ZXIqIHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKCkg
Y29uc3Q7CiAgICAgR2V0dGVyU2V0dGVyKiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXIoKSBjb25z
dDsKLSAgICBHZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2Fs
bGVyR2V0dGVyU2V0dGVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyLmdldCgpOwotICAgIH0KKyAgICBH
ZXR0ZXJTZXR0ZXIqIHRocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUdldHRlclNldHRl
ci5nZXQodGhpcyk7IH0KICAgICAKICAgICBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KHRoaXMpOyB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IEFTQ0lJTGl0ZXJhbCBPYmplY3RQ
cm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgeyAiT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIl9zIH07Citjb25zdCBBU0NJSUxpdGVy
YWwgUmVzdHJpY3RlZFByb3BlcnR5QWNjZXNzRXJyb3IgeyAiJ2FyZ3VtZW50cycsICdjYWxsZWUn
LCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iX3MgfTsK
IAogdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50Pgogc3RhdGljIEJpdG1hcDwyNTY+
IG1ha2VDaGFyYWN0ZXJCaXRtYXAoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnND
b3VudF0pCkBAIC02ODEsNyArNjgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2Jh
bEZ1bmNUaHJvdwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIidhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdj
YWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIik7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgUmVzdHJpY3RlZFByb3BlcnR5
QWNjZXNzRXJyb3IpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY01h
a2VUeXBlRXJyb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3ODYwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgSlNPYmplY3Q7CiAvLyBpcyBhIDAuNSUg
cmVkdWN0aW9uLgogCiBleHRlcm4gY29uc3QgQVNDSUlMaXRlcmFsIE9iamVjdFByb3RvQ2FsbGVk
T25OdWxsT3JVbmRlZmluZWRFcnJvcjsKK2V4dGVybiBjb25zdCBBU0NJSUxpdGVyYWwgUmVzdHJp
Y3RlZFByb3BlcnR5QWNjZXNzRXJyb3I7CiAKIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZ2xv
YmFsRnVuY0V2YWwpOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jUGFyc2VJ
bnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
cmV2aXNpb24gMjc4NjA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAzLDYgKzIwMDMsMjIgQEAgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Zv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0aW9u
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK3sKKyAgICBBU1NFUlQoIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSk7
CisgICAgQVNTRVJUKHZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOworICAgIEFTU0VSVChh
dHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSk7CisK
KyAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0cnVjdHVyZUlEKCk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3Ry
dWN0dXJlSUQpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVy
ZUlELCBzdHJ1Y3R1cmUpOworICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CisKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKKyAgICAgICAg
c3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgIHN0cnVjdHVy
ZS0+c2V0SGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllc1dpdGhQcm90b0NoZWNrKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOworfQorCiBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciwgdW5zaWduZWQgYXR0cmlidXRl
cykKIHsKICAgICBBU1NFUlQoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nv
cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlz
aW9uIDI3ODYwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1Miw2ICs2NTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUs
IEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIGJvb2wgcHV0RGlyZWN0
QWNjZXNzb3IoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciosIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMpOworICAgIHZvaWQgcHV0RGlyZWN0Q3VzdG9tR2V0dGVyU2V0dGVyV2l0aG91dFRyYW5z
aXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
CiAgICAgYm9vbCBwdXRHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIGJvb2wgcHV0U2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3ODYwOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA2LTA4ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFp
a2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBQYXJ0bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnBy
b3RvdHlwZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVjdGlvbiBwcm9wb3NhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTE2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvbW9kZWwv
cmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3J1bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcnVudGltZS9nZXRQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICoganMvYmFzaWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2tk
ZS9mdW5jdGlvbl9hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2tkZS9zY3Jp
cHQtdGVzdHMvZnVuY3Rpb25fYXJndW1lbnRzLmpzOgorICAgICAgICAqIGpzL25vbi1zdHJpY3Qt
ZnVuY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvbm9u
LXN0cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy90aHJvdy10eXBlLWVycm9yLWlzLXVuaXF1ZS5qczoKKwogMjAyMS0wNi0wOCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0byBN
OTIKSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0
b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3ODYwOSkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0
LWdldC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDMxICsz
NjUsMjkgQEAgdHlwZTogZnVuY3Rpb24KIGRlc2NyaXB0aW9uOiBmdW5jdGlvbiAoKSB7IGNvbnNv
bGUubG9nKGFyZ3VtZW50cyk7IH0KIAogT1dOIFBST1BFUlRJRVM6Ci0gICAgYXJndW1lbnRzCi0g
ICAgY2FsbGVyCisgICAgcHJvdG90eXBlCiAgICAgbGVuZ3RoCiAgICAgbmFtZQotICAgIHByb3Rv
dHlwZQogICAgIF9fcHJvdG9fXwogCiBESVNQTEFZQUJMRSBQUk9QRVJUSUVTOgotICAgIGFyZ3Vt
ZW50cwotICAgIGNhbGxlcgorICAgIHByb3RvdHlwZQogICAgIGxlbmd0aAogICAgIG5hbWUKLSAg
ICBwcm90b3R5cGUKKyAgICBhcmd1bWVudHMKKyAgICBjYWxsZXIKICAgICBfX3Byb3RvX18KIAog
QUxMIFBST1BFUlRJRVM6Ci0gICAgYXJndW1lbnRzCi0gICAgY2FsbGVyCisgICAgcHJvdG90eXBl
CiAgICAgbGVuZ3RoCiAgICAgbmFtZQotICAgIHByb3RvdHlwZQogICAgIHRvU3RyaW5nCiAgICAg
YXBwbHkKICAgICBjYWxsCiAgICAgYmluZAorICAgIGFyZ3VtZW50cworICAgIGNhbGxlcgogICAg
IGNvbnN0cnVjdG9yCiAgICAgU3ltYm9sKFN5bWJvbC5oYXNJbnN0YW5jZSkKICAgICB0b0xvY2Fs
ZVN0cmluZwpAQCAtNDIyLDggKzQyMCw4IEBAIE9XTiBQUk9QRVJUSUVTOgogRElTUExBWUFCTEUg
UFJPUEVSVElFUzoKICAgICBsZW5ndGgKICAgICBuYW1lCi0gICAgY2FsbGVyCiAgICAgYXJndW1l
bnRzCisgICAgY2FsbGVyCiAgICAgX19wcm90b19fCiAgICAgdGFyZ2V0RnVuY3Rpb24KICAgICBi
b3VuZFRoaXMKQEAgLTQzNiw4ICs0MzQsOCBAQCBBTEwgUFJPUEVSVElFUzoKICAgICBhcHBseQog
ICAgIGNhbGwKICAgICBiaW5kCi0gICAgY2FsbGVyCiAgICAgYXJndW1lbnRzCisgICAgY2FsbGVy
CiAgICAgY29uc3RydWN0b3IKICAgICBTeW1ib2woU3ltYm9sLmhhc0luc3RhbmNlKQogICAgIHRv
TG9jYWxlU3RyaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVudGltZS9nZXREaXNw
bGF5YWJsZVByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2luc3BlY3Rvci9ydW50aW1lL2dldERpc3BsYXlhYmxlUHJvcGVydGllcy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3ODYwOSkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2dldERp
c3BsYXlhYmxlUHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1LDgg
KzI1LDggQEAgUHJvcGVydGllczoKICAgICAibGVuZ3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtj
b25maWd1cmFibGUgfCBpc093bl0KICAgICAicHJvdG90eXBlIiAgPT4gICJUZXN0IiAob2JqZWN0
KSAgW2lzT3duXQogICAgICJuYW1lIiAgICAgICA9PiAgIlRlc3QiIChzdHJpbmcpICBbY29uZmln
dXJhYmxlIHwgaXNPd25dCi0gICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1l
bnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBj
b250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+
ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3Qg
YmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25d
CisgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScs
IGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVj
dCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkg
e1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3Vy
YWJsZSB8IGlzT3duXQogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogUnVudGltZS5nZXREaXNwbGF5
YWJsZVByb3BlcnRpZXMuQm91bmRDb25zdHJ1Y3RvcgpAQCAtMzUsOCArMzUsOCBAQCBHZXR0aW5n
IGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6CiAgICAgImxlbmd0aCIgICAg
ID0+ICAwIChudW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIm5hbWUiICAgICAg
ID0+ICAiYm91bmQgVGVzdCIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KLSAgICAi
Y2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdj
YWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9y
KSAgW3dhc1Rocm93bl0KICAgICAiYXJndW1lbnRzIiAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVu
dHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNv
bnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KKyAgICAiY2FsbGVyIiAgICAgPT4g
ICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBi
ZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0K
ICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxu
fSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiBJbnRlcm5h
bCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+ICAiY2xhc3MgVGVzdCB7IH0i
IChmdW5jdGlvbiBjbGFzcykgIFtdCkBAIC00OCw4ICs0OCw4IEBAIEdldHRpbmcgZGlzcGxheWFi
bGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKICAgICAibGVuZ3RoIiAgICAgPT4gIDAgKG51
bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFtZSIgICAgICAgPT4gICJib3Vu
ZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQotICAgICJjYWxsZXIiICAg
ICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fu
bm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhy
b3duXQogICAgICJhcmd1bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxs
ZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChv
YmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQorICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJv
cjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2Vk
IGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3By
b3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rp
b24pICBbd3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093bl0KIEludGVybmFsIFByb3BlcnRp
ZXM6CiAgICAgInRhcmdldEZ1bmN0aW9uIiAgPT4gICJjbGFzcyBUZXN0IHsgfSIgKGZ1bmN0aW9u
IGNsYXNzKSAgW10KQEAgLTYwLDIyICs2MCwyMiBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZh
bHVhdGluZyBleHByZXNzaW9uLi4uCiBHZXR0aW5nIGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4K
IFByb3BlcnRpZXM6Ci0gICAgImFyZ3VtZW50cyIgID0+ICBudWxsIChvYmplY3QgbnVsbCkgIFtp
c093bl0KLSAgICAiY2FsbGVyIiAgICAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2lzT3duXQog
ICAgICJsZW5ndGgiICAgICA9PiAgMyAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQog
ICAgICJuYW1lIiAgICAgICA9PiAgIiIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0K
ICAgICAicHJvdG90eXBlIiAgPT4gICJPYmplY3QiIChvYmplY3QpICBbd3JpdGFibGUgfCBpc093
bl0KKyAgICAiYXJndW1lbnRzIiAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2NvbmZpZ3VyYWJs
ZSB8IG5hdGl2ZUdldHRlcl0KKyAgICAiY2FsbGVyIiAgICAgPT4gIG51bGwgKG9iamVjdCBudWxs
KSAgW2NvbmZpZ3VyYWJsZSB8IG5hdGl2ZUdldHRlcl0KICAgICAiX19wcm90b19fIiAgPT4gICJm
dW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxl
IHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSdW50aW1l
LmdldERpc3BsYXlhYmxlUHJvcGVydGllcy5GdW5jdGlvbk5vUGFyYW1ldGVycwogRXZhbHVhdGlu
ZyBleHByZXNzaW9uLi4uCiBHZXR0aW5nIGRpc3BsYXlhYmxlIHByb3BlcnRpZXMuLi4KIFByb3Bl
cnRpZXM6Ci0gICAgImFyZ3VtZW50cyIgID0+ICBudWxsIChvYmplY3QgbnVsbCkgIFtpc093bl0K
LSAgICAiY2FsbGVyIiAgICAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2lzT3duXQogICAgICJs
ZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJu
YW1lIiAgICAgICA9PiAgIiIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAi
cHJvdG90eXBlIiAgPT4gICJPYmplY3QiIChvYmplY3QpICBbd3JpdGFibGUgfCBpc093bl0KKyAg
ICAiYXJndW1lbnRzIiAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2NvbmZpZ3VyYWJsZSB8IG5h
dGl2ZUdldHRlcl0KKyAgICAiY2FsbGVyIiAgICAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2Nv
bmZpZ3VyYWJsZSB8IG5hdGl2ZUdldHRlcl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlv
biAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29u
ZmlndXJhYmxlIHwgaXNPd25dCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSdW50aW1lLmdldERp
c3BsYXlhYmxlUHJvcGVydGllcy5Cb3VuZEZ1bmN0aW9uCkBAIC04NCw4ICs4NCw4IEBAIEdldHRp
bmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKICAgICAibGVuZ3RoIiAg
ICAgPT4gIDMgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFtZSIgICAg
ICAgPT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCi0gICAgImNh
bGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2Fs
bGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikg
IFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRz
JywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250
ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCisgICAgImNhbGxlciIgICAgID0+ICAi
VHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUg
YWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAg
ICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
IChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwg
UHJvcGVydGllczoKICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0aW9uIChhLCBiLCBj
KXt9IiAoZnVuY3Rpb24pICBbXQpAQCAtOTcsOCArOTcsOCBAQCBHZXR0aW5nIGRpc3BsYXlhYmxl
IHByb3BlcnRpZXMuLi4KIFByb3BlcnRpZXM6CiAgICAgImxlbmd0aCIgICAgID0+ICAwIChudW1i
ZXIpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQg
IiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAg
IlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJl
IGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQog
ICAgICJhcmd1bWVudHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBh
bmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3Qg
ZXJyb3IpICBbd2FzVGhyb3duXQorICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJvcjogJ2Fy
Z3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRo
aXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3Byb3RvX18i
ICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBb
d3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093bl0KIEludGVybmFsIFByb3BlcnRpZXM6CiAg
ICAgInRhcmdldEZ1bmN0aW9uIiAgPT4gICJmdW5jdGlvbiAoYSwgYiwgYyl7fSIgKGZ1bmN0aW9u
KSAgW10KQEAgLTExMSw4ICsxMTEsOCBAQCBHZXR0aW5nIGRpc3BsYXlhYmxlIHByb3BlcnRpZXMu
Li4KIFByb3BlcnRpZXM6CiAgICAgImxlbmd0aCIgICAgID0+ICAwIChudW1iZXIpICBbY29uZmln
dXJhYmxlIHwgaXNPd25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiYm91bmQgIiAoc3RyaW5nKSAg
W2NvbmZpZ3VyYWJsZSB8IGlzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJvcjog
J2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGlu
IHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJhcmd1bWVu
dHMiICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicg
Y2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2Fz
VGhyb3duXQorICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdj
YWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4i
IChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0
aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBj
b25maWd1cmFibGUgfCBpc093bl0KIEludGVybmFsIFByb3BlcnRpZXM6CiAgICAgInRhcmdldEZ1
bmN0aW9uIiAgPT4gICJmdW5jdGlvbiAoKXt9IiAoZnVuY3Rpb24pICBbXQpAQCAtMTI0LDggKzEy
NCw4IEBAIEdldHRpbmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKICAg
ICAibGVuZ3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAg
ICAibmFtZSIgICAgICAgPT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNP
d25dCi0gICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxl
ZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9i
amVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9y
OiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQg
aW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCisgICAgImNhbGxl
ciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVy
JyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3
YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRp
dmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3du
XQogSW50ZXJuYWwgUHJvcGVydGllczoKICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0
aW9uICgpe30iIChmdW5jdGlvbikgIFtdCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVu
dGltZS9nZXRQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvcnVudGltZS9nZXRQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc4NjA5KQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU0LDggKzU0LDYgQEAgSW50ZXJuYWwgUHJv
cGVydGllczoKIEV2YWx1YXRpbmcgZXhwcmVzc2lvbi4uLgogR2V0dGluZyBvd24gcHJvcGVydGll
cy4uLgogUHJvcGVydGllczoKLSAgICAiYXJndW1lbnRzIiAgPT4gIG51bGwgKG9iamVjdCBudWxs
KSAgW2lzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAgbnVsbCAob2JqZWN0IG51bGwpICBbaXNP
d25dCiAgICAgImxlbmd0aCIgICAgID0+ICAzIChudW1iZXIpICBbY29uZmlndXJhYmxlIHwgaXNP
d25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiIiAoc3RyaW5nKSAgW2NvbmZpZ3VyYWJsZSB8IGlz
T3duXQogICAgICJwcm90b3R5cGUiICA9PiAgIk9iamVjdCIgKG9iamVjdCkgIFt3cml0YWJsZSB8
IGlzT3duXQpAQCAtNjUsOCArNjMsNiBAQCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNz
aW9uLi4uCiBHZXR0aW5nIG93biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJhcmd1
bWVudHMiICA9PiAgbnVsbCAob2JqZWN0IG51bGwpICBbaXNPd25dCi0gICAgImNhbGxlciIgICAg
ID0+ICBudWxsIChvYmplY3QgbnVsbCkgIFtpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4gIDAg
KG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFtZSIgICAgICAgPT4gICIi
IChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgInByb3RvdHlwZSIgID0+ICAi
T2JqZWN0IiAob2JqZWN0KSAgW3dyaXRhYmxlIHwgaXNPd25dCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzg2MDkpCisrKyBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAgUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKHtfX3Byb3RvXwogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKHtfX3Byb3RvX186WzEsMiwzXX0pIGlzIFtdCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoT2JqZWN0LmNyZWF0ZSh7fSwgeyAnYSc6IHsgJ3ZhbHVlJzogMSwgJ2VudW1l
cmFibGUnOiBmYWxzZSB9IH0pKSBpcyBbJ2EnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKE9iamVjdC5jcmVhdGUoWzEsMiwzXSwgeyAnYSc6IHsgJ3ZhbHVlJzogMSwgJ2VudW1lcmFi
bGUnOiBmYWxzZSB9IH0pKSBpcyBbJ2EnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVz
KG5ldyBGdW5jdGlvbigpKSBpcyBbJ2FyZ3VtZW50cycsICdjYWxsZXInLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJvdG90eXBlJ10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcygoZnVuY3Rp
b24oKXt2YXIgeD1uZXcgRnVuY3Rpb24oKTt4Ll9fcHJvdG9fXz1bMSwyLDNdO3JldHVybiB4O30p
KCkpIGlzIFsnYXJndW1lbnRzJywgJ2NhbGxlcicsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5
cGUnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKG5ldyBGdW5jdGlvbigpKSBpcyBb
J2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoKGZ1bmN0aW9uKCl7dmFyIHg9bmV3IEZ1bmN0aW9uKCk7eC5fX3Byb3RvX189WzEsMiwz
XTtyZXR1cm4geDt9KSgpKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMobmV3IFN0cmluZygnJykpIGlzIFsnbGVuZ3RoJ10K
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhuZXcgU3RyaW5nKCdhJykpIGlzIFsnMCcs
ICdsZW5ndGgnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKG5ldyBTdHJpbmcoJ2Fi
YycpKSBpcyBbJzAnLCAnMScsICcyJywgJ2xlbmd0aCddCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9i
YXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvYmFzaWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzg2MDkpCisrKyBM
YXlvdXRUZXN0cy9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Niw4ICsxODYsOCBAQCBQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3Qn
OyByZXR1CiBQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1cm4gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKS52YWx1ZTsgfSko
KSBpcyB1bmRlZmluZWQuCiBQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyByZXR1
cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZXInKTsg
fSkoKSBpcyB1bmRlZmluZWQuCiBQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2
YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRz
LCAnY2FsbGVlJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0p
KCkgaXMgdHJ1ZQotUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnY2Fs
bGVyJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMg
dHJ1ZQotUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnYXJndW1lbnRz
Jyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgdHJ1
ZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnY2FsbGVyJyk7IHJl
dHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkgaXMgZmFsc2UKK1BB
U1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2FyZ3VtZW50cycpOyByZXR1
cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIGlzIGZhbHNlCiBQQVNT
ICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIGYoKSB7IGZvcih2YXIgaSBpbiB0aGlzKTsgfSkoKTsg
dHJ1ZTsgaXMgdHJ1ZQogUEFTUyAndXNlIHN0cmljdCfMuyB0aHJldyBleGNlcHRpb24gU3ludGF4
RXJyb3I6IEludmFsaWQgY2hhcmFjdGVyICdcdTAzM2InLgogUEFTUyAoZnVuY3Rpb24oKXsndXNl
IHN0cmljdCfMu30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCBjaGFyYWN0
ZXIgJ1x1MDMzYicuCkBAIC0yMTMsNyArMjEzLDcgQEAgUEFTUyAoZnVuY3Rpb24gKCkgeyd1c2Ug
c3RyaWN0JzsgIHRyeSB7IAogUEFTUyB0cnkgeyB0aHJvdyAxOyB9IGNhdGNoIChlKSB7IGFHbG9i
YWwgPSB0cnVlOyB9IGlzIHRydWUKIFBBU1MgKGZ1bmN0aW9uICgpIHsgdHJ5IHsgdGhyb3cgMTsg
fSBjYXRjaCAoZSkgeyBhR2xvYmFsID0gdHJ1ZTsgfX0pKCk7IGFHbG9iYWw7IGlzIHRydWUKIFBB
U1MgKGZ1bmN0aW9uICgpIHt0cnkgeyB0aHJvdyAxOyB9IGNhdGNoIChlKSB7IGFHbG9iYWwgPSB0
cnVlOyB9fSkoKTsgYUdsb2JhbDsgaXMgdHJ1ZQotUEFTUyBTdHJpbmcoT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcigoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgfSkuX19wcm90b19f
LCAiY2FsbGVyIikuZ2V0KSBpcyAnZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0n
CitQQVNTIFN0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKChmdW5jdGlvbigp
IHsgInVzZSBzdHJpY3QiOyB9KS5fX3Byb3RvX18sICJjYWxsZXIiKS5nZXQpIGlzICdmdW5jdGlv
biBjYWxsZXIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufScKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvanMvbm9uLXN0
cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9ub24tc3RyaWN0LWZ1bmN0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAyNzg2MDkpCisrKyBMYXlvdXRUZXN0cy9qcy9ub24tc3RyaWN0LWZ1bmN0aW9uLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDE1ICszLDE1IEBAIFRl
c3QgY2FsbGVyIGFuZCBhcmd1bWVudHMgcHJvcGVydGllcyBpbiAKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogCi1QQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgp
IHt9KS5sZW5ndGggaXMgNQotUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlv
biAoKSB7fSkuaW5jbHVkZXMoImNhbGxlciIpIGlzIHRydWUKLVBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJhcmd1bWVudHMiKSBpcyB0cnVl
Ci1QQVNTIChmdW5jdGlvbigpe30pLmhhc093blByb3BlcnR5KCJjYWxsZXIiKSBpcyB0cnVlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9KS5sZW5ndGggaXMg
MworUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkuaW5jbHVk
ZXMoImNhbGxlciIpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1
bmN0aW9uICgpIHt9KS5pbmNsdWRlcygiYXJndW1lbnRzIikgaXMgZmFsc2UKK1BBU1MgKGZ1bmN0
aW9uKCl7fSkuaGFzT3duUHJvcGVydHkoImNhbGxlciIpIGlzIGZhbHNlCiBQQVNTIChmdW5jdGlv
bigpe30pLl9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikgaXMgdHJ1ZQotUEFTUyAo
ZnVuY3Rpb24oKXt9KS5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikgaXMgdHJ1ZQorUEFTUyAo
ZnVuY3Rpb24oKXt9KS5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikgaXMgZmFsc2UKIFBBU1Mg
KGZ1bmN0aW9uKCl7fSkuX19wcm90b19fLmhhc093blByb3BlcnR5KCJhcmd1bWVudHMiKSBpcyB0
cnVlCi1QQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZvbywgImFy
Z3VtZW50cyIpIGlzICJvYmplY3QiCi1QQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGZvbywgImNhbGxlciIpIGlzICJvYmplY3QiCitQQVNTIHR5cGVvZiBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZvbywgImFyZ3VtZW50cyIpIGlzICJ1bmRlZmluZWQi
CitQQVNTIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZvbywgImNhbGxl
ciIpIGlzICJ1bmRlZmluZWQiCiBQQVNTIGZvby5jYWxsZXIgaXMgbnVsbAogUEFTUyBmb28uYXJn
dW1lbnRzIGlzIG51bGwKIFBBU1MgZm9vLmNhbGxlciBpcyBudWxsCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9rZGUvZnVuY3Rpb25fYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9rZGUvZnVuY3Rpb25fYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjc4NjA5KQorKysgTGF5b3V0VGVzdHMvanMva2RlL2Z1bmN0aW9uX2FyZ3VtZW50cy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDkgKzEzLDggQEAgUEFTUyBtZi5hcmd1bWVu
dHNbMF0gaXMgZXhwZWN0ZWRbZXhwbm8rKwogUEFTUyBtZi5hcmd1bWVudHNbMF0gaXMgZXhwZWN0
ZWRbZXhwbm8rK10KIFBBU1MgbWYuYXJndW1lbnRzWzBdIGlzIGV4cGVjdGVkW2V4cG5vKytdCiBQ
QVNTIG1mLmFyZ3VtZW50cyBpcyBleHBlY3RlZFtleHBubysrXQotUEFTUyBSZWFkT25seU9LIGlz
IHRydWUKLVBBU1MgRG9udERlbGV0ZU9LIGlzIHRydWUKLVBBU1MgRG9udEVudW1PSyBpcyB0cnVl
CitQQVNTIGYuaGFzT3duUHJvcGVydHkoJ2FyZ3VtZW50cycpIGlzIGZhbHNlCitQQVNTIGYuaGFz
T3duUHJvcGVydHkoJ2NhbGxlcicpIGlzIGZhbHNlCiBQQVNTIGFyZzAgaXMgMQogUEFTUyBhcmcx
IGlzIDIKIFBBU1MgYXJnMiBpcyAzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9rZGUvc2NyaXB0LXRl
c3RzL2Z1bmN0aW9uX2FyZ3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9r
ZGUvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uX2FyZ3VtZW50cy5qcwkocmV2aXNpb24gMjc4NjA5KQor
KysgTGF5b3V0VGVzdHMvanMva2RlL3NjcmlwdC10ZXN0cy9mdW5jdGlvbl9hcmd1bWVudHMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTE2LDQyICsxNiwxMiBAQCBmdW5jdGlvbiBtZihhLGIpIHsKIG1m
KDk5KTsKIHNob3VsZEJlKCJtZi5hcmd1bWVudHMiLCAiZXhwZWN0ZWRbZXhwbm8rK10iKTsKIAot
Ci0vLyBjaGVjayBpbnRlcm5hbCBwcm9wZXJ0aWVzIG9mIGFyZ3VtZW50cwotCi0vLyBEZWxldGUK
LQotCi0vLyBEb250RW51bQotdmFyIGZvdW5kQXJncyA9IGZhbHNlOwotCi12YXIgUmVhZE9ubHlP
SyA9IGZhbHNlOwotdmFyIERvbnREZWxldGVPSyA9IGZhbHNlOwotdmFyIERvbnRFbnVtT0sgPSBm
YWxzZTsKKy8vIENoZWNrIHRoYXQgc2xvcHB5IG1vZGUgRVM1IGZ1bmN0aW9uIGRvZXNuJ3QgaGF2
ZSBvd24gJ2FyZ3VtZW50cycgYW5kICdjYWxsZXInIHByb3BlcnRpZXMKIGZ1bmN0aW9uIGYoYSxi
LGMpIHsKLQotICAvLyBSZWFkT25seQotICB2YXIgbmV3YXJncyA9IG5ldyBPYmplY3QoKTsKLSAg
Zi5hcmd1bWVudHMgPSBuZXdhcmdzOwotICBSZWFkT25seU9LID0gKGYuYXJndW1lbnRzICE9IG5l
d2FyZ3MpOwotCi0gIC8vIERvbnREZWxldGUKLSAgRG9udERlbGV0ZU9LID0gIWRlbGV0ZShmLmFy
Z3VtZW50cyk7Ci0gIGlmIChmLmFyZ3VtZW50cyA9PSB1bmRlZmluZWQgfHwgIWYuX19wcm90b19f
Lmhhc093blByb3BlcnR5KCJhcmd1bWVudHMiKSkKLSAgICBEb250RGVsZXRlT0sgPSBmYWxzZTsK
LQotICAvLyBEb250RW51bQotICB2YXIgZm91bmRBcmdzID0gZmFsc2U7Ci0gIGZvciAoaSBpbiBm
KSB7Ci0gICAgaWYgKGYgPT0gImFyZ3VtZW50cyIpCi0gICAgICBmb3VuZEFyZ3MgPSB0cnVlOwot
ICB9Ci0gIERvbnRFbnVtT0sgPSAhZm91bmRBcmdzOworICBzaG91bGRCZUZhbHNlKCJmLmhhc093
blByb3BlcnR5KCdhcmd1bWVudHMnKSIpOworICBzaG91bGRCZUZhbHNlKCJmLmhhc093blByb3Bl
cnR5KCdjYWxsZXInKSIpOwogfQogZigxLDIsMyk7Ci1zaG91bGRCZVRydWUoIlJlYWRPbmx5T0si
KTsKLXNob3VsZEJlVHJ1ZSgiRG9udERlbGV0ZU9LIik7Ci1zaG91bGRCZVRydWUoIkRvbnRFbnVt
T0siKTsKIAogLy8gQ2hlY2sgdGhhdCBwYXJhbWV0ZXIgdmFyaWFibGVzIGFyZSBib3VuZCB0byB0
aGUgY29ycmVzcG9uZGluZwogLy8gZWxlbWVudHMgaW4gdGhlIGFyZ3VtZW50cyBhcnJheQpJbmRl
eDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy5qcwkocmV2aXNpb24gMjc4NjA5KQorKysgTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMiw4ICsxMiw4IEBAIHZhciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAgICAg
Ik9iamVjdC5jcmVhdGUoe30sIHsgJ2EnOiB7ICd2YWx1ZSc6IDEsICdlbnVtZXJhYmxlJzogZmFs
c2UgfSB9KSI6ICJbJ2EnXSIsCiAgICAgIk9iamVjdC5jcmVhdGUoWzEsMiwzXSwgeyAnYSc6IHsg
J3ZhbHVlJzogMSwgJ2VudW1lcmFibGUnOiBmYWxzZSB9IH0pIjogIlsnYSddIiwKIC8vIEZ1bmN0
aW9uIG9iamVjdHMKLSAgICAibmV3IEZ1bmN0aW9uKCkiOiAiWydhcmd1bWVudHMnLCAnY2FsbGVy
JywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKLSAgICAiKGZ1bmN0aW9uKCl7dmFy
IHg9bmV3IEZ1bmN0aW9uKCk7eC5fX3Byb3RvX189WzEsMiwzXTtyZXR1cm4geDt9KSgpIjogIlsn
YXJndW1lbnRzJywgJ2NhbGxlcicsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCisg
ICAgIm5ldyBGdW5jdGlvbigpIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAor
ICAgICIoZnVuY3Rpb24oKXt2YXIgeD1uZXcgRnVuY3Rpb24oKTt4Ll9fcHJvdG9fXz1bMSwyLDNd
O3JldHVybiB4O30pKCkiOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAvLyBT
dHJpbmcgb2JqZWN0cwogICAgICJuZXcgU3RyaW5nKCcnKSI6ICJbJ2xlbmd0aCddIiwKICAgICAi
bmV3IFN0cmluZygnYScpIjogIlsnMCcsICdsZW5ndGgnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXN0cmljdC1tb2RlLmpzCShyZXZpc2lvbiAyNzg2
MDkpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Nyw4ICsxODcsOCBAQCBzaG91bGRCZVVuZGVmaW5lZCgiKGZ1
bmN0aW9uIGYoYXJnKXsndXNlCiBzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0aW9uIGYoYXJnKXsn
dXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3Vt
ZW50cywgJ2NhbGxlZScpLnZhbHVlOyB9KSgpIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiKGZ1bmN0
aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlcicpOyB9KSgpIik7CiBzaG91bGRCZVRydWUoIihmdW5j
dGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJyk7IHJldHVybiBkZXNjcmlwdG9y
LmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKLXNob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2NhbGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5n
ZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7Ci1zaG91bGRCZVRydWUoIihmdW5jdGlvbiBm
KGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZi5fX3Byb3RvX18sICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3Iu
Z2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOworc2hvdWxkQmVGYWxzZSgiKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2NhbGxlcicpOyByZXR1cm4gZGVzY3JpcHRvci5n
ZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7CitzaG91bGRCZUZhbHNlKCIoZnVuY3Rpb24g
Zihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnYXJndW1lbnRzJyk7IHJldHVybiBkZXNjcmlwdG9y
LmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKIHNob3VsZEJlVHJ1ZSgiJ3VzZSBzdHJp
Y3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZhciBpIGluIHRoaXMpOyB9KSgpOyB0cnVlOyIpCiAK
IHNob3VsZEJlU3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0J1x1MDMzYiIpOwpAQCAtMjE1LDQgKzIx
NSw0IEBAIGFHbG9iYWwgPSBmYWxzZTsKIHNob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uICgpIHt0cnkg
eyB0aHJvdyAxOyB9IGNhdGNoIChlKSB7IGFHbG9iYWwgPSB0cnVlOyB9fSkoKTsgYUdsb2JhbDsi
KTsKIAogLy8gTWFrZSBzdXJlIHRoaXMgZG9lc24ndCBjcmFzaCEKLXNob3VsZEJlKCdTdHJpbmco
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0
IjsgfSkuX19wcm90b19fLCAiY2FsbGVyIikuZ2V0KScsICInZnVuY3Rpb24gKCkge1xcbiAgICBb
bmF0aXZlIGNvZGVdXFxufSciKTsKK3Nob3VsZEJlKCdTdHJpbmcoT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcigoZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgfSkuX19wcm90b19fLCAi
Y2FsbGVyIikuZ2V0KScsICInZnVuY3Rpb24gY2FsbGVyKCkge1xcbiAgICBbbmF0aXZlIGNvZGVd
XFxufSciKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9ub24tc3RyaWN0LWZ1
bmN0aW9uLXByb3BlcnRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVydGllcy5qcwkocmV2aXNpb24gMjc4NjA5
KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJv
cGVydGllcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNCwxOSArNCwxOSBAQCBmdW5jdGlvbiBmb28o
KSB7CiAgICAgcmV0dXJuIDE7CiB9CiAKLXNob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlO
YW1lcyhmdW5jdGlvbiAoKSB7fSkubGVuZ3RoJywnNScpOworc2hvdWxkQmUoJ09iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9KS5sZW5ndGgnLCAnMycpOwogCi1zaG91bGRC
ZVRydWUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9KS5pbmNsdWRl
cygiY2FsbGVyIiknKTsKLXNob3VsZEJlVHJ1ZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
ZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJhcmd1bWVudHMiKScpOworc2hvdWxkQmVGYWxzZSgn
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJjYWxs
ZXIiKScpOworc2hvdWxkQmVGYWxzZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rp
b24gKCkge30pLmluY2x1ZGVzKCJhcmd1bWVudHMiKScpOwogCi1zaG91bGRCZVRydWUoJyhmdW5j
dGlvbigpe30pLmhhc093blByb3BlcnR5KCJjYWxsZXIiKScpOworc2hvdWxkQmVGYWxzZSgnKGZ1
bmN0aW9uKCl7fSkuaGFzT3duUHJvcGVydHkoImNhbGxlciIpJyk7CiBzaG91bGRCZVRydWUoJyhm
dW5jdGlvbigpe30pLl9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIiknKTsKIAotc2hv
dWxkQmVUcnVlKCcoZnVuY3Rpb24oKXt9KS5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIiknKTsK
K3Nob3VsZEJlRmFsc2UoJyhmdW5jdGlvbigpe30pLmhhc093blByb3BlcnR5KCJhcmd1bWVudHMi
KScpOwogc2hvdWxkQmVUcnVlKCcoZnVuY3Rpb24oKXt9KS5fX3Byb3RvX18uaGFzT3duUHJvcGVy
dHkoImFyZ3VtZW50cyIpJyk7CiAKLXNob3VsZEJlKCd0eXBlb2YgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihmb28sICJhcmd1bWVudHMiKScsICcib2JqZWN0IicpOwotc2hvdWxkQmUo
J3R5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZvbywgImNhbGxlciIpJywg
JyJvYmplY3QiJyk7CitzaG91bGRCZSgndHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZm9vLCAiYXJndW1lbnRzIiknLCAnInVuZGVmaW5lZCInKTsKK3Nob3VsZEJlKCd0eXBl
b2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJjYWxsZXIiKScsICcidW5k
ZWZpbmVkIicpOwogCiBzaG91bGRCZSgnZm9vLmNhbGxlcicsICdudWxsJyk7CiBzaG91bGRCZSgn
Zm9vLmFyZ3VtZW50cycsICdudWxsJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvdGhyb3ctdHlwZS1lcnJvci1pcy11bmlxdWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3Rocm93LXR5cGUtZXJyb3ItaXMtdW5pcXVlLmpzCShyZXZpc2lv
biAyNzg2MDkpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvdGhyb3ctdHlwZS1lcnJv
ci1pcy11bmlxdWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEzICs0Nyw4IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIGxldCBiYXNlVGhyb3dUeXBlRXJyb3JGdW5jdGlvbiA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAiY2FsbGVlIikuZ2V0OwogCiAgICAgbGV0
IHNvdXJjZXMgPSBbCi0gICAgICAgIG5ldyBUaHJvd1R5cGVFcnJvclNvdXJjZSgiRnVuY3Rpb24u
cHJvdG90eXBlIiwgRnVuY3Rpb24ucHJvdG90eXBlLCBbImFyZ3VtZW50cyIsICJjYWxsZXIiXSks
Ci0gICAgICAgIG5ldyBUaHJvd1R5cGVFcnJvclNvdXJjZSgiQXJyYXkucHJvdG90eXBlLnB1c2gg
KGJ1aWx0aW4pIiwgYXJyYXlQcm90b1B1c2gsIFsiYXJndW1lbnRzIiwgImNhbGxlciJdKSwKLSAg
ICAgICAgbmV3IFRocm93VHlwZUVycm9yU291cmNlKCJTdHJpY3QgZnVuY3Rpb24gYXJndW1lbnRz
Iiwgc3RyaWN0QXJndW1lbnRzLCBbImFyZ3VtZW50cyIsICJjYWxsZXIiXSksCi0gICAgICAgIG5l
dyBUaHJvd1R5cGVFcnJvclNvdXJjZSgiU2xvcHB5IGZ1bmN0aW9uIGFyZ3VtZW50cyIsIHNsb3Bw
eUFyZ3VtZW50cywgWyJhcmd1bWVudHMiLCAiY2FsbGVyIl0pLAotICAgICAgICBuZXcgVGhyb3dU
eXBlRXJyb3JTb3VyY2UoIlN0cmljdCBhcmd1bWVudHMiLCBzdHJpY3RBcmd1bWVudHMoKSwgWyJj
YWxsZWUiLCAiY2FsbGVyIl0pLAotICAgICAgICBuZXcgVGhyb3dUeXBlRXJyb3JTb3VyY2UoIlNs
b3BweSBhcmd1bWVudHMiLCBzbG9wcHlBcmd1bWVudHMoKSwgWyJjYWxsZWUiLCAiY2FsbGVyIl0p
LAotICAgICAgICBuZXcgVGhyb3dUeXBlRXJyb3JTb3VyY2UoIkNsYXNzIGNvbnN0cnVjdG9yIiwg
KG5ldyBBKCkpLmNvbnN0cnVjdG9yLCBbImFyZ3VtZW50cyIsICJjYWxsZXIiXSkKKyAgICAgICAg
bmV3IFRocm93VHlwZUVycm9yU291cmNlKCJTdHJpY3QgYXJndW1lbnRzIiwgc3RyaWN0QXJndW1l
bnRzKCksIFsiY2FsbGVlIl0pLAorICAgICAgICBuZXcgVGhyb3dUeXBlRXJyb3JTb3VyY2UoIlNs
b3BweSBhcmd1bWVudHMiLCBzbG9wcHlBcmd1bWVudHMoKSwgWyJjYWxsZWUiXSksCiAgICAgXTsK
IAogICAgIGxldCBlcnJvcnMgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432853</attachid>
            <date>2021-07-03 10:57:13 -0700</date>
            <delta_ts>2021-07-25 15:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158116-20210703205712.patch</filename>
            <type>text/plain</type>
            <size>77392</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzk1NDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIzIEBACisyMDIxLTA3LTAzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBQYXJ0bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3RvdHlw
ZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVmbGVjdGlvbiBwcm9wb3NhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTE2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0
LzE5LmZ1bmN0aW9uLmJhc2VsaW5lOgorICAgICAgICAqIENoYWtyYUNvcmUvdGVzdC9zdHJpY3Qv
MjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRzLmJhc2VsaW5lLWpzYzoKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLWdldC5qczogQWRkZWQuCisgICAgICAgICogbWlj
cm9iZW5jaG1hcmtzL3JlZmxlY3Qtb3duLWtleXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9mb3ItaW4tc2hhZG93LW5vbi1lbnVtZXJhYmxlLmpzOgorICAgICAgICAqIHN0
cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVyLmpzOgorICAgICAgICAqIHN0cmVzcy9oYXMt
b3duLXByb3BlcnR5LWFyZ3VtZW50cy5qczoKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWFzc2ln
bi1mYXN0LXBhdGguanM6CisgICAgICAgICogc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1vdmVy
cmlkZXMtcHV0LmpzOgorICAgICAgICAqIHN0cmVzcy9yZWZsZWN0LXNldC5qczoKKyAgICAgICAg
KiB0ZXN0MjYyL2NvbmZpZy55YW1sOiBTa2lwIDMgdGVzdCBjYXNlcyB0aGF0IGFyZSBub3cgaW5j
b3JyZWN0LgorICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6IE1hcmsgMiB0ZXN0
IGNhc2VzIGFzIHBhc3NpbmcuCisKIDIwMjEtMDYtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgVHVybiBvZmYgZGF0YSBJQ3MgYnkgZGVmYXVsdApJbmRleDog
SlNUZXN0cy9DaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0LzE5LmZ1bmN0aW9uLmJhc2VsaW5lCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmljdC8xOS5mdW5jdGlvbi5iYXNl
bGluZQkocmV2aXNpb24gMjc5NTQzKQorKysgSlNUZXN0cy9DaGFrcmFDb3JlL3Rlc3Qvc3RyaWN0
LzE5LmZ1bmN0aW9uLmJhc2VsaW5lCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE3ICsyLDUgQEAgUmV0
dXJuOiBmdW5jdGlvbi5jYWxsZXIgZ2V0CiBSZXR1cm46IGZ1bmN0aW9uLmNhbGxlciBzZXQKIFJl
dHVybjogZnVuY3Rpb24uYXJndW1lbnRzIGdldAogUmV0dXJuOiBmdW5jdGlvbi5hcmd1bWVudHMg
Z2V0Ci1UZXN0NS5jYWxsZXI6Y29uZmlndXJhYmxlIDogZmFsc2UKLVRlc3Q1LmNhbGxlcjplbnVt
ZXJhYmxlICAgOiBmYWxzZQotVGVzdDUuY2FsbGVyOndyaXRhYmxlICAgICA6IGZhbHNlCi1UZXN0
NS5jYWxsZXI6Z2V0dGVyICAgICAgIDogdW5kZWZpbmVkCi1UZXN0NS5jYWxsZXI6c2V0dGVyICAg
ICAgIDogdW5kZWZpbmVkCi1UZXN0NS5jYWxsZXI6dmFsdWUgICAgICAgIDogbnVsbAotUmV0dXJu
OiBmdW5jdGlvbi5jYWxsZXIgZ2V0Ci1UZXN0Ni5hcmd1bWVudHM6Y29uZmlndXJhYmxlIDogZmFs
c2UKLVRlc3Q2LmFyZ3VtZW50czplbnVtZXJhYmxlICAgOiBmYWxzZQotVGVzdDYuYXJndW1lbnRz
OndyaXRhYmxlICAgICA6IGZhbHNlCi1UZXN0Ni5hcmd1bWVudHM6Z2V0dGVyICAgICAgIDogdW5k
ZWZpbmVkCi1UZXN0Ni5hcmd1bWVudHM6c2V0dGVyICAgICAgIDogdW5kZWZpbmVkCi1UZXN0Ni5h
cmd1bWVudHM6dmFsdWUgICAgICAgIDogW29iamVjdCBBcmd1bWVudHNdCi1SZXR1cm46IGZ1bmN0
aW9uLmFyZ3VtZW50cyBnZXQKK0V4Y2VwdGlvbjogZnVuY3Rpb24uY2FsbGVyIGdldCBUeXBlRXJy
b3IKK0V4Y2VwdGlvbjogZnVuY3Rpb24uYXJndW1lbnRzIGdldCBUeXBlRXJyb3IKSW5kZXg6IEpT
VGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmljdC8yMi5jYWxsZXJDYWxsZWVBcmd1bWVudHMuYmFz
ZWxpbmUtanNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hha3JhQ29yZS90ZXN0L3N0cmljdC8y
Mi5jYWxsZXJDYWxsZWVBcmd1bWVudHMuYmFzZWxpbmUtanNjCShyZXZpc2lvbiAyNzk1NDMpCisr
KyBKU1Rlc3RzL0NoYWtyYUNvcmUvdGVzdC9zdHJpY3QvMjIuY2FsbGVyQ2FsbGVlQXJndW1lbnRz
LmJhc2VsaW5lLWpzYwkod29ya2luZyBjb3B5KQpAQCAtMiwxOSArMiwxOSBAQAogaGFzT3duUHJv
cGVydHkoY2FsbGVyKTogZmFsc2UKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24o
KXtlY2hvKCJoYXNPd25Qcm9wZXJ0eShjYWxsZXIpOiAiLCBmb28uaGFzT3duUHJvcGVydHkoImNh
bGxlciIpKTt9KSgpOwotaGFzT3duUHJvcGVydHkoY2FsbGVyKTogdHJ1ZQoraGFzT3duUHJvcGVy
dHkoY2FsbGVyKTogZmFsc2UKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXsi
dXNlIHN0cmljdCI7ZWNobygiaGFzT3duUHJvcGVydHkoY2FsbGVyKTogIiwgZm9vLmhhc093blBy
b3BlcnR5KCJjYWxsZXIiKSk7fSkoKTsKLWhhc093blByb3BlcnR5KGNhbGxlcik6IHRydWUKK2hh
c093blByb3BlcnR5KGNhbGxlcik6IGZhbHNlCiAKIChmdW5jdGlvbigpe2VjaG8oImhhc093blBy
b3BlcnR5KGNhbGxlZSk6ICIsIGFyZ3VtZW50cy5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVlIikpO30p
KCk7CiBoYXNPd25Qcm9wZXJ0eShjYWxsZWUpOiB0cnVlCiAKIHZhciBmb28gPSBmdW5jdGlvbigp
e307KGZ1bmN0aW9uKCl7ZWNobygiaGFzT3duUHJvcGVydHkoYXJndW1lbnRzKTogIiwgZm9vLmhh
c093blByb3BlcnR5KCJhcmd1bWVudHMiKSk7fSkoKTsKLWhhc093blByb3BlcnR5KGFyZ3VtZW50
cyk6IHRydWUKK2hhc093blByb3BlcnR5KGFyZ3VtZW50cyk6IGZhbHNlCiAKIHZhciBmb28gPSBm
dW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2VjaG8oImhhc093blByb3BlcnR5
KGFyZ3VtZW50cyk6ICIsIGZvby5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIikpO30pKCk7Ci1o
YXNPd25Qcm9wZXJ0eShhcmd1bWVudHMpOiB0cnVlCitoYXNPd25Qcm9wZXJ0eShhcmd1bWVudHMp
OiBmYWxzZQogCiAoZnVuY3Rpb24oKXthcmd1bWVudHMuY2FsbGVyO30pKCk7CiAKQEAgLTMzLDQx
ICszMywzOSBAQCB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2UgCiB2YXIg
Zm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpe2Zvby5jYWxsZXIgPSAwO30pKCk7CiAKIHZh
ciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvby5jYWxsZXIg
PSAwO30pKCk7Ci1UeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuCiAKIChmdW5jdGlvbigpe2FyZ3VtZW50cy5jYWxsZWUgPSAwO30pKCk7CiAKIHZhciBm
b28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7Zm9vLmFyZ3VtZW50cyA9IDA7fSkoKTsKIAog
dmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9vLmFyZ3Vt
ZW50cyA9IDA7fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25s
eSBwcm9wZXJ0eS4KIAogKGZ1bmN0aW9uKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFyZ3VtZW50
cywgImNhbGxlciIsIHt2YWx1ZTogMH0pO30pKCk7CiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307
KGZ1bmN0aW9uKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgImNhbGxlciIsIHt2YWx1ZTog
MH0pO30pKCk7Ci1UeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVh
ZG9ubHkgcHJvcGVydHkuCiAKIHZhciBmb28gPSBmdW5jdGlvbigpe307KGZ1bmN0aW9uKCl7InVz
ZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJjYWxsZXIiLCB7dmFsdWU6IDB9
KTt9KSgpOwotVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRv
bmx5IHByb3BlcnR5LgogCiAoZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJndW1l
bnRzLCAiY2FsbGVlIiwge3ZhbHVlOiAwfSk7fSkoKTsKIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7
fTsoZnVuY3Rpb24oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAiYXJndW1lbnRzIiwge3Zh
bHVlOiAwfSk7fSkoKTsKLVR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2Yg
YSByZWFkb25seSBwcm9wZXJ0eS4KIAogdmFyIGZvbyA9IGZ1bmN0aW9uKCl7fTsoZnVuY3Rpb24o
KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgImFyZ3VtZW50cyIsIHt2
YWx1ZTogMH0pO30pKCk7Ci1UeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9m
IGEgcmVhZG9ubHkgcHJvcGVydHkuCiAKIChmdW5jdGlvbigpe3ZhciBkZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICJjYWxsZXIiKTtpZihkZXNj
cmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSkgc2FmZUNhbGwoZGVzY3JpcHRvci5nZXQpO2lm
KGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNldCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLnNl
dCk7fSkoKTsKIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ2Rlc2NyaXB0b3IuaGFzT3duUHJvcGVydHknKQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9
OyhmdW5jdGlvbigpe3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihmb28sICJjYWxsZXIiKTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSkg
c2FmZUNhbGwoZGVzY3JpcHRvci5nZXQpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNl
dCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLnNldCk7fSkoKTsKK1R5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2Rlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkn
KQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiY2FsbGVy
Iik7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikpIHNhZmVDYWxsKGRlc2NyaXB0
b3IuZ2V0KTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkgc2FmZUNhbGwoZGVz
Y3JpcHRvci5zZXQpO30pKCk7CitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdkZXNjcmlwdG9yLmhhc093blByb3BlcnR5JykKIAogKGZ1bmN0aW9uKCl7
dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50
cywgImNhbGxlZSIpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoImdldCIpKSBzYWZlQ2Fs
bChkZXNjcmlwdG9yLmdldCk7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgic2V0IikpIHNh
ZmVDYWxsKGRlc2NyaXB0b3Iuc2V0KTt9KSgpOwogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9Oyhm
dW5jdGlvbigpe3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihmb28sICJhcmd1bWVudHMiKTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJnZXQiKSkg
c2FmZUNhbGwoZGVzY3JpcHRvci5nZXQpO2lmKGRlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkoInNl
dCIpKSBzYWZlQ2FsbChkZXNjcmlwdG9yLnNldCk7fSkoKTsKK1R5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2Rlc2NyaXB0b3IuaGFzT3duUHJvcGVydHkn
KQogCiB2YXIgZm9vID0gZnVuY3Rpb24oKXt9OyhmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiYXJndW1l
bnRzIik7aWYoZGVzY3JpcHRvci5oYXNPd25Qcm9wZXJ0eSgiZ2V0IikpIHNhZmVDYWxsKGRlc2Ny
aXB0b3IuZ2V0KTtpZihkZXNjcmlwdG9yLmhhc093blByb3BlcnR5KCJzZXQiKSkgc2FmZUNhbGwo
ZGVzY3JpcHRvci5zZXQpO30pKCk7CitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdkZXNjcmlwdG9yLmhhc093blByb3BlcnR5JykKIApJbmRleDogSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tcHJvdG90eXBlLWdldC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi1wcm90b3R5cGUtZ2V0LmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXByb3RvdHlw
ZS1nZXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACisoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHByb3RvdHlwZTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDJlNTsgKytpKQorICAg
ICAgICBwcm90b3R5cGUgPSAoZnVuY3Rpb24oKSB7fSkucHJvdG90eXBlOworICAgIGlmICghcHJv
dG90eXBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24hIik7Cit9KSgp
OwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcmVmbGVjdC1vd24ta2V5cy1mdW5jdGlv
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9yZWZsZWN0LW93bi1r
ZXlzLWZ1bmN0aW9uLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L3JlZmxlY3Qtb3duLWtleXMtZnVuY3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
IEBACitub0lubGluZShSZWZsZWN0Lm93bktleXMpOworCisoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGtleXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICAgICAga2V5cyA9
IFJlZmxlY3Qub3duS2V5cyhmdW5jdGlvbigpIHt9KTsKKyAgICBpZiAoIWtleXMpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEiKTsKK30pKCk7CkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9mb3ItaW4tc2hhZG93LW5vbi1lbnVtZXJhYmxlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvc3RyZXNzL2Zvci1pbi1zaGFkb3ctbm9uLWVudW1lcmFibGUuanMJKHJldmlzaW9uIDI3
OTU0MykKKysrIEpTVGVzdHMvc3RyZXNzL2Zvci1pbi1zaGFkb3ctbm9uLWVudW1lcmFibGUuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgY29uc3QgdGVzdENhc2VzID0gWwogICB7
CiAgICAgbmFtZTogIkZ1bmN0aW9uIChub24tc3RyaWN0KSIsCiAgICAgY3JlYXRlT2JqZWN0OiAo
KSA9PiBmdW5jdGlvbigpIHt9LAotICAgIGRvbnRFbnVtS2V5czogWyJhcmd1bWVudHMiLCAiY2Fs
bGVyIiwgImxlbmd0aCIsICJuYW1lIiwgInByb3RvdHlwZSJdLAorICAgIGRvbnRFbnVtS2V5czog
WyJsZW5ndGgiLCAibmFtZSIsICJwcm90b3R5cGUiXSwKICAgfSwKICAgewogICAgIG5hbWU6ICJS
ZWdFeHAiLApJbmRleDogSlNUZXN0cy9zdHJlc3MvZnVuY3Rpb24taGlkZGVuLWFzLWNhbGxlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1oaWRkZW4tYXMtY2FsbGVy
LmpzCShyZXZpc2lvbiAyNzk1NDMpCisrKyBKU1Rlc3RzL3N0cmVzcy9mdW5jdGlvbi1oaWRkZW4t
YXMtY2FsbGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDExICszLDEzIEBAIGZ1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQsIHRlc3QKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBC
YWQgdmFsdWU6ICR7YWN0dWFsfSAoJHt0ZXN0SW5mb30pYCk7CiB9CiAKK2NvbnN0IGZ1bmN0aW9u
UHJvdG90eXBlQ2FsbGVyR2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihG
dW5jdGlvbi5wcm90b3R5cGUsICJjYWxsZXIiKS5nZXQ7CisKIGxldCBjYWxsZXJWaWFHZXQ7CiBs
ZXQgY2FsbGVyVmlhR2V0T3duUHJvcGVydHk7CiBmdW5jdGlvbiB1cGRhdGVDYWxsZXIoKSB7CiAg
ICAgY2FsbGVyVmlhR2V0ID0gdXBkYXRlQ2FsbGVyLmNhbGxlcjsKLSAgICBjYWxsZXJWaWFHZXRP
d25Qcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodXBkYXRlQ2FsbGVy
LCAiY2FsbGVyIikudmFsdWU7CisgICAgY2FsbGVyVmlhR2V0T3duUHJvcGVydHkgPSBmdW5jdGlv
blByb3RvdHlwZUNhbGxlckdldHRlci5jYWxsKHVwZGF0ZUNhbGxlcik7CiB9CiBub0lubGluZSh1
cGRhdGVDYWxsZXIpOwogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXByb3BlcnR5LWFy
Z3VtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9oYXMtb3duLXByb3BlcnR5
LWFyZ3VtZW50cy5qcwkocmV2aXNpb24gMjc5NTQzKQorKysgSlNUZXN0cy9zdHJlc3MvaGFzLW93
bi1wcm9wZXJ0eS1hcmd1bWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTUsNCArNSw0IEBAIGZ1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKIAogY2xhc3MgQSBleHRlbmRzIEZ1
bmN0aW9uIHt9CiBzaG91bGRCZShuZXcgQSgiJ3VzZSBzdHJpY3QnOyIpLmhhc093blByb3BlcnR5
KCdhcmd1bWVudHMnKSwgZmFsc2UpOwotc2hvdWxkQmUobmV3IEEoKS5oYXNPd25Qcm9wZXJ0eSgn
YXJndW1lbnRzJyksIHRydWUpOworc2hvdWxkQmUobmV3IEEoKS5oYXNPd25Qcm9wZXJ0eSgnYXJn
dW1lbnRzJyksIGZhbHNlKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24tZmFz
dC1wYXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL29iamVjdC1hc3NpZ24tZmFz
dC1wYXRoLmpzCShyZXZpc2lvbiAyNzk1NDMpCisrKyBKU1Rlc3RzL3N0cmVzcy9vYmplY3QtYXNz
aWduLWZhc3QtcGF0aC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBmdW5jdGlv
biBjaGVja1Byb3BlcnR5KG9iamVjdCwgbmFtZSwgdmFsCiAgICAgICAgIG9rOiA0MgogICAgIH0p
OwogCi0gICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMocmVzdWx0KS5zb3J0KCkpLCBgWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJsZW5ndGgiLCJuYW1l
Iiwib2siLCJwcm90b3R5cGUiXWApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVj
dC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHJlc3VsdCkuc29ydCgpKSwgYFsibGVuZ3RoIiwibmFtZSIs
Im9rIiwicHJvdG90eXBlIl1gKTsKICAgICBjaGVja1Byb3BlcnR5KHJlc3VsdCwgIm9rIiwgNDIp
OwogfQogewpJbmRleDogSlNUZXN0cy9zdHJlc3MvcHV0LXRvLXByb3RvLWNoYWluLW92ZXJyaWRl
cy1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHV0LXRvLXByb3RvLWNoYWlu
LW92ZXJyaWRlcy1wdXQuanMJKHJldmlzaW9uIDI3OTU0MykKKysrIEpTVGVzdHMvc3RyZXNzL3B1
dC10by1wcm90by1jaGFpbi1vdmVycmlkZXMtcHV0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MCw5
ICs2MCw2IEBAIHRlc3RTZXRSZXN1bHQoCiAgICAgZmFsc2UsCiApOwogCi10ZXN0U2V0UmVzdWx0
KCgpID0+IGZ1bmN0aW9uKCkge30sICJhcmd1bWVudHMiLCBmYWxzZSk7Ci10ZXN0U2V0UmVzdWx0
KCgpID0+IGZ1bmN0aW9uKCkge30sICJjYWxsZXIiLCBmYWxzZSk7Ci0KIC8vID09PSBoYXJuZXNz
ID09PQogCiBmdW5jdGlvbiB0ZXN0U2V0UmVzdWx0KGdldFRhcmdldCwga2V5LCBleHBlY3RlZFJl
c3VsdCkgewpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMJKHJldmlzaW9uIDI3OTU0MykKKysrIEpT
VGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA0LDExICsx
MjA0LDExIEBAIHZhciBzeW1ib2wgPSBTeW1ib2woKTsKIChmdW5jdGlvbiBmdW5jdGlvbkNhc2Uo
KSB7CiAgICAgdmFyIGZ1bmMgPSBmdW5jdGlvbiAoKSB7IH07CiAgICAgc2hvdWxkQmUoUmVmbGVj
dC5nZXQoZnVuYywgJ2FyZ3VtZW50cycpLCBudWxsKTsKLSAgICBzaG91bGRCZShSZWZsZWN0LnNl
dChmdW5jLCAnYXJndW1lbnRzJywgNDIpLCBmYWxzZSk7CisgICAgc2hvdWxkQmUoUmVmbGVjdC5z
ZXQoZnVuYywgJ2FyZ3VtZW50cycsIDQyKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoUmVmbGVjdC5n
ZXQoZnVuYywgJ2FyZ3VtZW50cycpLCBudWxsKTsKIAogICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0
KGZ1bmMsICdjYWxsZXInKSwgbnVsbCk7Ci0gICAgc2hvdWxkQmUoUmVmbGVjdC5zZXQoZnVuYywg
J2NhbGxlcicsIDQyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1bmMsICdj
YWxsZXInLCA0MiksIHRydWUpOwogICAgIHNob3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMsICdjYWxs
ZXInKSwgbnVsbCk7CiAKICAgICByZWNlaXZlclRlc3QoZnVuY3Rpb24gKCkge30sIGZ1bmN0aW9u
ICgpIHt9KTsKQEAgLTEyMTksMTEgKzEyMTksMTYgQEAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpOwog
ICAgIHJlY2VpdmVyVGVzdEluZGV4ZWQoZnVuY3Rpb24gKCkge30sIHt9KTsKIAogICAgIHZhciBy
ZWNlaXZlciA9IHt9OwotICAgIHNob3VsZEJlKFJlZmxlY3Quc2V0KGZ1bmMsICdhcmd1bWVudHMn
LCAnVicsIHJlY2VpdmVyKSwgZmFsc2UpOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAg
ICAgUmVmbGVjdC5zZXQoZnVuYywgJ2FyZ3VtZW50cycsICdWJywgcmVjZWl2ZXIpOworICAgIH0s
IGBUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBi
ZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuYCk7CiAgICAgc2hvdWxkQmUoUmVmbGVjdC5nZXQo
cmVjZWl2ZXIsICdhcmd1bWVudHMnKSwgdW5kZWZpbmVkKTsKICAgICBzaG91bGRCZShyZWNlaXZl
ci5oYXNPd25Qcm9wZXJ0eSgnYXJndW1lbnRzJyksIGZhbHNlKTsKICAgICBzaG91bGRCZShSZWZs
ZWN0LmdldChmdW5jLCAnYXJndW1lbnRzJyksIG51bGwpOwotICAgIHNob3VsZEJlKFJlZmxlY3Qu
c2V0KGZ1bmMsICdjYWxsZXInLCAnVicsIHJlY2VpdmVyKSwgZmFsc2UpOworCisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICBSZWZsZWN0LnNldChmdW5jLCAnY2FsbGVyJywgJ1YnLCBy
ZWNlaXZlcik7CisgICAgfSwgYFR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQg
J2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC5gKTsKICAgICBzaG91
bGRCZShSZWZsZWN0LmdldChyZWNlaXZlciwgJ2NhbGxlcicpLCB1bmRlZmluZWQpOwogICAgIHNo
b3VsZEJlKHJlY2VpdmVyLmhhc093blByb3BlcnR5KCdjYWxsZXInKSwgZmFsc2UpOwogICAgIHNo
b3VsZEJlKFJlZmxlY3QuZ2V0KGZ1bmMsICdjYWxsZXInKSwgbnVsbCk7CkluZGV4OiBKU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCShyZXZpc2lvbiAyNzk1NDMpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDExIEBAIHNraXA6CiAgICAgLSBjbGVhbnVwU29t
ZQogICBwYXRoczoKICAgZmlsZXM6CisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vY2xhdWRlcGFj
aGUvZXMtbGVnYWN5LWZ1bmN0aW9uLXJlZmxlY3Rpb24KKyAgICAtIHRlc3QvYnVpbHQtaW5zL1Ro
cm93VHlwZUVycm9yL3VuaXF1ZS1wZXItcmVhbG0tZnVuY3Rpb24tcHJvdG8uanMKKyAgICAtIHRl
c3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS9yZXN0cmljdGVkLXByb3BlcnR5LWFyZ3Vt
ZW50cy5qcworICAgIC0gdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3Jlc3RyaWN0
ZWQtcHJvcGVydHktY2FsbGVyLmpzCisKICAgICAjIFNsaWdodGx5IGRpZmZlcmVudCBmb3JtYXR0
aW5nLiBXZSBzaG91bGQgdXBkYXRlIHRlc3QyNjIgc2lkZS4KICAgICAtIHRlc3QvaW50bDQwMi9E
YXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0UmFuZ2VUb1BhcnRzL2VuLVVTLmpzCiAgICAg
LSB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFJhbmdlVG9QYXJ0
cy9mcmFjdGlvbmFsU2Vjb25kRGlnaXRzLmpzCkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55
YW1sCShyZXZpc2lvbiAyNzk1NDMpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwJKHdvcmtpbmcgY29weSkKQEAgLTc2MiwxMCArNzYyLDYgQEAgdGVzdC9idWlsdC1pbnMvRnVu
Y3Rpb24vcHJvdG90eXBlL3RvU3RyaQogdGVzdC9idWlsdC1pbnMvT2JqZWN0L2VudHJpZXMvb3Jk
ZXItYWZ0ZXItZGVmaW5lLXByb3BlcnR5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBbYSwgbmFtZV0gYW5kIFtuYW1lLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRz
LiAnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbYSwgbmFtZV0gYW5k
IFtuYW1lLCBhXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiAnCi10ZXN0L2J1aWx0LWlucy9P
YmplY3QvaW50ZXJuYWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtZnVuY3Rp
b24tYXJndW1lbnRzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtudWxswrssIMKrW29iamVjdCBBcmd1bWVudHNdwrspIHRvIGJlIHRydWUnCi10ZXN0
L2J1aWx0LWlucy9PYmplY3QvaW50ZXJuYWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQt
dmFsdWUtZnVuY3Rpb24tY2FsbGVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqtudWxswrssIMKrZnVuY3Rpb24gZygpIHsnCiB0ZXN0L2J1aWx0LWlu
cy9PYmplY3QvaW50ZXJuYWxzL0RlZmluZU93blByb3BlcnR5L2NvbnNpc3RlbnQtdmFsdWUtcmVn
ZXhwLWRvbGxhcjEuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq8K7LCDCq3jCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq8K7LCDCq3jCuykgdG8gYmUgdHJ1ZScKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5NTQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDIxLTA3
LTAzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBQ
YXJ0bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3RvdHlwZS57Y2FsbGVyLGFyZ3VtZW50c30gcmVm
bGVjdGlvbiBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU4MTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVG8gZW5zdXJlIHdlYi1jb21wYXRpYmlsaXR5LCBvbmx5IHRoZSBzYWZlIHN1YnNl
dCBvZiBGdW5jdGlvbi5wcm90b3R5cGUue2NhbGxlcixhcmd1bWVudHN9CisgICAgICAgIHJlZmxl
Y3Rpb24gcHJvcG9zYWwgWzFdIGlzIGltcGxlbWVudGVkLCB3aGljaCBpcyBjdXJyZW50bHkgc2hp
cHBlZCBpbiBTcGlkZXJNb25rZXkuCisKKyAgICAgICAgQ29tcGxldGUgbGlzdCBvZiBkaWZmZXJl
bmNlcyBmcm9tIHRoZSBwcm9wb3NlZCBzcGVjOgorCisgICAgICAgICAgMS4gQ3Jvc3MtcmVhbG0g
cmVjZWl2ZXIgZnVuY3Rpb24gaXMgYWxsb3dlZCBpbnN0ZWFkIG9mIHRocm93aW5nIGEgVHlwZUVy
cm9yLgorCisgICAgICAgICAgICAgVGhyb3dpbmcgaXMgbGlrZWx5IHNhZmUgdG8gc2hpcCwgYnV0
ICMyMjU5OTcgbmVlZHMgdG8gYmUgZml4ZWQgZmlyc3QgZm9yCisgICAgICAgICAgICAgY3VzdG9t
IHByb3BlcnRpZXMgdG8gcmVjZWl2ZSBjb3JyZWN0IGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAg
ICAyLiBDcm9zcy1yZWFsbSBjYWxsZXIgZnVuY3Rpb24gaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBg
bnVsbGAuCisKKyAgICAgICAgICAgICBIaWRpbmcgY3Jvc3MtcmVhbG0gY2FsbGVyIG1heSBicmVh
ayB0aGluZ3M6IHdlIGN1cnJlbnRseSBoYXZlIGEgdGVzdCBmb3IKKyAgICAgICAgICAgICB0aGUg
b3Bwb3NpdGUgYmVoYXZpb3IuCisKKyAgICAgICAgICAzLiBEZWZpbmVzICJjYWxsZXIiIGFuZCAi
YXJndW1lbnRzIiBzZXR0ZXJzIHRoYXQgdGhyb3cgZm9yIGRpc2FsbG93ZWQgcmVjZWl2ZXJzLAor
ICAgICAgICAgICAgIGluc3RlYWQgZmFpbGluZyBzaWxlbnRseSBpbiBzbG9wcHkgbW9kZS4KKwor
ICAgICAgICAgICAgIFRoaXMgaXMgYWN0dWFsbHkgbW9yZSByZXN0cmljdGl2ZSB0aGFuIHRoZSBz
cGVjLCB3aGljaCBpcyBwcmVmZXJhYmxlLAorICAgICAgICAgICAgIGFuZCBhbGlnbnMgd2l0aCBW
OCBhbmQgU00uCisKKyAgICAgICAgTW9zdCBpbXBvcnRhbnRseSwgdGhpcyBwYXRjaCByZW1vdmVz
IG93biAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIgcHJvcGVydGllcyBmcm9tCisgICAgICAgIHNs
b3BweSBtb2RlIEVTNSBmdW5jdGlvbnMuIFRoZXkgd2VyZSBub24tY29uZmlndXJhYmxlLCBtYWtp
bmcgaXQgaGFyZGVyIHRvIHVzZQorICAgICAgICB0aGVpciBob2xkZXIgYXMgYSBbW1Byb3h5VGFy
Z2V0XV0uIFRoZXkgd2VyZSBhbHNvIG5vbi13cml0YWJsZSwgd2l0aCBhIGNvbnN0YW50bHkKKyAg
ICAgICAgY2hhbmdpbmcgW1tWYWx1ZV1dLCB3aGljaCB2aW9sYXRlZCB0aGUgaW52YXJpYW50cyBv
ZiBpbnRlcm5hbCBtZXRob2RzIFsyXS4KKworICAgICAgICBBcyBhIHJlc3VsdCwgSlNGdW5jdGlv
biBtZXRob2RzIGFyZSBncmVhdGx5IHNpbXBsaWZpZWQsIGVzcGVjaWFsbHkgZGVmaW5lT3duUHJv
cGVydHkoKQorICAgICAgICBhbmQgZ2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoKS4gVGhlIGxh
dHRlciBpcyBub3cgMi4xeCBmYXN0ZXIgYWNjb3JkaW5nIHRvIHRoZQorICAgICAgICBwcm92aWRl
ZCBtaWNyb2JlbmNobWFyay4gQWxzbywgcmVtb3ZlcyBkb3VibGUgInByb3RvdHlwZSIgbG9va3Vw
IGZyb20gW1tHZXRdXSwKKyAgICAgICAgd2hpY2ggaXMgYSAxMCUgcHJvZ3Jlc3Npb24uCisKKyAg
ICAgICAgWzFdOiBodHRwczovL2dpdGh1Yi5jb20vY2xhdWRlcGFjaGUvZXMtbGVnYWN5LWZ1bmN0
aW9uLXJlZmxlY3Rpb24KKyAgICAgICAgWzJdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LWludmFyaWFudHMtb2YtdGhlLWVzc2VudGlhbC1pbnRlcm5hbC1tZXRob2RzCisKKyAgICAgICAg
KiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRz
OjptYXRlcmlhbGl6ZVNwZWNpYWxzKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAg
ICAgKEpTQzo6aXNBbGxvd2VkUmVjZWl2ZXJGdW5jdGlvbkZvckNhbGxlckFuZEFyZ3VtZW50cyk6
CisgICAgICAgIChKU0M6OlJldHJpZXZlQXJndW1lbnRzRnVuY3Rvcjo6UmV0cmlldmVBcmd1bWVu
dHNGdW5jdG9yKToKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3VtZW50c0Z1bmN0b3I6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAoSlNDOjpyZXRyaWV2ZUFyZ3VtZW50cyk6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChKU0M6OlJldHJpZXZl
Q2FsbGVyRnVuY3Rpb25GdW5jdG9yOjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rvcik6Cisg
ICAgICAgIChKU0M6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yOjpyZXN1bHQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3Rvcjo6b3BlcmF0b3Io
KSBjb25zdCk6CisgICAgICAgIChKU0M6OnJldHJpZXZlQ2FsbGVyRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
blByb3RvdHlwZTo6aW5pdFJlc3RyaWN0ZWRQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmRlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6UmV0cmlldmVBcmd1bWVudHNGdW5jdG9yOjpSZXRyaWV2
ZUFyZ3VtZW50c0Z1bmN0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZXRyaWV2ZUFyZ3Vt
ZW50c0Z1bmN0b3I6OnJlc3VsdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJldHJp
ZXZlQXJndW1lbnRzRnVuY3Rvcjo6b3BlcmF0b3IoKSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OnJldHJpZXZlQXJndW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmV0cmlldmVDYWxs
ZXJGdW5jdGlvbkZ1bmN0b3I6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6UmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3I6OnJlc3VsdCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5j
dG9yOjpvcGVyYXRvcigpIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cmV0cmlldmVD
YWxsZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIFJlbW92ZSB1bnVzZWQgbV90aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlciBhbmQgbWFrZSBbW1Rocm93VHlwZUVycm9yXV0gbGF6aWx5LWNyZWF0ZWQu
CisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21HZXR0ZXJTZXR0ZXJXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorCiAyMDIxLTA3
LTAyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCAxMCBtb3JlIHVuaWZpZWQgc291cmNlIGNwcCBmaWxlcyBmb3IgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAJKHJldmlz
aW9uIDI3OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIENsb25lZEFy
Z3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90CiAKICAgICAgICAgaWYgKGlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlZSkgewogICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSB8fCBl
eGVjdXRhYmxlLT51c2VzTm9uU2ltcGxlUGFyYW1ldGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkFjY2Vzc29yLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFy
Z3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpKTsKKyAgICAgICAgICAgICAgICBz
bG90LnNldEdldHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSktPnRocm93VHlwZUVycm9yQXJndW1l
bnRzQ2FsbGVlR2V0dGVyU2V0dGVyKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCAwLCB0
aGlzT2JqZWN0LT5tX2NhbGxlZS5nZXQoKSk7CkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBDbG9u
ZWRBcmd1bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbAogICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
ZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKTsKICAgICAKICAgICBpZiAoaXNTdHJpY3RN
b2RlIHx8IGV4ZWN1dGFibGUtPnVzZXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0KCkpCi0gICAgICAg
IHB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVl
LCB0aGlzLT5nbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlckdldHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7
CisgICAgICAgIHB1dERpcmVjdEFjY2Vzc29yKGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsbGVlLCB0aGlzLT5nbG9iYWxPYmplY3Qodm0pLT50aHJvd1R5cGVFcnJvckFyZ3VtZW50
c0NhbGxlZUdldHRlclNldHRlcigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7
CiAgICAgZWxzZQogICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxl
ZSwgSlNWYWx1ZShtX2NhbGxlZS5nZXQoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjc5NTQz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMiArMTM5LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNH
ZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBpc0dlbmVyYXRvclBhcnNlTW9kZShwYXJzZU1vZGUo
KSk7IH0KICAgICBib29sIGlzQXN5bmNHZW5lcmF0b3IoKSBjb25zdCB7IHJldHVybiBpc0FzeW5j
R2VuZXJhdG9yUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogICAgIGJvb2wgaXNNZXRob2QoKSBj
b25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU7
IH0KLSAgICBib29sIGhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgLy8gUGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWZv
cmJpZGRlbi1leHRlbnNpb25zLCBvbmx5IHNsb3BweS1tb2RlIG5vbi1idWlsdGluIGZ1bmN0aW9u
cyBpbiBvbGQtc3R5bGUgKHByZS1FUzYpIHN5bnRhY3RpYyBmb3JtcyBjYW4gY29udGFpbgotICAg
ICAgICAvLyAiY2FsbGVyIiBhbmQgImFyZ3VtZW50cyIuCi0gICAgICAgIHJldHVybiAhaXNJblN0
cmljdENvbnRleHQoKSAmJiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZSAmJiAhaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKTsKLSAgICB9CiAgICAg
Ym9vbCBoYXNQcm90b3R5cGVQcm9wZXJ0eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
U291cmNlUGFyc2VNb2RlU2V0KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc5NTQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw4ICsyMiwxMCBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgi
CiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHlJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM1LDYgKzM3LDEwIEBAIGNvbnN0IENsYXNz
SW5mbyBGdW5jdGlvblByb3RvdHlwZTo6c19pbmYKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oY2FsbEZ1bmN0aW9uUHJvdG90eXBlKTsKIAorc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIoYXJndW1lbnRzR2V0dGVyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGNhbGxlckdldHRlcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRF
UihjYWxsZXJBbmRBcmd1bWVudHNTZXR0ZXIpOworCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2
Mi8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLWZ1bmN0aW9uLXByb3RvdHlwZS1vYmplY3QKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjYWxsRnVuY3Rpb25Qcm90b3R5cGUsIChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopKQogewpAQCAtNjAsMTYgKzY2LDEyIEBAIHZvaWQgRnVuY3Rpb25Qcm90
b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGUKICAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5
cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5iaW5kLCBmdW5j
dGlvblByb3RvdHlwZUJpbmRDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCisgICAgcHV0RGlyZWN0Q3VzdG9tR2V0
dGVyU2V0dGVyV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cywgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGFyZ3VtZW50c0dldHRlciwgY2FsbGVy
QW5kQXJndW1lbnRzU2V0dGVyKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICBwdXREaXJlY3RDdXN0b21HZXR0ZXJT
ZXR0ZXJXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyLCBDdXN0
b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgY2FsbGVyR2V0dGVyLCBjYWxsZXJBbmRBcmd1bWVu
dHNTZXR0ZXIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6Q3VzdG9tQWNjZXNzb3IpOworCiAgICAgKmhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uUHJvdG90eXBlU3ltYm9sSGFzSW5zdGFuY2VD
b2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzSW5zdGFuY2VTeW1ib2wsICpoYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9
Ci0gICAgCi12b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjppbml0UmVzdHJpY3RlZFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEdldHRlclNldHRl
ciogZXJyb3JHZXR0ZXJTZXR0ZXIgPSBnbG9iYWxPYmplY3QtPnRocm93VHlwZUVycm9yQXJndW1l
bnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKCk7Ci0gICAgcHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIGVy
cm9yR2V0dGVyU2V0dGVyLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpOwotICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzLCBlcnJvckdldHRlclNl
dHRlciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFj
Y2Vzc29yKTsKLX0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCiB7CkBAIC05OSw0ICsxMDEsMTYxIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihm
dW5jdGlvblByb3RvRnUKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKIH0KIAorLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2Fj
eS1mdW5jdGlvbi1yZWZsZWN0aW9uL2Jsb2IvbWFzdGVyL3NwZWMubWQjaXNhbGxvd2VkcmVjZWl2
ZXJmdW5jdGlvbmZvcmNhbGxlcmFuZGFyZ3VtZW50c2Z1bmMtZXhwZWN0ZWRyZWFsbSAoZXhjZXB0
IHN0ZXAgMykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBbGxvd2VkUmVjZWl2ZXJGdW5j
dGlvbkZvckNhbGxlckFuZEFyZ3VtZW50cyhKU0Z1bmN0aW9uKiBmdW5jdGlvbikKK3sKKyAgICBp
ZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5q
c0V4ZWN1dGFibGUoKTsKKyAgICByZXR1cm4gIWV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250ZXh0
KCkgJiYgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxG
dW5jdGlvbk1vZGUgJiYgIWV4ZWN1dGFibGUtPmlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCk7
Cit9CisKK2NsYXNzIFJldHJpZXZlQXJndW1lbnRzRnVuY3RvciB7CitwdWJsaWM6CisgICAgUmV0
cmlldmVBcmd1bWVudHNGdW5jdG9yKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCisg
ICAgICAgIDogbV92bSh2bSkKKyAgICAgICAgLCBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikK
KyAgICAgICAgLCBtX3Jlc3VsdChqc051bGwoKSkKKyAgICB7CisgICAgfQorCisgICAgSlNWYWx1
ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQorCisgICAgU3RhY2tWaXNpdG9y
OjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB2
aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsKKyAgICAgICAgaWYgKGNhbGxlZSAhPSBtX3Rhcmdl
dENhbGxlZSkKKyAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworCisg
ICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZSh2aXNpdG9yLT5jcmVhdGVBcmd1bWVudHMobV92bSkp
OworICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBWTSYgbV92bTsKKyAgICBKU09iamVjdCogbV90YXJnZXRDYWxsZWU7CisgICAgbXV0YWJs
ZSBKU1ZhbHVlIG1fcmVzdWx0OworfTsKKworc3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVu
dHMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmop
Cit7CisgICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yIGZ1bmN0b3Iodm0sIGZ1bmN0aW9uT2Jq
KTsKKyAgICBpZiAoY2FsbEZyYW1lKQorICAgICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0sIGZ1
bmN0b3IpOworICAgIHJldHVybiBmdW5jdG9yLnJlc3VsdCgpOworfQorCisvLyBodHRwczovL2dp
dGh1Yi5jb20vY2xhdWRlcGFjaGUvZXMtbGVnYWN5LWZ1bmN0aW9uLXJlZmxlY3Rpb24vYmxvYi9t
YXN0ZXIvc3BlYy5tZCNnZXQtZnVuY3Rpb25wcm90b3R5cGVhcmd1bWVudHMKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihhcmd1bWVudHNHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghdGhp
c09iaiB8fCAhaXNBbGxvd2VkUmVjZWl2ZXJGdW5jdGlvbkZvckNhbGxlckFuZEFyZ3VtZW50cyh0
aGlzT2JqKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgUmVzdHJpY3RlZFByb3BlcnR5QWNjZXNzRXJyb3IpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXRyaWV2ZUFyZ3VtZW50cyh2bSwgdm0udG9wQ2FsbEZyYW1lLCB0aGlzT2Jq
KSk7Cit9CisKK2NsYXNzIFJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yIHsKK3B1YmxpYzoK
KyAgICBSZXRyaWV2ZUNhbGxlckZ1bmN0aW9uRnVuY3RvcihKU0Z1bmN0aW9uKiBmdW5jdGlvbk9i
aikKKyAgICAgICAgOiBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikKKyAgICAgICAgLCBtX2hh
c0ZvdW5kRnJhbWUoZmFsc2UpCisgICAgICAgICwgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFtZShm
YWxzZSkKKyAgICAgICAgLCBtX3Jlc3VsdChqc051bGwoKSkKKyAgICB7CisgICAgfQorCisgICAg
SlNWYWx1ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQorCisgICAgU3RhY2tW
aXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxlZSgpLmlzQ2VsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgSlNDZWxsKiBjYWxs
ZWUgPSB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsKKworICAgICAgICBpZiAoY2FsbGVlICYm
IGNhbGxlZS0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPihjYWxsZWUtPnZtKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgaWYgKCFtX2hh
c0ZvdW5kRnJhbWUgJiYgY2FsbGVlICE9IG1fdGFyZ2V0Q2FsbGVlKQorICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CisKKyAgICAgICAgbV9oYXNGb3VuZEZyYW1lID0g
dHJ1ZTsKKyAgICAgICAgaWYgKCFtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lKSB7CisgICAgICAg
ICAgICBtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNhbGxl
ZSkKKyAgICAgICAgICAgIG1fcmVzdWx0ID0gY2FsbGVlOworICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpEb25lOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU09iamVjdCogbV90YXJnZXRD
YWxsZWU7CisgICAgbXV0YWJsZSBib29sIG1faGFzRm91bmRGcmFtZTsKKyAgICBtdXRhYmxlIGJv
b2wgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFtZTsKKyAgICBtdXRhYmxlIEpTVmFsdWUgbV9yZXN1
bHQ7Cit9OworCitzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKFZNJiB2bSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uT2JqKQoreworICAgIFJl
dHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yIGZ1bmN0b3IoZnVuY3Rpb25PYmopOworICAgIGlm
IChjYWxsRnJhbWUpCisgICAgICAgIGNhbGxGcmFtZS0+aXRlcmF0ZSh2bSwgZnVuY3Rvcik7Cisg
ICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7Cit9CisKKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9j
bGF1ZGVwYWNoZS9lcy1sZWdhY3ktZnVuY3Rpb24tcmVmbGVjdGlvbi9ibG9iL21hc3Rlci9zcGVj
Lm1kI2dldC1mdW5jdGlvbnByb3RvdHlwZWNhbGxlcgorSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KGNhbGxlckdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCF0aGlzT2JqIHx8ICFpc0FsbG93
ZWRSZWNlaXZlckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1lbnRzKHRoaXNPYmopKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBSZXN0cmljdGVk
UHJvcGVydHlBY2Nlc3NFcnJvcik7CisKKyAgICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2Fs
bGVyRnVuY3Rpb24odm0sIHZtLnRvcENhbGxGcmFtZSwgdGhpc09iaik7CisgICAgaWYgKGNhbGxl
ci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CisK
KyAgICAvLyAxMS4gSWYgY2FsbGVyIGlzIG5vdCBhbiBFQ01BU2NyaXB0IGZ1bmN0aW9uIG9iamVj
dCwgcmV0dXJuIG51bGwuCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPih2bSwgY2FsbGVyKTsKKyAgICBpZiAoIWZ1bmN0aW9uIHx8IGZ1bmN0aW9u
LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKKworICAgIC8vIDEyLiBJZiBjYWxsZXIuW1tTdHJpY3RdXSBpcyB0cnVl
LCByZXR1cm4gbnVsbC4KKyAgICBpZiAoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc0luU3Ry
aWN0Q29udGV4dCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
KworICAgIC8vIFByZXZlbnQgYm9kaWVzIChwcml2YXRlIGltcGxlbWVudGF0aW9ucykgb2YgZ2Vu
ZXJhdG9yIC8gYXN5bmMgZnVuY3Rpb25zIGZyb20gYmVpbmcgZXhwb3NlZC4KKyAgICAvLyBUaGV5
IGV4cGVjdCB0byBiZSBjYWxsZWQgYnkgQGdlbmVyYXRvclJlc3VtZSgpICYgZnJpZW5kcyB3aXRo
IGNlcnRhaW4gYXJndW1lbnRzLCBhbmQgY3Jhc2ggb3RoZXJ3aXNlLgorICAgIC8vIDE0LiBJZiBj
YWxsZXIuW1tFQ01BU2NyaXB0Q29kZV1dIGlzIGEgR2VuZXJhdG9yQm9keSwgYW4gQXN5bmNGdW5j
dGlvbkJvZHksIGFuIEFzeW5jR2VuZXJhdG9yQm9keSwgb3IgYW4gQXN5bmNDb25jaXNlQm9keSwg
cmV0dXJuIG51bGwuCisgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSA9IGZ1bmN0aW9uLT5q
c0V4ZWN1dGFibGUoKS0+cGFyc2VNb2RlKCk7CisgICAgaWYgKGlzR2VuZXJhdG9yUGFyc2VNb2Rl
KHBhcnNlTW9kZSkgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsZXIpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoY2FsbGVy
QW5kQXJndW1lbnRzU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KCF0aGlzT2JqIHx8ICFpc0FsbG93ZWRSZWNlaXZlckZ1bmN0aW9uRm9yQ2FsbGVyQW5kQXJndW1l
bnRzKHRoaXNPYmopKQorICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBSZXN0cmljdGVkUHJvcGVydHlBY2Nlc3NFcnJvcik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHJldmlzaW9uIDI3OTU0MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDggKzM3LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRGdW5jdGlvblByb3Bl
cnRpZXMoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpT
RnVuY3Rpb24qKiBhcHBseUZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogaGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbik7CiAKLSAgICB2b2lkIGluaXRSZXN0cmljdGVkUHJvcGVydGllcyhWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7Ci0KICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
LCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJ
KHJldmlzaW9uIDI3OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQXN5
bmNHZW5lcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJDYXRjaFNjb3BlLmgiCi0jaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiQ29tbW9uSWRlbnRpZmllcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKQEAgLTUzLDkgKzUyLDYgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNhbGxIb3N0RnVuY3RpbwogICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmpzQ2FsbGVlKCkpKTsKIH0KIAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoYXJndW1lbnRzR2V0dGVyKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGNhbGxlckdldHRlcik7Ci0KIGNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKIGNvbnN0IENsYXNzSW5mbyBKU1N0cmljdEZ1bmN0aW9u
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNTdHJpY3RGdW5jdGlvbikgfTsKIGNvbnN0IENsYXNzSW5m
byBKU1Nsb3BweUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTbG9wcHlGdW5jdGlvbikg
fTsKQEAgLTMwMCwxMzkgKzI5Niw2IEBAIENhbGxEYXRhIEpTRnVuY3Rpb246OmdldENhbGxEYXRh
KEpTQ2VsbCoKICAgICByZXR1cm4gY2FsbERhdGE7CiB9CiAKLWNsYXNzIFJldHJpZXZlQXJndW1l
bnRzRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgUmV0cmlldmVBcmd1bWVudHNGdW5jdG9yKFZNJiB2
bSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCi0gICAgICAgIDogbV92bSh2bSkKLSAgICAgICAg
LCBtX3RhcmdldENhbGxlZShmdW5jdGlvbk9iaikKLSAgICAgICAgLCBtX3Jlc3VsdChqc051bGwo
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSByZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdDsgfQotCi0gICAgU3RhY2tWaXNpdG9yOjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zp
c2l0b3ImIHZpc2l0b3IpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXZpc2l0b3ItPmNhbGxl
ZSgpLmlzQ2VsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
Ci0KLSAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB2aXNpdG9yLT5jYWxsZWUoKS5hc0NlbGwoKTsK
LSAgICAgICAgaWYgKGNhbGxlZSAhPSBtX3RhcmdldENhbGxlZSkKLSAgICAgICAgICAgIHJldHVy
biBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotCi0gICAgICAgIG1fcmVzdWx0ID0gSlNWYWx1ZSh2
aXNpdG9yLT5jcmVhdGVBcmd1bWVudHMobV92bSkpOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWTSYgbV92bTsKLSAgICBKU09iamVj
dCogbV90YXJnZXRDYWxsZWU7Ci0gICAgbXV0YWJsZSBKU1ZhbHVlIG1fcmVzdWx0OwotfTsKLQot
c3RhdGljIEpTVmFsdWUgcmV0cmlldmVBcmd1bWVudHMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb25PYmopCi17Ci0gICAgUmV0cmlldmVBcmd1bWVudHNG
dW5jdG9yIGZ1bmN0b3Iodm0sIGZ1bmN0aW9uT2JqKTsKLSAgICBpZiAoY2FsbEZyYW1lKQotICAg
ICAgICBjYWxsRnJhbWUtPml0ZXJhdGUodm0sIGZ1bmN0b3IpOwotICAgIHJldHVybiBmdW5jdG9y
LnJlc3VsdCgpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoYXJndW1lbnRzR2V0dGVy
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7Ci0gICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsK
LQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmV0cmlldmVBcmd1bWVudHModm0sIHZtLnRv
cENhbGxGcmFtZSwgdGhpc09iaikpOwotfQotCi1jbGFzcyBSZXRyaWV2ZUNhbGxlckZ1bmN0aW9u
RnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgUmV0cmlldmVDYWxsZXJGdW5jdGlvbkZ1bmN0b3IoSlNG
dW5jdGlvbiogZnVuY3Rpb25PYmopCi0gICAgICAgIDogbV90YXJnZXRDYWxsZWUoZnVuY3Rpb25P
YmopCi0gICAgICAgICwgbV9oYXNGb3VuZEZyYW1lKGZhbHNlKQotICAgICAgICAsIG1faGFzU2tp
cHBlZFRvQ2FsbGVyRnJhbWUoZmFsc2UpCi0gICAgICAgICwgbV9yZXN1bHQoanNOdWxsKCkpCi0g
ICAgewotICAgIH0KLQotICAgIEpTVmFsdWUgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHQ7IH0KLQotICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9y
JiB2aXNpdG9yKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF2aXNpdG9yLT5jYWxsZWUoKS5p
c0NlbGwoKSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotCi0g
ICAgICAgIEpTQ2VsbCogY2FsbGVlID0gdmlzaXRvci0+Y2FsbGVlKCkuYXNDZWxsKCk7Ci0KLSAg
ICAgICAgaWYgKGNhbGxlZSAmJiBjYWxsZWUtPmluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4oY2Fs
bGVlLT52bSgpKSkKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwot
Ci0gICAgICAgIGlmICghbV9oYXNGb3VuZEZyYW1lICYmIChjYWxsZWUgIT0gbV90YXJnZXRDYWxs
ZWUpKQotICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7Ci0KLSAgICAg
ICAgbV9oYXNGb3VuZEZyYW1lID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFtX2hhc1NraXBwZWRUb0Nh
bGxlckZyYW1lKSB7Ci0gICAgICAgICAgICBtX2hhc1NraXBwZWRUb0NhbGxlckZyYW1lID0gdHJ1
ZTsKLSAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNhbGxlZSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gY2FsbGVlOwot
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBKU09iamVjdCogbV90YXJnZXRDYWxsZWU7Ci0gICAgbXV0YWJsZSBib29sIG1faGFzRm91bmRG
cmFtZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNTa2lwcGVkVG9DYWxsZXJGcmFtZTsKLSAgICBt
dXRhYmxlIEpTVmFsdWUgbV9yZXN1bHQ7Ci19OwotCi1zdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNh
bGxlckZ1bmN0aW9uKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uT2JqKQotewotICAgIFJldHJpZXZlQ2FsbGVyRnVuY3Rpb25GdW5jdG9yIGZ1bmN0b3Io
ZnVuY3Rpb25PYmopOwotICAgIGlmIChjYWxsRnJhbWUpCi0gICAgICAgIGNhbGxGcmFtZS0+aXRl
cmF0ZSh2bSwgZnVuY3Rvcik7Ci0gICAgcmV0dXJuIGZ1bmN0b3IucmVzdWx0KCk7Ci19Ci0KLUpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihjYWxsZXJHZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCi17Ci0g
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotCi0gICAgSlNGdW5jdGlvbiogdGhpc09i
aiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IEFTU0VSVCghdGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgSlNWYWx1ZSBjYWxsZXIg
PSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKHZtLCB2bS50b3BDYWxsRnJhbWUsIHRoaXNPYmopOwot
Ci0gICAgLy8gU2VlIEVTNS4xIDE1LjMuNS40IC0gRnVuY3Rpb24uY2FsbGVyIG1heSBub3QgYmUg
dXNlZCB0byByZXRyaWV2ZSBhIHN0cmljdCBjYWxsZXIuCi0gICAgaWYgKCFjYWxsZXIuaXNPYmpl
Y3QoKSB8fCAhYXNPYmplY3QoY2FsbGVyKS0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7Ci0g
ICAgICAgIC8vIEl0IGlzbid0IGEgSlNGdW5jdGlvbiwgYnV0IGlmIGl0IGlzIGEgSlNDYWxsZWUg
ZnJvbSBhIHByb2dyYW0gb3IgZXZhbCBjYWxsIG9yIGFuIGludGVybmFsIGNvbnN0cnVjdG9yLCBy
ZXR1cm4gbnVsbC4KLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNDYWxsZWUqPih2bSwgY2Fs
bGVyKSB8fCBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPih2bSwgY2FsbGVyKSkKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxlcik7Ci0gICAgfQotICAgIEpTRnVuY3Rpb24qIGZ1bmN0
aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwotCi0gICAgLy8gRmlyZWZveCByZXR1
cm5zIG51bGwgZm9yIG5hdGl2ZSBjb2RlIGNhbGxlcnMsIHNvIHdlIG1hdGNoIHRoYXQgYmVoYXZp
b3IuCi0gICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLQotICAgIGlmIChmdW5jdGlvbi0+
anNFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOwotCi0gICAgLy8gUHJldmVudCBib2RpZXMgKHByaXZhdGUg
aW1wbGVtZW50YXRpb25zKSBvZiBnZW5lcmF0b3IgLyBhc3luYyBmdW5jdGlvbnMgZnJvbSBiZWlu
ZyBleHBvc2VkLgotICAgIC8vIFRoZXkgYXJlIGNhbGxlZCBieSBAZ2VuZXJhdG9yUmVzdW1lKCkg
JiBmcmllbmRzLCBleHBlY3RpbmcgY2VydGFpbiBhcmd1bWVudHMsIGFuZCBjcmFzaCBvdGhlcndp
c2UuCi0gICAgLy8gQWxzbywgaGlkZSBnZW5lcmF0b3IgLyBhc3luYyBmdW5jdGlvbiB3cmFwcGVy
cyBmb3IgY29uc2lzdGVuY3kgYW5kIGJlY2F1c2UgaXQncyBvbiBzdGFuZGFyZHMgdHJhY2s6Ci0g
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsYXVkZXBhY2hlL2VzLWxlZ2FjeS1mdW5jdGlvbi1y
ZWZsZWN0aW9uL2Jsb2IvbWFzdGVyL3NwZWMubWQjZ2V0LWZ1bmN0aW9ucHJvdG90eXBlY2FsbGVy
IChzdGVwIDE0KQotICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBmdW5jdGlvbi0+anNF
eGVjdXRhYmxlKCktPnBhcnNlTW9kZSgpOwotICAgIGlmIChpc0dlbmVyYXRvclBhcnNlTW9kZShw
YXJzZU1vZGUpIHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FsbGVyKTsKLX0KLQogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTQ3NSwyMCArMzM4LDYgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZz
ZXQob2Zmc2V0KSk7CiAgICAgICAgIH0KICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0
LCBhdHRyaWJ1dGVzLCB0aGlzT2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KSwgb2Zmc2V0KTsKLSAg
ICB9Ci0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cykgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJB
bmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpOwotICAgICAgICAKLSAgICAgICAgc2xvdC5zZXRDYWNoZWFi
bGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIGFy
Z3VtZW50c0dldHRlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgfSBlbHNlIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7Ci0gICAgICAgIGlmICgh
dGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRp
ZXMoKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KSk7Ci0KLSAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIGNhbGxlckdldHRlcik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtNTAyLDMxICszNTEsMTQgQEAgdm9pZCBKU0Z1bmN0aW9uOjpn
ZXRPd25TcGVjaWFsUHJvcGVydHlOYQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlm
IChtb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpIHsKLSAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7Ci0gICAgICAgICAgICAv
LyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCi0gICAgICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNsb3QpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKLQotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhl
Y3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpOwot
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmNhbGxl
cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZp
ZWRMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZCh2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5oYXNSZWlmaWVk
TmFtZSgpKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzQnVpbHRpbkZ1bmN0aW9uKCkgfHwgdGhpc09iamVjdC0+aW5oZXJpdHM8SlNCb3VuZEZ1bmN0
aW9uPih2bSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1JlaWZpZWRM
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmhhc1Jl
aWZpZWROYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGlm
ICghdGhpc09iamVjdC0+aGFzUmVpZmllZExlbmd0aCgpKQorICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQodm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKKyAgICAgICAgaWYgKCF0aGlzT2Jq
ZWN0LT5oYXNSZWlmaWVkTmFtZSgpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0u
cHJvcGVydHlOYW1lcy0+bmFtZSk7CisgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JC
dWlsdGluRnVuY3Rpb24oKSAmJiB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFzUHJvdG90
eXBlUHJvcGVydHkoKSkKKyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgfQogfQogCkBAIC01NjYsMTMgKzM5OCw2IEBAIGJvb2wg
SlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG8KICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmNhbGxlcikgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgp
LT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKLQotICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5n
KCk7Ci0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIH0KICAgICBQ
cm9wZXJ0eVN0YXR1cyBwcm9wZXJ0eVR5cGUgPSB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0
eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzTGF6
eShwcm9wZXJ0eVR5cGUpKQogICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CkBAIC01OTgs
MTIgKzQyMyw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiAKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAo
dm0uZGVsZXRlUHJvcGVydHlNb2RlKCkgIT0gVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKSB7CiAgICAgICAgIC8vIEZvciBub24taG9zdCBmdW5jdGlvbnMsIGRvbid0
IGxldCB0aGVzZSBwcm9wZXJ0aWVzIGJ5IGRlbGV0ZWQgLSBleGNlcHQgYnkgRGVmaW5lT3duUHJv
cGVydHkuCi0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHRoaXNPYmpl
Y3QtPmpzRXhlY3V0YWJsZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKChwcm9wZXJ0eU5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0
eU5hbWVzLT5hcmd1bWVudHMpICYmIGV4ZWN1dGFibGUtPmhhc0NhbGxlckFuZEFyZ3VtZW50c1By
b3BlcnRpZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiBleGVjdXRhYmxlLT5o
YXNQcm90b3R5cGVQcm9wZXJ0eSgpKQorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSAmJiB0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aGFz
UHJvdG90eXBlUHJvcGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSk7CkBAIC02NDMsNDUgKzQ2MywxMiBAQCBib29sIEpTRnVuY3Rpb246OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIGlmIChGdW5jdGlvblJhcmVEYXRhKiByYXJl
RGF0YSA9IHRoaXNPYmplY3QtPnJhcmVEYXRhKCkpCiAgICAgICAgICAgICByYXJlRGF0YS0+Y2xl
YXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAg
IHNsb3QuZGlzYWxsb3dWTUVudHJ5LnJlc2V0KCk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKLSAgICB9Ci0KLSAgICBi
b29sIHZhbHVlQ2hlY2s7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMpIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+
aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKQotICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwotCi0gICAg
ICAgIHZhbHVlQ2hlY2sgPSAhZGVzY3JpcHRvci52YWx1ZSgpOwotICAgICAgICBpZiAoIXZhbHVl
Q2hlY2spIHsKLSAgICAgICAgICAgIHZhbHVlQ2hlY2sgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0
LCBkZXNjcmlwdG9yLnZhbHVlKCksIHJldHJpZXZlQXJndW1lbnRzKHZtLCB2bS50b3BDYWxsRnJh
bWUsIHRoaXNPYmplY3QpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlcikgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0
YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7
Ci0KLSAgICAgICAgdmFsdWVDaGVjayA9ICFkZXNjcmlwdG9yLnZhbHVlKCk7Ci0gICAgICAgIGlm
ICghdmFsdWVDaGVjaykgewotICAgICAgICAgICAgdmFsdWVDaGVjayA9IHNhbWVWYWx1ZShnbG9i
YWxPYmplY3QsIGRlc2NyaXB0b3IudmFsdWUoKSwgcmV0cmlldmVDYWxsZXJGdW5jdGlvbih2bSwg
dm0udG9wQ2FsbEZyYW1lLCB0aGlzT2JqZWN0KSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICB0
aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsK
LSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0
eShvYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4
Y2VwdGlvbikpOwogICAgIH0KLSAgICAgCi0gICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxl
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpCi0gICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIFVuY29uZmlndXJh
YmxlUHJvcGVydHlDaGFuZ2VDb25maWd1cmFiaWxpdHlFcnJvcik7Ci0gICAgaWYgKGRlc2NyaXB0
b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkKLSAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwg
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUVudW1lcmFiaWxpdHlFcnJvcik7Ci0gICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQ
cm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKTsKLSAgICBpZiAoZGVzY3JpcHRvci53
cml0YWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpCi0gICAgICAgIHJldHVy
biB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIFVuY29uZmln
dXJhYmxlUHJvcGVydHlDaGFuZ2VXcml0YWJpbGl0eUVycm9yKTsKLSAgICBpZiAoIXZhbHVlQ2hl
Y2spCi0gICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dF
eGNlcHRpb24sIFJlYWRvbmx5UHJvcGVydHlDaGFuZ2VFcnJvcik7Ci0gICAgcmV0dXJuIHRydWU7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKSk7CiB9CiAKIC8vIEVDTUEgMTMuMi4yIFtbQ29uc3RydWN0XV0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDI3OTU0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgwLDEyICs3ODAsNiBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgfSk7CiAKICAgICBtX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgaGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbik7Ci0gICAgbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci5pbml0TGF0ZXIoCi0g
ICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxHZXR0ZXJTZXR0ZXI+JiBpbml0KSB7Ci0gICAg
ICAgICAgICBKU0Z1bmN0aW9uKiB0aHJvd2VyID0gaW5pdC5vd25lci0+dGhyb3dUeXBlRXJyb3JG
dW5jdGlvbigpOwotICAgICAgICAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0
ZXJTZXR0ZXI6OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCB0aHJvd2VyLCB0aHJvd2VyKTsK
LSAgICAgICAgICAgIGluaXQuc2V0KGdldHRlclNldHRlcik7Ci0gICAgICAgIH0pOwogCiAgICAg
bV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgU3RydWN0dXJlKiBudWxsU2V0dGVyRnVu
Y3Rpb25TdHJ1Y3R1cmUgPSBOdWxsU2V0dGVyRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CkBAIC04MDEsMTYgKzc5NSwxNSBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBl
LT5zdHJ1Y3R1cmUodm0pLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbih2bSwgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fb2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3Ry
dWN0b3Iuc2V0KHZtLCB0aGlzLCB2bS5zdHJ1Y3R1cmVDYWNoZS5lbXB0eU9iamVjdFN0cnVjdHVy
ZUZvclByb3RvdHlwZSh0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSwgSlNGaW5hbE9iamVj
dDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKTsKICAgICBtX29iamVjdFByb3RvVmFsdWVPZkZ1
bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3RQcm90b3R5cGUo
KS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mKSkpOwotICAgIAotICAg
IEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIGVt
cHR5U3RyaW5nKCksIGdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENh
bGxlcik7Ci0gICAgdGhyb3dlci0+ZnJlZXplKHZtKTsKLSAgICBHZXR0ZXJTZXR0ZXIqIGdldHRl
clNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCB0aGlzLCB0aHJvd2VyLCB0aHJvd2Vy
KTsKLSAgICBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0
dGVyLnNldCh2bSwgdGhpcywgZ2V0dGVyU2V0dGVyKTsKLSAgICAKLSAgICBtX2Z1bmN0aW9uUHJv
dG90eXBlLT5pbml0UmVzdHJpY3RlZFByb3BlcnRpZXModm0sIHRoaXMpOwogCiAgICAgbV9zcGVj
aWVzR2V0dGVyU2V0dGVyLnNldCh2bSwgdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRo
aXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT3BlcmF0aW9uc1NwZWNpZXNHZXR0ZXJD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIG51bGxwdHIpKTsKIAorICAgIG1fdGhyb3dUeXBlRXJy
b3JBcmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8R2V0dGVyU2V0dGVyPiYgaW5pdCkgeworICAgICAgICAgICAgSlNGdW5j
dGlvbiogdGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAw
LCBlbXB0eVN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVB
bmRDYWxsZXIpOworICAgICAgICAgICAgdGhyb3dlci0+ZnJlZXplKGluaXQudm0pOworICAgICAg
ICAgICAgaW5pdC5zZXQoR2V0dGVyU2V0dGVyOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwg
dGhyb3dlciwgdGhyb3dlcikpOworICAgICAgICB9KTsKICAgICBtX3R5cGVkQXJyYXlQcm90by5p
bml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIEpTVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBpbml0Lm93bmVy
LT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKQEAgLTIxMDIsOSArMjA5NSw4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEoKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0
LT5tX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1
bmN0aW9uKTsKLSAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLnZp
c2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwUHJv
dG9TeW1ib2xSZXBsYWNlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93
VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKTsKKyAgICB0aGlz
T2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVyU2V0dGVyLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyLnZpc2l0KHZpc2l0b3Ip
OwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CShyZXZpc2lvbiAyNzk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsOSArMzQwLDggQEAgcHVibGljOgog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9udW1iZXJQcm90
b1RvU3RyaW5nRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0
UHJvdG9WYWx1ZU9mRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVu
Y3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb247Ci0gICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7
CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3JlZ0V4cFByb3RvU3ltYm9sUmVwbGFjZTsK
LSAgICBXcml0ZUJhcnJpZXI8R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRz
Q2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlR2V0dGVy
U2V0dGVyOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRl
cj4gbV9tb2R1bGVMb2FkZXI7CiAKQEAgLTY5NiwxMCArNjk1LDcgQEAgcHVibGljOgogICAgIEpT
T2JqZWN0KiByZWdFeHBQcm90b1N5bWJvbFJlcGxhY2VGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwUHJvdG9TeW1ib2xSZXBsYWNlLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlcigpIGNvbnN0OwogICAgIEdldHRlclNldHRlciogcmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyKCkgY29uc3Q7Ci0gICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVF
cnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcigpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNl
dHRlci5nZXQoKTsKLSAgICB9CisgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJvckFyZ3Vt
ZW50c0NhbGxlZUdldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVHZXR0ZXJTZXR0ZXIuZ2V0KHRoaXMpOyB9CiAgICAgCiAgICAgSlNNb2R1
bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdl
dCh0aGlzKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyNzk1NDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBj
b25zdCBBU0NJSUxpdGVyYWwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9y
IHsgIk9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5l
ZCJfcyB9OworY29uc3QgQVNDSUlMaXRlcmFsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9y
IHsgIidhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3Nl
ZCBpbiB0aGlzIGNvbnRleHQuIl9zIH07CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KIHN0YXRpYyBCaXRtYXA8MjU2PiBtYWtlQ2hhcmFjdGVyQml0bWFwKGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRdKQpAQCAtNjgxLDcgKzY4Miw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jVGhyb3cKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYXJn
dW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhp
cyBjb250ZXh0LiIpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9yKTsKIH0KIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oCShy
ZXZpc2lvbiAyNzk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNz
IEpTT2JqZWN0OwogLy8gaXMgYSAwLjUlIHJlZHVjdGlvbi4KIAogZXh0ZXJuIGNvbnN0IEFTQ0lJ
TGl0ZXJhbCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3I7CitleHRlcm4g
Y29uc3QgQVNDSUlMaXRlcmFsIFJlc3RyaWN0ZWRQcm9wZXJ0eUFjY2Vzc0Vycm9yOwogCiBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNFdmFsKTsKIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZ2xvYmFsRnVuY1BhcnNlSW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI3OTU0MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwMyw2
ICsyMDAzLDIyIEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFYKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21HZXR0
ZXJTZXR0ZXJXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgQVNTRVJUKCFw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpOworICAgIEFTU0VSVCh2YWx1ZS5pc0N1c3RvbUdldHRl
clNldHRlcigpKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3Nvck9yVmFsdWUpOworCisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSB0
aGlzLT5zdHJ1Y3R1cmVJRCgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBwcmVwYXJlVG9QdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1cmVJRCwgc3RydWN0dXJlKTsKKyAgICBwdXREaXJlY3Qo
dm0sIG9mZnNldCwgdmFsdWUpOworCisgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpCisgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVBy
b3BlcnRpZXMoKTsKKyAgICBzdHJ1Y3R1cmUtPnNldEhhc0N1c3RvbUdldHRlclNldHRlclByb3Bl
cnRpZXNXaXRoUHJvdG9DaGVjayhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5k
ZXJzY29yZVByb3RvKTsKK30KKwogYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nl
c3NvcihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciogYWNj
ZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNzk1NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTIsNiArNjUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFu
c2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKICAgICBib29sIHB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lkIHB1dERpcmVjdEN1c3Rv
bUdldHRlclNldHRlcldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIGJvb2wgcHV0R2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBi
b29sIHB1dFNldHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5z
aWduZWQgYXR0cmlidXRlcyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzk1NDMpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNy0w
MyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgUGFy
dGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90b3R5cGUue2NhbGxlcixhcmd1bWVudHN9IHJlZmxl
Y3Rpb24gcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODExNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9ydW50aW1lL2dldERpc3BsYXlhYmxlUHJv
cGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3J1bnRpbWUvZ2V0UHJv
cGVydGllcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9rZGUvZnVuY3Rpb25fYXJndW1lbnRzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9rZGUvc2NyaXB0LXRlc3RzL2Z1bmN0aW9uX2FyZ3VtZW50cy5qczoK
KyAgICAgICAgKiBqcy9ub24tc3RyaWN0LWZ1bmN0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
czoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1vZGUuanM6CisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVydGllcy5qczoK
KyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvdGhyb3ctdHlwZS1lcnJvci1pcy11bmlxdWUuanM6
CisKIDIwMjEtMDctMDMgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW1RGQ10gQWRkIHN1cHBvcnQgZm9yIHByaW9yaXR5IGxpc3Qgb2Ygd2lkdGggdHlwZXMg
d2hlbiBleHBhbmRpbmcgY29sdW1ucwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5NTQzKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L21vZGVsL3JlbW90ZS1vYmplY3QtZ2V0LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zNjUsMzEgKzM2NSwyOSBAQCB0eXBlOiBmdW5jdGlvbgogZGVzY3JpcHRpb246
IGZ1bmN0aW9uICgpIHsgY29uc29sZS5sb2coYXJndW1lbnRzKTsgfQogCiBPV04gUFJPUEVSVElF
UzoKLSAgICBhcmd1bWVudHMKLSAgICBjYWxsZXIKKyAgICBwcm90b3R5cGUKICAgICBsZW5ndGgK
ICAgICBuYW1lCi0gICAgcHJvdG90eXBlCiAgICAgX19wcm90b19fCiAKIERJU1BMQVlBQkxFIFBS
T1BFUlRJRVM6Ci0gICAgYXJndW1lbnRzCi0gICAgY2FsbGVyCisgICAgcHJvdG90eXBlCiAgICAg
bGVuZ3RoCiAgICAgbmFtZQotICAgIHByb3RvdHlwZQorICAgIGFyZ3VtZW50cworICAgIGNhbGxl
cgogICAgIF9fcHJvdG9fXwogCiBBTEwgUFJPUEVSVElFUzoKLSAgICBhcmd1bWVudHMKLSAgICBj
YWxsZXIKKyAgICBwcm90b3R5cGUKICAgICBsZW5ndGgKICAgICBuYW1lCi0gICAgcHJvdG90eXBl
CiAgICAgdG9TdHJpbmcKICAgICBhcHBseQogICAgIGNhbGwKICAgICBiaW5kCisgICAgYXJndW1l
bnRzCisgICAgY2FsbGVyCiAgICAgY29uc3RydWN0b3IKICAgICBTeW1ib2woU3ltYm9sLmhhc0lu
c3RhbmNlKQogICAgIHRvTG9jYWxlU3RyaW5nCkBAIC00MjIsOCArNDIwLDggQEAgT1dOIFBST1BF
UlRJRVM6CiBESVNQTEFZQUJMRSBQUk9QRVJUSUVTOgogICAgIGxlbmd0aAogICAgIG5hbWUKLSAg
ICBjYWxsZXIKICAgICBhcmd1bWVudHMKKyAgICBjYWxsZXIKICAgICBfX3Byb3RvX18KICAgICB0
YXJnZXRGdW5jdGlvbgogICAgIGJvdW5kVGhpcwpAQCAtNDM2LDggKzQzNCw4IEBAIEFMTCBQUk9Q
RVJUSUVTOgogICAgIGFwcGx5CiAgICAgY2FsbAogICAgIGJpbmQKLSAgICBjYWxsZXIKICAgICBh
cmd1bWVudHMKKyAgICBjYWxsZXIKICAgICBjb25zdHJ1Y3RvcgogICAgIFN5bWJvbChTeW1ib2wu
aGFzSW5zdGFuY2UpCiAgICAgdG9Mb2NhbGVTdHJpbmcKSW5kZXg6IExheW91dFRlc3RzL2luc3Bl
Y3Rvci9ydW50aW1lL2dldERpc3BsYXlhYmxlUHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3J1bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc5NTQzKQorKysgTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3J1bnRpbWUvZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjUsOCArMjUsOCBAQCBQcm9wZXJ0aWVzOgogICAgICJsZW5ndGgiICAg
ICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJwcm90b3R5cGUi
ICA9PiAgIlRlc3QiIChvYmplY3QpICBbaXNPd25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiVGVz
dCIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KLSAgICAiY2FsbGVyIiAgICAgPT4g
ICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBi
ZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0K
ICAgICAiYXJndW1lbnRzIiAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywg
YW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0
IGVycm9yKSAgW3dhc1Rocm93bl0KKyAgICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdh
cmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0
aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiX19wcm90b19f
IiAgPT4gICJmdW5jdGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAg
W3dyaXRhYmxlIHwgY29uZmlndXJhYmxlIHwgaXNPd25dCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBSdW50aW1lLmdldERpc3BsYXlhYmxlUHJvcGVydGllcy5Cb3VuZENvbnN0cnVjdG9yCkBAIC0z
NSw4ICszNSw4IEBAIEdldHRpbmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGll
czoKICAgICAibGVuZ3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093
bl0KICAgICAibmFtZSIgICAgICAgPT4gICJib3VuZCBUZXN0IiAoc3RyaW5nKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50
cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29u
dGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJhcmd1bWVudHMiICA9PiAg
IlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJl
IGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3QgZXJyb3IpICBbd2FzVGhyb3duXQor
ICAgICJjYWxsZXIiICAgICA9PiAgIlR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBh
bmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4iIChvYmplY3Qg
ZXJyb3IpICBbd2FzVGhyb3duXQogICAgICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtc
biAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1cmFi
bGUgfCBpc093bl0KIEludGVybmFsIFByb3BlcnRpZXM6CiAgICAgInRhcmdldEZ1bmN0aW9uIiAg
PT4gICJjbGFzcyBUZXN0IHsgfSIgKGZ1bmN0aW9uIGNsYXNzKSAgW10KQEAgLTQ4LDggKzQ4LDgg
QEAgR2V0dGluZyBkaXNwbGF5YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgogICAgICJs
ZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJu
YW1lIiAgICAgICA9PiAgImJvdW5kIFRlc3QiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNP
d25dCi0gICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxl
ZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9i
amVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9y
OiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQg
aW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCisgICAgImNhbGxl
ciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVy
JyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3
YXNUaHJvd25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRp
dmUgY29kZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3du
XQogSW50ZXJuYWwgUHJvcGVydGllczoKICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImNsYXNz
IFRlc3QgeyB9IiAoZnVuY3Rpb24gY2xhc3MpICBbXQpAQCAtNjAsMjIgKzYwLDIyIEBAIEludGVy
bmFsIFByb3BlcnRpZXM6CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxh
eWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKLSAgICAiYXJndW1lbnRzIiAgPT4gIG51
bGwgKG9iamVjdCBudWxsKSAgW2lzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAgbnVsbCAob2Jq
ZWN0IG51bGwpICBbaXNPd25dCiAgICAgImxlbmd0aCIgICAgID0+ICAzIChudW1iZXIpICBbY29u
ZmlndXJhYmxlIHwgaXNPd25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiIiAoc3RyaW5nKSAgW2Nv
bmZpZ3VyYWJsZSB8IGlzT3duXQogICAgICJwcm90b3R5cGUiICA9PiAgIk9iamVjdCIgKG9iamVj
dCkgIFt3cml0YWJsZSB8IGlzT3duXQorICAgICJhcmd1bWVudHMiICA9PiAgbnVsbCAob2JqZWN0
IG51bGwpICBbY29uZmlndXJhYmxlIHwgbmF0aXZlR2V0dGVyXQorICAgICJjYWxsZXIiICAgICA9
PiAgbnVsbCAob2JqZWN0IG51bGwpICBbY29uZmlndXJhYmxlIHwgbmF0aXZlR2V0dGVyXQogICAg
ICJfX3Byb3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAo
ZnVuY3Rpb24pICBbd3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093bl0KIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFJ1bnRpbWUuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLkZ1bmN0aW9uTm9Q
YXJhbWV0ZXJzCiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgZGlzcGxheWFibGUg
cHJvcGVydGllcy4uLgogUHJvcGVydGllczoKLSAgICAiYXJndW1lbnRzIiAgPT4gIG51bGwgKG9i
amVjdCBudWxsKSAgW2lzT3duXQotICAgICJjYWxsZXIiICAgICA9PiAgbnVsbCAob2JqZWN0IG51
bGwpICBbaXNPd25dCiAgICAgImxlbmd0aCIgICAgID0+ICAwIChudW1iZXIpICBbY29uZmlndXJh
YmxlIHwgaXNPd25dCiAgICAgIm5hbWUiICAgICAgID0+ICAiIiAoc3RyaW5nKSAgW2NvbmZpZ3Vy
YWJsZSB8IGlzT3duXQogICAgICJwcm90b3R5cGUiICA9PiAgIk9iamVjdCIgKG9iamVjdCkgIFt3
cml0YWJsZSB8IGlzT3duXQorICAgICJhcmd1bWVudHMiICA9PiAgbnVsbCAob2JqZWN0IG51bGwp
ICBbY29uZmlndXJhYmxlIHwgbmF0aXZlR2V0dGVyXQorICAgICJjYWxsZXIiICAgICA9PiAgbnVs
bCAob2JqZWN0IG51bGwpICBbY29uZmlndXJhYmxlIHwgbmF0aXZlR2V0dGVyXQogICAgICJfX3By
b3RvX18iICA9PiAgImZ1bmN0aW9uICgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IiAoZnVuY3Rp
b24pICBbd3JpdGFibGUgfCBjb25maWd1cmFibGUgfCBpc093bl0KIAogLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFJ1bnRpbWUuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzLkJvdW5kRnVuY3Rpb24KQEAg
LTg0LDggKzg0LDggQEAgR2V0dGluZyBkaXNwbGF5YWJsZSBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0
aWVzOgogICAgICJsZW5ndGgiICAgICA9PiAgMyAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlz
T3duXQogICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykgIFtjb25maWd1cmFi
bGUgfCBpc093bl0KLSAgICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMn
LCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRl
eHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiYXJndW1lbnRzIiAgPT4gICJU
eXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBh
Y2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KKyAg
ICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5k
ICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVy
cm9yKSAgW3dhc1Rocm93bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5jdGlvbiAoKSB7XG4g
ICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwgY29uZmlndXJhYmxl
IHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRGdW5jdGlvbiIgID0+
ICAiZnVuY3Rpb24gKGEsIGIsIGMpe30iIChmdW5jdGlvbikgIFtdCkBAIC05Nyw4ICs5Nyw4IEBA
IEdldHRpbmcgZGlzcGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKICAgICAibGVu
Z3RoIiAgICAgPT4gIDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFt
ZSIgICAgICAgPT4gICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCi0g
ICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFu
ZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBl
cnJvcikgIFt3YXNUaHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJn
dW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhp
cyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCisgICAgImNhbGxlciIgICAg
ID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5u
b3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJv
d25dCiAgICAgIl9fcHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29k
ZV1cbn0iIChmdW5jdGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQogSW50
ZXJuYWwgUHJvcGVydGllczoKICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0aW9uIChh
LCBiLCBjKXt9IiAoZnVuY3Rpb24pICBbXQpAQCAtMTExLDggKzExMSw4IEBAIEdldHRpbmcgZGlz
cGxheWFibGUgcHJvcGVydGllcy4uLgogUHJvcGVydGllczoKICAgICAibGVuZ3RoIiAgICAgPT4g
IDAgKG51bWJlcikgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFtZSIgICAgICAgPT4g
ICJib3VuZCAiIChzdHJpbmcpICBbY29uZmlndXJhYmxlIHwgaXNPd25dCi0gICAgImNhbGxlciIg
ICAgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBj
YW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNU
aHJvd25dCiAgICAgImFyZ3VtZW50cyIgID0+ICAiVHlwZUVycm9yOiAnYXJndW1lbnRzJywgJ2Nh
bGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gdGhpcyBjb250ZXh0LiIg
KG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCisgICAgImNhbGxlciIgICAgID0+ICAiVHlwZUVy
cm9yOiAnYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNz
ZWQgaW4gdGhpcyBjb250ZXh0LiIgKG9iamVjdCBlcnJvcikgIFt3YXNUaHJvd25dCiAgICAgIl9f
cHJvdG9fXyIgID0+ICAiZnVuY3Rpb24gKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iIChmdW5j
dGlvbikgIFt3cml0YWJsZSB8IGNvbmZpZ3VyYWJsZSB8IGlzT3duXQogSW50ZXJuYWwgUHJvcGVy
dGllczoKICAgICAidGFyZ2V0RnVuY3Rpb24iICA9PiAgImZ1bmN0aW9uICgpe30iIChmdW5jdGlv
bikgIFtdCkBAIC0xMjQsOCArMTI0LDggQEAgR2V0dGluZyBkaXNwbGF5YWJsZSBwcm9wZXJ0aWVz
Li4uCiBQcm9wZXJ0aWVzOgogICAgICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZp
Z3VyYWJsZSB8IGlzT3duXQogICAgICJuYW1lIiAgICAgICA9PiAgImJvdW5kICIgKHN0cmluZykg
IFtjb25maWd1cmFibGUgfCBpc093bl0KLSAgICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6
ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBp
biB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiYXJndW1l
bnRzIiAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAnY2FsbGVlJywgYW5kICdjYWxsZXIn
IGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQuIiAob2JqZWN0IGVycm9yKSAgW3dh
c1Rocm93bl0KKyAgICAiY2FsbGVyIiAgICAgPT4gICJUeXBlRXJyb3I6ICdhcmd1bWVudHMnLCAn
Y2FsbGVlJywgYW5kICdjYWxsZXInIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiB0aGlzIGNvbnRleHQu
IiAob2JqZWN0IGVycm9yKSAgW3dhc1Rocm93bl0KICAgICAiX19wcm90b19fIiAgPT4gICJmdW5j
dGlvbiAoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIgKGZ1bmN0aW9uKSAgW3dyaXRhYmxlIHwg
Y29uZmlndXJhYmxlIHwgaXNPd25dCiBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogICAgICJ0YXJnZXRG
dW5jdGlvbiIgID0+ICAiZnVuY3Rpb24gKCl7fSIgKGZ1bmN0aW9uKSAgW10KSW5kZXg6IExheW91
dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2dldFByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9ydW50aW1lL2dldFByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzk1NDMpCisrKyBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvcnVu
dGltZS9nZXRQcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTQsOCAr
NTQsNiBAQCBJbnRlcm5hbCBQcm9wZXJ0aWVzOgogRXZhbHVhdGluZyBleHByZXNzaW9uLi4uCiBH
ZXR0aW5nIG93biBwcm9wZXJ0aWVzLi4uCiBQcm9wZXJ0aWVzOgotICAgICJhcmd1bWVudHMiICA9
PiAgbnVsbCAob2JqZWN0IG51bGwpICBbaXNPd25dCi0gICAgImNhbGxlciIgICAgID0+ICBudWxs
IChvYmplY3QgbnVsbCkgIFtpc093bl0KICAgICAibGVuZ3RoIiAgICAgPT4gIDMgKG51bWJlcikg
IFtjb25maWd1cmFibGUgfCBpc093bl0KICAgICAibmFtZSIgICAgICAgPT4gICIiIChzdHJpbmcp
ICBbY29uZmlndXJhYmxlIHwgaXNPd25dCiAgICAgInByb3RvdHlwZSIgID0+ICAiT2JqZWN0IiAo
b2JqZWN0KSAgW3dyaXRhYmxlIHwgaXNPd25dCkBAIC02NSw4ICs2Myw2IEBAIFByb3BlcnRpZXM6
CiBFdmFsdWF0aW5nIGV4cHJlc3Npb24uLi4KIEdldHRpbmcgb3duIHByb3BlcnRpZXMuLi4KIFBy
b3BlcnRpZXM6Ci0gICAgImFyZ3VtZW50cyIgID0+ICBudWxsIChvYmplY3QgbnVsbCkgIFtpc093
bl0KLSAgICAiY2FsbGVyIiAgICAgPT4gIG51bGwgKG9iamVjdCBudWxsKSAgW2lzT3duXQogICAg
ICJsZW5ndGgiICAgICA9PiAgMCAobnVtYmVyKSAgW2NvbmZpZ3VyYWJsZSB8IGlzT3duXQogICAg
ICJuYW1lIiAgICAgICA9PiAgIiIgKHN0cmluZykgIFtjb25maWd1cmFibGUgfCBpc093bl0KICAg
ICAicHJvdG90eXBlIiAgPT4gICJPYmplY3QiIChvYmplY3QpICBbd3JpdGFibGUgfCBpc093bl0K
SW5kZXg6IExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTU0MykKKysrIExheW91dFRlc3RzL2pzL09i
amVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTEsOCArMTEsOCBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoe19fcHJvdG9fCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoe19fcHJvdG9fXzpbMSwyLDNdfSkgaXMgW10K
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QuY3JlYXRlKHt9LCB7ICdhJzog
eyAndmFsdWUnOiAxLCAnZW51bWVyYWJsZSc6IGZhbHNlIH0gfSkpIGlzIFsnYSddCiBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmNyZWF0ZShbMSwyLDNdLCB7ICdhJzogeyAn
dmFsdWUnOiAxLCAnZW51bWVyYWJsZSc6IGZhbHNlIH0gfSkpIGlzIFsnYSddCi1QQVNTIGdldFNv
cnRlZE93blByb3BlcnR5TmFtZXMobmV3IEZ1bmN0aW9uKCkpIGlzIFsnYXJndW1lbnRzJywgJ2Nh
bGxlcicsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQotUEFTUyBnZXRTb3J0ZWRPd25Q
cm9wZXJ0eU5hbWVzKChmdW5jdGlvbigpe3ZhciB4PW5ldyBGdW5jdGlvbigpO3guX19wcm90b19f
PVsxLDIsM107cmV0dXJuIHg7fSkoKSkgaXMgWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2xlbmd0
aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMo
bmV3IEZ1bmN0aW9uKCkpIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KK1BBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcygoZnVuY3Rpb24oKXt2YXIgeD1uZXcgRnVuY3Rpb24o
KTt4Ll9fcHJvdG9fXz1bMSwyLDNdO3JldHVybiB4O30pKCkpIGlzIFsnbGVuZ3RoJywgJ25hbWUn
LCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhuZXcgU3RyaW5n
KCcnKSkgaXMgWydsZW5ndGgnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKG5ldyBT
dHJpbmcoJ2EnKSkgaXMgWycwJywgJ2xlbmd0aCddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMobmV3IFN0cmluZygnYWJjJykpIGlzIFsnMCcsICcxJywgJzInLCAnbGVuZ3RoJ10KSW5k
ZXg6IExheW91dFRlc3RzL2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3OTU0MykKKysrIExheW91dFRlc3RzL2pzL2Jhc2ljLXN0cmljdC1tb2RlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDggKzE4Niw4IEBAIFBBU1MgKGZ1bmN0aW9u
IGYoYXJnKXsndXNlIHN0cmljdCc7IHJldHUKIFBBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0
cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywg
J2NhbGxlZScpLnZhbHVlOyB9KSgpIGlzIHVuZGVmaW5lZC4KIFBBU1MgKGZ1bmN0aW9uIGYoYXJn
KXsndXNlIHN0cmljdCc7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFy
Z3VtZW50cywgJ2NhbGxlcicpOyB9KSgpIGlzIHVuZGVmaW5lZC4KIFBBU1MgKGZ1bmN0aW9uIGYo
YXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09
PSBkZXNjcmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCi1QQVNTIChmdW5jdGlvbiBmKGFyZyl7J3Vz
ZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZi5fX3Byb3RvX18sICdjYWxsZXInKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNj
cmlwdG9yLnNldDsgfSkoKSBpcyB0cnVlCi1QQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJp
Y3QnOyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZi5f
X3Byb3RvX18sICdhcmd1bWVudHMnKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlw
dG9yLnNldDsgfSkoKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3Qn
OyB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZi5fX3By
b3RvX18sICdjYWxsZXInKTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNl
dDsgfSkoKSBpcyBmYWxzZQorUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFy
IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19f
LCAnYXJndW1lbnRzJyk7IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7
IH0pKCkgaXMgZmFsc2UKIFBBU1MgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gZigpIHsgZm9yKHZh
ciBpIGluIHRoaXMpOyB9KSgpOyB0cnVlOyBpcyB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0J8y7IHRo
cmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCBjaGFyYWN0ZXIgJ1x1MDMzYicuCiBQ
QVNTIChmdW5jdGlvbigpeyd1c2Ugc3RyaWN0J8y7fSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBJbnZhbGlkIGNoYXJhY3RlciAnXHUwMzNiJy4KQEAgLTIxMyw3ICsyMTMsNyBAQCBQQVNT
IChmdW5jdGlvbiAoKSB7J3VzZSBzdHJpY3QnOyAgdHJ5IHsgCiBQQVNTIHRyeSB7IHRocm93IDE7
IH0gY2F0Y2ggKGUpIHsgYUdsb2JhbCA9IHRydWU7IH0gaXMgdHJ1ZQogUEFTUyAoZnVuY3Rpb24g
KCkgeyB0cnkgeyB0aHJvdyAxOyB9IGNhdGNoIChlKSB7IGFHbG9iYWwgPSB0cnVlOyB9fSkoKTsg
YUdsb2JhbDsgaXMgdHJ1ZQogUEFTUyAoZnVuY3Rpb24gKCkge3RyeSB7IHRocm93IDE7IH0gY2F0
Y2ggKGUpIHsgYUdsb2JhbCA9IHRydWU7IH19KSgpOyBhR2xvYmFsOyBpcyB0cnVlCi1QQVNTIFN0
cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKChmdW5jdGlvbigpIHsgInVzZSBz
dHJpY3QiOyB9KS5fX3Byb3RvX18sICJjYWxsZXIiKS5nZXQpIGlzICdmdW5jdGlvbiAoKSB7XG4g
ICAgW25hdGl2ZSBjb2RlXVxufScKK1BBU1MgU3RyaW5nKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoKGZ1bmN0aW9uKCkgeyAidXNlIHN0cmljdCI7IH0pLl9fcHJvdG9fXywgImNhbGxl
ciIpLmdldCkgaXMgJ2Z1bmN0aW9uIGNhbGxlcigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59Jwog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9ub24tc3RyaWN0LWZ1bmN0aW9uLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3OTU0MykKKysrIExheW91dFRlc3RzL2pzL25v
bi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTMsMTUgKzMsMTUgQEAgVGVzdCBjYWxsZXIgYW5kIGFyZ3VtZW50cyBwcm9wZXJ0aWVzIGlu
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmxlbmd0aCBpcyA1Ci1QQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9KS5pbmNsdWRlcygiY2FsbGVyIikgaXMgdHJ1ZQot
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkuaW5jbHVkZXMo
ImFyZ3VtZW50cyIpIGlzIHRydWUKLVBBU1MgKGZ1bmN0aW9uKCl7fSkuaGFzT3duUHJvcGVydHko
ImNhbGxlciIpIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rp
b24gKCkge30pLmxlbmd0aCBpcyAzCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1
bmN0aW9uICgpIHt9KS5pbmNsdWRlcygiY2FsbGVyIikgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmluY2x1ZGVzKCJhcmd1bWVudHMiKSBp
cyBmYWxzZQorUEFTUyAoZnVuY3Rpb24oKXt9KS5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikgaXMg
ZmFsc2UKIFBBU1MgKGZ1bmN0aW9uKCl7fSkuX19wcm90b19fLmhhc093blByb3BlcnR5KCJjYWxs
ZXIiKSBpcyB0cnVlCi1QQVNTIChmdW5jdGlvbigpe30pLmhhc093blByb3BlcnR5KCJhcmd1bWVu
dHMiKSBpcyB0cnVlCitQQVNTIChmdW5jdGlvbigpe30pLmhhc093blByb3BlcnR5KCJhcmd1bWVu
dHMiKSBpcyBmYWxzZQogUEFTUyAoZnVuY3Rpb24oKXt9KS5fX3Byb3RvX18uaGFzT3duUHJvcGVy
dHkoImFyZ3VtZW50cyIpIGlzIHRydWUKLVBBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZm9vLCAiYXJndW1lbnRzIikgaXMgIm9iamVjdCIKLVBBU1MgdHlwZW9mIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiY2FsbGVyIikgaXMgIm9iamVjdCIK
K1BBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm9vLCAiYXJndW1l
bnRzIikgaXMgInVuZGVmaW5lZCIKK1BBU1MgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZm9vLCAiY2FsbGVyIikgaXMgInVuZGVmaW5lZCIKIFBBU1MgZm9vLmNhbGxlciBp
cyBudWxsCiBQQVNTIGZvby5hcmd1bWVudHMgaXMgbnVsbAogUEFTUyBmb28uY2FsbGVyIGlzIG51
bGwKSW5kZXg6IExheW91dFRlc3RzL2pzL2tkZS9mdW5jdGlvbl9hcmd1bWVudHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2tkZS9mdW5jdGlvbl9hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzk1NDMpCisrKyBMYXlvdXRUZXN0cy9qcy9rZGUvZnVu
Y3Rpb25fYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMs
OCBAQCBQQVNTIG1mLmFyZ3VtZW50c1swXSBpcyBleHBlY3RlZFtleHBubysrCiBQQVNTIG1mLmFy
Z3VtZW50c1swXSBpcyBleHBlY3RlZFtleHBubysrXQogUEFTUyBtZi5hcmd1bWVudHNbMF0gaXMg
ZXhwZWN0ZWRbZXhwbm8rK10KIFBBU1MgbWYuYXJndW1lbnRzIGlzIGV4cGVjdGVkW2V4cG5vKytd
Ci1QQVNTIFJlYWRPbmx5T0sgaXMgdHJ1ZQotUEFTUyBEb250RGVsZXRlT0sgaXMgdHJ1ZQotUEFT
UyBEb250RW51bU9LIGlzIHRydWUKK1BBU1MgZi5oYXNPd25Qcm9wZXJ0eSgnYXJndW1lbnRzJykg
aXMgZmFsc2UKK1BBU1MgZi5oYXNPd25Qcm9wZXJ0eSgnY2FsbGVyJykgaXMgZmFsc2UKIFBBU1Mg
YXJnMCBpcyAxCiBQQVNTIGFyZzEgaXMgMgogUEFTUyBhcmcyIGlzIDMKSW5kZXg6IExheW91dFRl
c3RzL2pzL2tkZS9zY3JpcHQtdGVzdHMvZnVuY3Rpb25fYXJndW1lbnRzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL2tkZS9zY3JpcHQtdGVzdHMvZnVuY3Rpb25fYXJndW1lbnRzLmpz
CShyZXZpc2lvbiAyNzk1NDMpCisrKyBMYXlvdXRUZXN0cy9qcy9rZGUvc2NyaXB0LXRlc3RzL2Z1
bmN0aW9uX2FyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYsNDIgKzE2LDEyIEBAIGZ1
bmN0aW9uIG1mKGEsYikgewogbWYoOTkpOwogc2hvdWxkQmUoIm1mLmFyZ3VtZW50cyIsICJleHBl
Y3RlZFtleHBubysrXSIpOwogCi0KLS8vIGNoZWNrIGludGVybmFsIHByb3BlcnRpZXMgb2YgYXJn
dW1lbnRzCi0KLS8vIERlbGV0ZQotCi0KLS8vIERvbnRFbnVtCi12YXIgZm91bmRBcmdzID0gZmFs
c2U7Ci0KLXZhciBSZWFkT25seU9LID0gZmFsc2U7Ci12YXIgRG9udERlbGV0ZU9LID0gZmFsc2U7
Ci12YXIgRG9udEVudW1PSyA9IGZhbHNlOworLy8gQ2hlY2sgdGhhdCBzbG9wcHkgbW9kZSBFUzUg
ZnVuY3Rpb24gZG9lc24ndCBoYXZlIG93biAnYXJndW1lbnRzJyBhbmQgJ2NhbGxlcicgcHJvcGVy
dGllcwogZnVuY3Rpb24gZihhLGIsYykgewotCi0gIC8vIFJlYWRPbmx5Ci0gIHZhciBuZXdhcmdz
ID0gbmV3IE9iamVjdCgpOwotICBmLmFyZ3VtZW50cyA9IG5ld2FyZ3M7Ci0gIFJlYWRPbmx5T0sg
PSAoZi5hcmd1bWVudHMgIT0gbmV3YXJncyk7Ci0KLSAgLy8gRG9udERlbGV0ZQotICBEb250RGVs
ZXRlT0sgPSAhZGVsZXRlKGYuYXJndW1lbnRzKTsKLSAgaWYgKGYuYXJndW1lbnRzID09IHVuZGVm
aW5lZCB8fCAhZi5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkoImFyZ3VtZW50cyIpKQotICAgIERv
bnREZWxldGVPSyA9IGZhbHNlOwotCi0gIC8vIERvbnRFbnVtCi0gIHZhciBmb3VuZEFyZ3MgPSBm
YWxzZTsKLSAgZm9yIChpIGluIGYpIHsKLSAgICBpZiAoZiA9PSAiYXJndW1lbnRzIikKLSAgICAg
IGZvdW5kQXJncyA9IHRydWU7Ci0gIH0KLSAgRG9udEVudW1PSyA9ICFmb3VuZEFyZ3M7CisgIHNo
b3VsZEJlRmFsc2UoImYuaGFzT3duUHJvcGVydHkoJ2FyZ3VtZW50cycpIik7CisgIHNob3VsZEJl
RmFsc2UoImYuaGFzT3duUHJvcGVydHkoJ2NhbGxlcicpIik7CiB9CiBmKDEsMiwzKTsKLXNob3Vs
ZEJlVHJ1ZSgiUmVhZE9ubHlPSyIpOwotc2hvdWxkQmVUcnVlKCJEb250RGVsZXRlT0siKTsKLXNo
b3VsZEJlVHJ1ZSgiRG9udEVudW1PSyIpOwogCiAvLyBDaGVjayB0aGF0IHBhcmFtZXRlciB2YXJp
YWJsZXMgYXJlIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nCiAvLyBlbGVtZW50cyBpbiB0aGUg
YXJndW1lbnRzIGFycmF5CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lvbiAyNzk1NDMp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEyLDggQEAgdmFyIGV4cGVjdGVkUHJvcGVy
dHlOYW1lc1NldCA9IHsKICAgICAiT2JqZWN0LmNyZWF0ZSh7fSwgeyAnYSc6IHsgJ3ZhbHVlJzog
MSwgJ2VudW1lcmFibGUnOiBmYWxzZSB9IH0pIjogIlsnYSddIiwKICAgICAiT2JqZWN0LmNyZWF0
ZShbMSwyLDNdLCB7ICdhJzogeyAndmFsdWUnOiAxLCAnZW51bWVyYWJsZSc6IGZhbHNlIH0gfSki
OiAiWydhJ10iLAogLy8gRnVuY3Rpb24gb2JqZWN0cwotICAgICJuZXcgRnVuY3Rpb24oKSI6ICJb
J2FyZ3VtZW50cycsICdjYWxsZXInLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAot
ICAgICIoZnVuY3Rpb24oKXt2YXIgeD1uZXcgRnVuY3Rpb24oKTt4Ll9fcHJvdG9fXz1bMSwyLDNd
O3JldHVybiB4O30pKCkiOiAiWydhcmd1bWVudHMnLCAnY2FsbGVyJywgJ2xlbmd0aCcsICduYW1l
JywgJ3Byb3RvdHlwZSddIiwKKyAgICAibmV3IEZ1bmN0aW9uKCkiOiAiWydsZW5ndGgnLCAnbmFt
ZScsICdwcm90b3R5cGUnXSIsCisgICAgIihmdW5jdGlvbigpe3ZhciB4PW5ldyBGdW5jdGlvbigp
O3guX19wcm90b19fPVsxLDIsM107cmV0dXJuIHg7fSkoKSI6ICJbJ2xlbmd0aCcsICduYW1lJywg
J3Byb3RvdHlwZSddIiwKIC8vIFN0cmluZyBvYmplY3RzCiAgICAgIm5ldyBTdHJpbmcoJycpIjog
IlsnbGVuZ3RoJ10iLAogICAgICJuZXcgU3RyaW5nKCdhJykiOiAiWycwJywgJ2xlbmd0aCddIiwK
SW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc3RyaWN0LW1v
ZGUuanMJKHJldmlzaW9uIDI3OTU0MykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9i
YXNpYy1zdHJpY3QtbW9kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTg3LDggKzE4Nyw4IEBAIHNo
b3VsZEJlVW5kZWZpbmVkKCIoZnVuY3Rpb24gZihhcmcpeyd1c2UKIHNob3VsZEJlVW5kZWZpbmVk
KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVlJykudmFsdWU7IH0pKCkiKTsKIHNob3Vs
ZEJlVW5kZWZpbmVkKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgcmV0dXJuIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnY2FsbGVyJyk7IH0pKCkiKTsK
IHNob3VsZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlw
dG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICdjYWxsZWUn
KTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOwotc2hv
dWxkQmVUcnVlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnY2FsbGVyJyk7
IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKLXNob3Vs
ZEJlVHJ1ZSgiKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7IHZhciBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmLl9fcHJvdG9fXywgJ2FyZ3VtZW50cycp
OyByZXR1cm4gZGVzY3JpcHRvci5nZXQgPT09IGRlc2NyaXB0b3Iuc2V0OyB9KSgpIik7CitzaG91
bGRCZUZhbHNlKCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgdmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGYuX19wcm90b19fLCAnY2FsbGVyJyk7
IHJldHVybiBkZXNjcmlwdG9yLmdldCA9PT0gZGVzY3JpcHRvci5zZXQ7IH0pKCkiKTsKK3Nob3Vs
ZEJlRmFsc2UoIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBzdHJpY3QnOyB2YXIgZGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZi5fX3Byb3RvX18sICdhcmd1bWVudHMn
KTsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0ID09PSBkZXNjcmlwdG9yLnNldDsgfSkoKSIpOwogc2hv
dWxkQmVUcnVlKCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiBmKCkgeyBmb3IodmFyIGkgaW4gdGhp
cyk7IH0pKCk7IHRydWU7IikKIAogc2hvdWxkQmVTeW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnXHUw
MzNiIik7CkBAIC0yMTUsNCArMjE1LDQgQEAgYUdsb2JhbCA9IGZhbHNlOwogc2hvdWxkQmVUcnVl
KCIoZnVuY3Rpb24gKCkge3RyeSB7IHRocm93IDE7IH0gY2F0Y2ggKGUpIHsgYUdsb2JhbCA9IHRy
dWU7IH19KSgpOyBhR2xvYmFsOyIpOwogCiAvLyBNYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGNyYXNo
IQotc2hvdWxkQmUoJ1N0cmluZyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKChmdW5j
dGlvbigpIHsgInVzZSBzdHJpY3QiOyB9KS5fX3Byb3RvX18sICJjYWxsZXIiKS5nZXQpJywgIidm
dW5jdGlvbiAoKSB7XFxuICAgIFtuYXRpdmUgY29kZV1cXG59JyIpOworc2hvdWxkQmUoJ1N0cmlu
ZyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKChmdW5jdGlvbigpIHsgInVzZSBzdHJp
Y3QiOyB9KS5fX3Byb3RvX18sICJjYWxsZXIiKS5nZXQpJywgIidmdW5jdGlvbiBjYWxsZXIoKSB7
XFxuICAgIFtuYXRpdmUgY29kZV1cXG59JyIpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL25vbi1zdHJpY3QtZnVuY3Rpb24tcHJvcGVydGllcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvbm9uLXN0cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVz
LmpzCShyZXZpc2lvbiAyNzk1NDMpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvbm9u
LXN0cmljdC1mdW5jdGlvbi1wcm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDE5ICs0
LDE5IEBAIGZ1bmN0aW9uIGZvbygpIHsKICAgICByZXR1cm4gMTsKIH0KIAotc2hvdWxkQmUoJ09i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZ1bmN0aW9uICgpIHt9KS5sZW5ndGgnLCc1Jyk7Citz
aG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVuY3Rpb24gKCkge30pLmxlbmd0
aCcsICczJyk7CiAKLXNob3VsZEJlVHJ1ZSgnT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZnVu
Y3Rpb24gKCkge30pLmluY2x1ZGVzKCJjYWxsZXIiKScpOwotc2hvdWxkQmVUcnVlKCdPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkuaW5jbHVkZXMoImFyZ3VtZW50cyIp
Jyk7CitzaG91bGRCZUZhbHNlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhmdW5jdGlvbiAo
KSB7fSkuaW5jbHVkZXMoImNhbGxlciIpJyk7CitzaG91bGRCZUZhbHNlKCdPYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhmdW5jdGlvbiAoKSB7fSkuaW5jbHVkZXMoImFyZ3VtZW50cyIpJyk7CiAK
LXNob3VsZEJlVHJ1ZSgnKGZ1bmN0aW9uKCl7fSkuaGFzT3duUHJvcGVydHkoImNhbGxlciIpJyk7
CitzaG91bGRCZUZhbHNlKCcoZnVuY3Rpb24oKXt9KS5oYXNPd25Qcm9wZXJ0eSgiY2FsbGVyIikn
KTsKIHNob3VsZEJlVHJ1ZSgnKGZ1bmN0aW9uKCl7fSkuX19wcm90b19fLmhhc093blByb3BlcnR5
KCJjYWxsZXIiKScpOwogCi1zaG91bGRCZVRydWUoJyhmdW5jdGlvbigpe30pLmhhc093blByb3Bl
cnR5KCJhcmd1bWVudHMiKScpOworc2hvdWxkQmVGYWxzZSgnKGZ1bmN0aW9uKCl7fSkuaGFzT3du
UHJvcGVydHkoImFyZ3VtZW50cyIpJyk7CiBzaG91bGRCZVRydWUoJyhmdW5jdGlvbigpe30pLl9f
cHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgiYXJndW1lbnRzIiknKTsKIAotc2hvdWxkQmUoJ3R5cGVv
ZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZvbywgImFyZ3VtZW50cyIpJywgJyJv
YmplY3QiJyk7Ci1zaG91bGRCZSgndHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZm9vLCAiY2FsbGVyIiknLCAnIm9iamVjdCInKTsKK3Nob3VsZEJlKCd0eXBlb2YgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihmb28sICJhcmd1bWVudHMiKScsICcidW5kZWZpbmVk
IicpOworc2hvdWxkQmUoJ3R5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGZv
bywgImNhbGxlciIpJywgJyJ1bmRlZmluZWQiJyk7CiAKIHNob3VsZEJlKCdmb28uY2FsbGVyJywg
J251bGwnKTsKIHNob3VsZEJlKCdmb28uYXJndW1lbnRzJywgJ251bGwnKTsKSW5kZXg6IExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy90aHJvdy10eXBlLWVycm9yLWlzLXVuaXF1ZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvdGhyb3ctdHlwZS1lcnJvci1p
cy11bmlxdWUuanMJKHJldmlzaW9uIDI3OTU0MykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy90aHJvdy10eXBlLWVycm9yLWlzLXVuaXF1ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDcs
MTMgKzQ3LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgbGV0IGJhc2VUaHJvd1R5cGVFcnJvckZ1
bmN0aW9uID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICJjYWxs
ZWUiKS5nZXQ7CiAKICAgICBsZXQgc291cmNlcyA9IFsKLSAgICAgICAgbmV3IFRocm93VHlwZUVy
cm9yU291cmNlKCJGdW5jdGlvbi5wcm90b3R5cGUiLCBGdW5jdGlvbi5wcm90b3R5cGUsIFsiYXJn
dW1lbnRzIiwgImNhbGxlciJdKSwKLSAgICAgICAgbmV3IFRocm93VHlwZUVycm9yU291cmNlKCJB
cnJheS5wcm90b3R5cGUucHVzaCAoYnVpbHRpbikiLCBhcnJheVByb3RvUHVzaCwgWyJhcmd1bWVu
dHMiLCAiY2FsbGVyIl0pLAotICAgICAgICBuZXcgVGhyb3dUeXBlRXJyb3JTb3VyY2UoIlN0cmlj
dCBmdW5jdGlvbiBhcmd1bWVudHMiLCBzdHJpY3RBcmd1bWVudHMsIFsiYXJndW1lbnRzIiwgImNh
bGxlciJdKSwKLSAgICAgICAgbmV3IFRocm93VHlwZUVycm9yU291cmNlKCJTbG9wcHkgZnVuY3Rp
b24gYXJndW1lbnRzIiwgc2xvcHB5QXJndW1lbnRzLCBbImFyZ3VtZW50cyIsICJjYWxsZXIiXSks
Ci0gICAgICAgIG5ldyBUaHJvd1R5cGVFcnJvclNvdXJjZSgiU3RyaWN0IGFyZ3VtZW50cyIsIHN0
cmljdEFyZ3VtZW50cygpLCBbImNhbGxlZSIsICJjYWxsZXIiXSksCi0gICAgICAgIG5ldyBUaHJv
d1R5cGVFcnJvclNvdXJjZSgiU2xvcHB5IGFyZ3VtZW50cyIsIHNsb3BweUFyZ3VtZW50cygpLCBb
ImNhbGxlZSIsICJjYWxsZXIiXSksCi0gICAgICAgIG5ldyBUaHJvd1R5cGVFcnJvclNvdXJjZSgi
Q2xhc3MgY29uc3RydWN0b3IiLCAobmV3IEEoKSkuY29uc3RydWN0b3IsIFsiYXJndW1lbnRzIiwg
ImNhbGxlciJdKQorICAgICAgICBuZXcgVGhyb3dUeXBlRXJyb3JTb3VyY2UoIlN0cmljdCBhcmd1
bWVudHMiLCBzdHJpY3RBcmd1bWVudHMoKSwgWyJjYWxsZWUiXSksCisgICAgICAgIG5ldyBUaHJv
d1R5cGVFcnJvclNvdXJjZSgiU2xvcHB5IGFyZ3VtZW50cyIsIHNsb3BweUFyZ3VtZW50cygpLCBb
ImNhbGxlZSJdKSwKICAgICBdOwogCiAgICAgbGV0IGVycm9ycyA9IDA7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>