<?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>236330</bug_id>
          
          <creation_ts>2022-02-08 14:39:27 -0800</creation_ts>
          <short_desc>[JSC] OrdinarySet should invoke custom [[Set]] methods for indexed puts</short_desc>
          <delta_ts>2022-02-15 14:40:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838889</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-08 14:39:27 -0800</bug_when>
    <thetext>[JSC] OrdinarySet should invoke custom [[Set]] methods for indexed puts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838890</commentid>
    <comment_count>1</comment_count>
      <attachid>451306</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-08 14:44:35 -0800</bug_when>
    <thetext>Created attachment 451306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839204</commentid>
    <comment_count>2</comment_count>
      <attachid>451388</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-09 09:09:32 -0800</bug_when>
    <thetext>Created attachment 451388
Patch

Adjust tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839269</commentid>
    <comment_count>3</comment_count>
      <attachid>451388</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-02-09 10:37:41 -0800</bug_when>
    <thetext>Comment on attachment 451388
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h:405
&gt; +        if (UNLIKELY(slot.thisValue() != thisObject)) {

can we do the &quot;isThisValueAltered&quot; thing?

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:2899
&gt; +        if (current-&gt;structure(vm)-&gt;typeInfo().interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero()) {

this is bizarre that we&apos;re using this flag to indicate what to do for put. This feels like an inconsistent fix to me.

&gt; Source/JavaScriptCore/runtime/StructureInlines.h:93
&gt; +    if (typeInfo().interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero())
&gt; +        return true;

this is not the intention of this flag. Now, if you put a typed array in a prototype chain, you&apos;re going to &quot;have a bad time&quot;. Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841949</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 14:40:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/88988175&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451306</attachid>
            <date>2022-02-08 14:44:35 -0800</date>
            <delta_ts>2022-02-09 09:09:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236330-20220208224433.patch</filename>
            <type>text/plain</type>
            <size>49451</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODk0MzUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTA4ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcmRpbmFyeVNldCBzaG91bGQgaW52b2tlIGN1c3Rv
bSBbW1NldF1dIG1ldGhvZHMgZm9yIGluZGV4ZWQgcHV0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvbW9kdWxlLW5hbWVzcGFjZS1hY2Nl
c3Mtc2V0LWZhaWxzLmpzOgorICAgICAgICAqIHN0cmVzcy9wdXQtdG8tcHJvdG8tY2hhaW4tb3Zl
cnJpZGVzLXB1dC5qczogUmVmYWN0b3IgYSBiaXQgYW5kIGFkZCBpbmRleGVkIHRlc3QgY2FzZXMu
CisgICAgICAgICogc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0
cmluZy1zZXQtaW4tYm91bmRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJy
YXktY2Fub25pY2FsLW51bWVyaWMtaW5kZXgtc3RyaW5nLXNldC5qczoKKwogMjAyMi0wMi0wOCAg
Q2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIG1vdmUg
ZnVuY3Rpb24gd3JhcHBpbmcgbG9naWMgdG8gYSBuZXcgRnVuY3Rpb24gdHlwZQpJbmRleDogSlNU
ZXN0cy9zdHJlc3MvbW9kdWxlLW5hbWVzcGFjZS1hY2Nlc3Mtc2V0LWZhaWxzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEpTVGVzdHMvc3RyZXNzL21vZHVsZS1uYW1lc3BhY2UtYWNjZXNzLXNldC1mYWlscy5q
cwkocmV2aXNpb24gMjg5NDM1KQorKysgSlNUZXN0cy9zdHJlc3MvbW9kdWxlLW5hbWVzcGFjZS1h
Y2Nlc3Mtc2V0LWZhaWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogY29uc3Qg
ZXhpc3RpbmdLZXlzID0gWyJjb2NvYSIsICJ0ZXN0IiwgU3ltYm9sLnRvU3RyaW5nVGFnXTsKLWNv
bnN0IG5vbkV4aXN0aW5nS2V5cyA9IFsiZm9vIiwgU3ltYm9sKCJmb28iKV07Citjb25zdCBub25F
eGlzdGluZ0tleXMgPSBbImZvbyIsIFN5bWJvbCgiZm9vIiksICIwIl07CiBjb25zdCBhbGxLZXlz
ID0gWy4uLmV4aXN0aW5nS2V5cywgLi4ubm9uRXhpc3RpbmdLZXlzXTsKIGNvbnN0IHRlc3RWYWx1
ZSA9IE9iamVjdC5mcmVlemUoe30pOwogCkBAIC02MCw2ICs2MCw5IEBAIGZ1bmN0aW9uIHRlc3RS
ZWZsZWN0U2V0KG5zKSB7CiAgICAgfQogCiAgICAgZm9yIChjb25zdCBub25FeGlzdGluZ0tleSBv
ZiBub25FeGlzdGluZ0tleXMpIHsKKyAgICAgICAgLy8gRklYTUU6IEZpeCBSZWZsZWN0LnNldCB0
byBpbnZva2UgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCgpIGZvciBpbmRpY2VzIGFuZCBy
ZW1vdmUgdGhpcyBleGNlcHRpb24uCisgICAgICAgIGlmIChub25FeGlzdGluZ0tleSA9PT0gIjAi
KSBjb250aW51ZTsKKwogICAgICAgICBhc3NlcnQoIVJlZmxlY3Quc2V0KG5zLCBub25FeGlzdGlu
Z0tleSwgdGVzdFZhbHVlKSwgbm9uRXhpc3RpbmdLZXkpOwogICAgICAgICBhc3NlcnQobnNbbm9u
RXhpc3RpbmdLZXldID09PSB1bmRlZmluZWQsIG5vbkV4aXN0aW5nS2V5KTsKIApJbmRleDogSlNU
ZXN0cy9zdHJlc3MvcHV0LXRvLXByb3RvLWNoYWluLW92ZXJyaWRlcy1wdXQuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9zdHJlc3MvcHV0LXRvLXByb3RvLWNoYWluLW92ZXJyaWRlcy1wdXQuanMJ
KHJldmlzaW9uIDI4OTQzNSkKKysrIEpTVGVzdHMvc3RyZXNzL3B1dC10by1wcm90by1jaGFpbi1v
dmVycmlkZXMtcHV0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDI2IEBACitjb25zdCBp
c0pTQyA9IHR5cGVvZiAkdm0gPT09ICJvYmplY3QiOwogY29uc3QgVEVTVF9WQUxVRSA9IDEwNjI2
MzA3MTM7IC8vIEFycmF5J3MgImxlbmd0aCIgaXMgcmVxdWlyZWQgdG8gYmUgaW50MzIKIGNvbnN0
IGNsZWFuVXBNYXAgPSBuZXcgV2Vha01hcDsKIGNvbnN0IGhhc093biA9IChvYmosIGtleSkgPT4g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTsKIAogdGVzdFNl
dFJlc3VsdCgoKSA9PiBbMSwgMl0sICJsZW5ndGgiLCB0cnVlKTsKK3Rlc3RTZXRSZXN1bHQoKCkg
PT4gWzEsIDJdLCAiMCIsIHRydWUpOworCiB0ZXN0U2V0UmVzdWx0KAogICAgICgpID0+IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShuZXcgQXJyYXksICJsZW5ndGgiLCB7IHdyaXRhYmxlOiBmYWxzZSB9
KSwKICAgICAibGVuZ3RoIiwKICAgICBmYWxzZSwKICk7CiAKK3Rlc3RTZXRSZXN1bHQoCisgICAg
KCkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFsxLCAyXSwgIjEiLCB7IHdyaXRhYmxlOiBmYWxz
ZSB9KSwKKyAgICAiMSIsCisgICAgZmFsc2UsCispOworCiB0ZXN0U2V0UmVzdWx0KCgpID0+IG5l
dyBTdHJpbmcsICJsZW5ndGgiLCBmYWxzZSk7Cit0ZXN0U2V0UmVzdWx0KCgpID0+IG5ldyBTdHJp
bmcoImZvbyIpLCAiMCIsIGZhbHNlKTsKKwogdGVzdFNldFJlc3VsdCgoKSA9PiBuZXcgUmVnRXhw
LCAibGFzdEluZGV4IiwgdHJ1ZSk7CiB0ZXN0U2V0UmVzdWx0KAogICAgICgpID0+IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSgvKD86KS9nLCAibGFzdEluZGV4IiwgeyB3cml0YWJsZTogZmFsc2UgfSks
CkBAIC0xNywxNiArMjgsMjEgQEAgdGVzdFNldFJlc3VsdCgKICAgICBmYWxzZSwKICk7CiAKLWZv
ciAoY29uc3Qga2V5IG9mIFsibGluZSIsICJjb2x1bW4iLCAic291cmNlVVJMIiwgInN0YWNrIl0p
Ci0gICAgdGVzdFNldFJlc3VsdCgoKSA9PiBuZXcgRXJyb3IsIGtleSwgdHJ1ZSk7Cit0ZXN0U2V0
UmVzdWx0KCgpID0+IG5ldyBFcnJvciwgInN0YWNrIiwgdHJ1ZSk7CitpZiAoaXNKU0MpIHsKKyAg
ICBmb3IgKGNvbnN0IGtleSBvZiBbImxpbmUiLCAiY29sdW1uIiwgInNvdXJjZVVSTCJdKQorICAg
ICAgICB0ZXN0U2V0UmVzdWx0KCgpID0+IG5ldyBFcnJvciwga2V5LCB0cnVlKTsKK30KIAogY29u
c3QgbWFwcGVkQXJndW1lbnRzID0gKCkgPT4gKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGFyZ3Vt
ZW50czsgfSkoMSwgMik7CiB0ZXN0U2V0UmVzdWx0KG1hcHBlZEFyZ3VtZW50cywgImNhbGxlZSIs
IHRydWUpOwogdGVzdFNldFJlc3VsdChtYXBwZWRBcmd1bWVudHMsICJsZW5ndGgiLCB0cnVlKTsK
K3Rlc3RTZXRSZXN1bHQobWFwcGVkQXJndW1lbnRzLCAiMCIsIHRydWUpOwogdGVzdFNldFJlc3Vs
dChtYXBwZWRBcmd1bWVudHMsIFN5bWJvbC5pdGVyYXRvciwgdHJ1ZSk7CiAKLWNvbnN0IHVubWFw
cGVkQXJndW1lbnRzID0gZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIGFyZ3VtZW50
czsgfTsKK2NvbnN0IHVubWFwcGVkQXJndW1lbnRzID0gKCkgPT4gKGZ1bmN0aW9uKGEsIGIsIGMp
IHsgInVzZSBzdHJpY3QiOyByZXR1cm4gYXJndW1lbnRzOyB9KSgxLCAyLCAzKTsKIHRlc3RTZXRS
ZXN1bHQodW5tYXBwZWRBcmd1bWVudHMsICJsZW5ndGgiLCB0cnVlKTsKK3Rlc3RTZXRSZXN1bHQo
dW5tYXBwZWRBcmd1bWVudHMsICIwIiwgdHJ1ZSk7CiB0ZXN0U2V0UmVzdWx0KHVubWFwcGVkQXJn
dW1lbnRzLCBTeW1ib2wuaXRlcmF0b3IsIHRydWUpOwogCiB2YXIgZm9vOwpAQCAtMzQsOCArNTAs
MTAgQEAgZnVuY3Rpb24gYmFyKCkge30KIGZvciAoY29uc3Qga2V5IG9mIFsiZm9vIiwgImJhciIs
ICJwYXJzZUludCJdKQogICAgIHRlc3RTZXRSZXN1bHQoKCkgPT4gZ2xvYmFsVGhpcywga2V5LCB0
cnVlKTsKIAotZm9yIChjb25zdCBrZXkgb2YgWyJJbmZpbml0eSIsICJOYU4iLCAidW5kZWZpbmVk
Il0pCi0gICAgdGVzdFNldFJlc3VsdCgoKSA9PiAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuZ2xv
YmFsVGhpcywga2V5LCBmYWxzZSk7CitpZiAoaXNKU0MpIHsKKyAgICBmb3IgKGNvbnN0IGtleSBv
ZiBbIkluZmluaXR5IiwgIk5hTiIsICJ1bmRlZmluZWQiXSkKKyAgICAgICAgdGVzdFNldFJlc3Vs
dCgoKSA9PiAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuZ2xvYmFsVGhpcywga2V5LCBmYWxzZSk7
Cit9CiAKIGZvciAoY29uc3Qga2V5IG9mIFsibmFtZSIsICJsZW5ndGgiXSkgewogICAgIHRlc3RT
ZXRSZXN1bHQoKCkgPT4gZnVuY3Rpb24oKSB7fS5iaW5kKCksIGtleSwgZmFsc2UpOwpAQCAtNjUs
NDQgKzgzLDUxIEBAIHRlc3RTZXRSZXN1bHQoCiBmdW5jdGlvbiB0ZXN0U2V0UmVzdWx0KGdldFRh
cmdldCwga2V5LCBleHBlY3RlZFJlc3VsdCkgewogICAgIGZvciAoY29uc3QgcHJpbWl0aXZlIG9m
IFt0cnVlLCAxLCAiZm9vIiwgU3ltYm9sKCksIDBuXSkgewogICAgICAgICBjb25zdCBwcmltaXRp
dmVQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJpbWl0aXZlKTsKLSAgICAgICAg
Y29uc3QgZ2V0VGFyZ2V0V2l0aER1bW15U2V0dGVyT25Qcm90b3R5cGUgPSB3aXRoU2V0dGVyT25Q
cm90b3R5cGUoKCkgPT4geworICAgICAgICBjb25zdCBnZXRUYXJnZXRXaXRoUG9pc29uZWRTZXR0
ZXJPblByb3RvdHlwZSA9IHdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90eXBlKCgpID0+IHsKICAg
ICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldFRhcmdldCgpOwotICAgICAgICAgICAgaWYgKE9i
amVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpICE9PSBwcmltaXRpdmVQcm90b3R5cGUpCi0gICAg
ICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3RvdHlwZSwgdGFy
Z2V0KTsKKyAgICAgICAgICAgIFJlZmxlY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBPYmplY3Qu
cHJvdG90eXBlKTsgLy8gYXZvaWQgY3ljbGljIFtbUHJvdG90eXBlXV0gY2hhaW4gaWYgdGFyZ2V0
IGlzIFN0cmluZyBvYmplY3QgYW5kIHJlY2VpdmVyIGlzIGEgc3RyaW5nCisgICAgICAgICAgICBP
YmplY3Quc2V0UHJvdG90eXBlT2YocHJpbWl0aXZlUHJvdG90eXBlLCB0YXJnZXQpOwogICAgICAg
ICAgICAgcmV0dXJuIHRhcmdldDsKLSAgICAgICAgfSwga2V5LCAoKSA9PiB7fSk7CisgICAgICAg
IH0sIGtleSk7CiAKLSAgICAgICAgdGVzdFNldFJlc3VsdEludGVybmFsKGdldFRhcmdldFdpdGhE
dW1teVNldHRlck9uUHJvdG90eXBlLCAoKSA9PiBwcmltaXRpdmUsIGtleSwgZmFsc2UpOworICAg
ICAgICB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwoZ2V0VGFyZ2V0V2l0aFBvaXNvbmVkU2V0dGVyT25Q
cm90b3R5cGUsICgpID0+IHByaW1pdGl2ZSwga2V5LCBmYWxzZSk7CiAgICAgICAgIE9iamVjdC5z
ZXRQcm90b3R5cGVPZihwcmltaXRpdmVQcm90b3R5cGUsIE9iamVjdC5wcm90b3R5cGUpOwogICAg
IH0KIAotICAgIGNvbnN0IGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90eXBlID0g
d2l0aFNldHRlck9uUHJvdG90eXBlKGdldFRhcmdldCwga2V5LCAoKSA9PiB7IHRocm93IG5ldyBF
cnJvcihgJHtTdHJpbmcoa2V5KX0gc2V0dGVyIHNob3VsZCBiZSB1bnJlYWNoYWJsZSFgKTsgfSk7
CisgICAgY29uc3QgZ2V0VGFyZ2V0V2l0aFBvaXNvbmVkU2V0dGVyT25Qcm90b3R5cGUgPSB3aXRo
UG9pc29uZWRTZXR0ZXJPblByb3RvdHlwZShnZXRUYXJnZXQsIGtleSk7CiAgICAgdGVzdFNldFJl
c3VsdEludGVybmFsKGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90eXBlLCB0ID0+
IE9iamVjdC5jcmVhdGUodCksIGtleSwgZXhwZWN0ZWRSZXN1bHQpOwogICAgIHRlc3RTZXRSZXN1
bHRJbnRlcm5hbChnZXRUYXJnZXRXaXRoUG9pc29uZWRTZXR0ZXJPblByb3RvdHlwZSwgdCA9PiBP
YmplY3QuY3JlYXRlKE9iamVjdC5jcmVhdGUodCkpLCBrZXksIGV4cGVjdGVkUmVzdWx0KTsKICAg
ICB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwoZ2V0VGFyZ2V0V2l0aFBvaXNvbmVkU2V0dGVyT25Qcm90
b3R5cGUsIHQgPT4gbmV3IFByb3h5KHQsIHt9KSwga2V5LCBleHBlY3RlZFJlc3VsdCk7CiAgICAg
dGVzdFNldFJlc3VsdEludGVybmFsKGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90
eXBlLCB0ID0+IG5ldyBQcm94eSh0LCBSZWZsZWN0KSwga2V5LCBleHBlY3RlZFJlc3VsdCk7Ci0g
ICAgdGVzdFNldFJlc3VsdEludGVybmFsKGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRlck9uUHJv
dG90eXBlLCB0ID0+ICR2bS5jcmVhdGVQcm94eShPYmplY3QuY3JlYXRlKHQpKSwga2V5LCBleHBl
Y3RlZFJlc3VsdCk7CisKKyAgICBpZiAoaXNKU0MpCisgICAgICAgIHRlc3RTZXRSZXN1bHRJbnRl
cm5hbChnZXRUYXJnZXRXaXRoUG9pc29uZWRTZXR0ZXJPblByb3RvdHlwZSwgdCA9PiAkdm0uY3Jl
YXRlUHJveHkoT2JqZWN0LmNyZWF0ZSh0KSksIGtleSwgZXhwZWN0ZWRSZXN1bHQpOwogfQogCi1m
dW5jdGlvbiB3aXRoU2V0dGVyT25Qcm90b3R5cGUoZ2V0VGFyZ2V0LCBrZXksIHNldCkgeworZnVu
Y3Rpb24gd2l0aFBvaXNvbmVkU2V0dGVyT25Qcm90b3R5cGUoZ2V0VGFyZ2V0LCBrZXkpIHsKICAg
ICAidXNlIHN0cmljdCI7CiAgICAgcmV0dXJuICgpID0+IHsKICAgICAgICAgY29uc3QgdGFyZ2V0
ID0gZ2V0VGFyZ2V0KCk7CiAgICAgICAgIGNvbnN0IHRhcmdldFByb3RvdHlwZSA9IE9iamVjdC5n
ZXRQcm90b3R5cGVPZih0YXJnZXQpOwotICAgICAgICBjb25zdCBuZXdEZXNjcmlwdG9yID0geyBz
ZXQsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9OworICAgICAgICBjb25zdCBuZXdEZXNjcmlwdG9yID0g
eyBzZXQoKSB7IHRocm93IG5ldyBFcnJvcihgJHtTdHJpbmcoa2V5KX0gc2V0dGVyIHNob3VsZCBi
ZSB1bnJlYWNoYWJsZSFgKTsgfSwgY29uZmlndXJhYmxlOiB0cnVlIH07CiAKLSAgICAgICAgaWYg
KGtleSA9PT0gImxlbmd0aCIgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFy
Z2V0LCBrZXkpLmNvbmZpZ3VyYWJsZSkgeworICAgICAgICBpZiAoIU9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpLmNvbmZpZ3VyYWJsZSkgewogICAgICAgICAgICAg
Y29uc3QgbmV3UHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7IFtrZXldOiBuZXdEZXNj
cmlwdG9yIH0pOwotICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgbmV3
UHJvdG90eXBlKTsKLSAgICAgICAgICAgIGNsZWFuVXBNYXAuc2V0KHRhcmdldCwgKCkgPT4geyBP
YmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpOyB9KTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IHByZXZEZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXRQcm90b3R5cGUsIGtleSk7Ci0gICAgICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0UHJvdG90eXBlLCBrZXksIG5ld0Rlc2NyaXB0
b3IpOwotICAgICAgICAgICAgY2xlYW5VcE1hcC5zZXQodGFyZ2V0LCBwcmV2RGVzY3JpcHRvcgot
ICAgICAgICAgICAgICAgID8gKCkgPT4geyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0UHJv
dG90eXBlLCBrZXksIHByZXZEZXNjcmlwdG9yKTsgfQotICAgICAgICAgICAgICAgIDogKCkgPT4g
eyBkZWxldGUgdGFyZ2V0UHJvdG90eXBlW2tleV07IH0pOworICAgICAgICAgICAgaWYgKFJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBuZXdQcm90b3R5cGUpKSB7CisgICAgICAgICAgICAg
ICAgY2xlYW5VcE1hcC5zZXQodGFyZ2V0LCAoKSA9PiB7IE9iamVjdC5zZXRQcm90b3R5cGVPZih0
YXJnZXQsIHRhcmdldFByb3RvdHlwZSk7IH0pOworICAgICAgICAgICAgICAgIHJldHVybiB0YXJn
ZXQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBjb25zdCBwcmV2RGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0UHJvdG90eXBlLCBr
ZXkpOworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0UHJvdG90eXBlLCBrZXks
IG5ld0Rlc2NyaXB0b3IpOworICAgICAgICBjbGVhblVwTWFwLnNldCh0YXJnZXQsICgpID0+IHsK
KyAgICAgICAgICAgIGlmIChwcmV2RGVzY3JpcHRvcikKKyAgICAgICAgICAgICAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkodGFyZ2V0UHJvdG90eXBlLCBrZXksIHByZXZEZXNjcmlwdG9yKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0UHJvdG90eXBlW2tl
eV07CisgICAgICAgIH0pOworCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICAgfTsKIH0KSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0
cmluZy1zZXQtaW4tYm91bmRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3R5cGVk
LWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQtaW4tYm91bmRzLmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1l
cmljLWluZGV4LXN0cmluZy1zZXQtaW4tYm91bmRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKyd1c2Ugc3RyaWN0JzsKK2NvbnN0IFR5cGVkQXJyYXlzID0gW1VpbnQ4Q2xhbXBl
ZEFycmF5LCBVaW50OEFycmF5LCBVaW50MTZBcnJheSwgVWludDMyQXJyYXksIEludDhBcnJheSwg
SW50MTZBcnJheSwgSW50MzJBcnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0QXJyYXldOworCitm
dW5jdGlvbiBhc3NlcnQoeCkgeworICAgIGlmICgheCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBCYWQgYXNzZXJ0aW9uIWApOworfQorCitmb3IgKGNvbnN0IFR5cGVkQXJyYXkgb2YgVHlwZWRB
cnJheXMpIHsKKyAgICBjb25zdCB0ZXN0ID0gKCkgPT4geworICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCB0QSA9IG5ldyBUeXBlZEFycmF5KFswLCAxXSk7CisgICAgICAgICAgICBjb25zdCBo
ZWlyID0gT2JqZWN0LmNyZWF0ZSh0QSk7CisgICAgICAgICAgICBoZWlyWzFdID0gNDI7CisKKyAg
ICAgICAgICAgIGFzc2VydCh0QVsxXSwgMSk7CisgICAgICAgICAgICBhc3NlcnQoaGVpci5oYXNP
d25Qcm9wZXJ0eSgxKSk7CisgICAgICAgICAgICBhc3NlcnQoaGVpclsxXSA9PT0gNDIpOworICAg
ICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0ge307CisgICAg
ICAgICAgICBjb25zdCByZWNlaXZlciA9IG5ldyBUeXBlZEFycmF5KFswLCAxXSkKKworICAgICAg
ICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KHRhcmdldCwgMSwgNDIsIHJlY2VpdmVyKSk7CisgICAg
ICAgICAgICBhc3NlcnQoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eSgxKSk7CisgICAgICAgICAgICBh
c3NlcnQocmVjZWl2ZXJbMV0gPT09IDQyKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IHRBID0gbmV3IFR5cGVkQXJyYXkoWzAsIDFdKTsKKyAgICAgICAgICAgIGNv
bnN0IHRhcmdldCA9IE9iamVjdC5jcmVhdGUodEEpOworICAgICAgICAgICAgY29uc3QgcmVjZWl2
ZXIgPSB7fTsKKworICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KHRhcmdldCwgMSwgNDIs
IHJlY2VpdmVyKSk7CisgICAgICAgICAgICBhc3NlcnQodEFbMV0gPT09IDEpOworICAgICAgICAg
ICAgYXNzZXJ0KCF0YXJnZXQuaGFzT3duUHJvcGVydHkoMSkpOworICAgICAgICAgICAgYXNzZXJ0
KHJlY2VpdmVyLmhhc093blByb3BlcnR5KDEpKTsKKyAgICAgICAgICAgIGFzc2VydChyZWNlaXZl
clsxXSA9PT0gNDIpOworICAgICAgICB9CisgICAgfTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShUeXBlZEFycmF5LnByb3RvdHlwZSwgMSwgeworICAgICAgICBzZXQoKSB7IHRocm93IG5l
dyBFcnJvcihgJHtUeXBlZEFycmF5Lm5hbWV9LnByb3RvdHlwZVsxXSBzZXR0ZXIgc2hvdWxkIGJl
IHVucmVhY2hhYmxlIWApOyB9LAorICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgfSk7
CisgICAgdGVzdCgpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5cGVkQXJyYXkucHJv
dG90eXBlLCAxLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsKKyAgICB0ZXN0KCk7Cit9CkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy90eXBlZC1hcnJheS1jYW5vbmljYWwtbnVtZXJpYy1pbmRleC1zdHJpbmct
c2V0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNh
bC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQuanMJKHJldmlzaW9uIDI4OTQzNSkKKysrIEpTVGVz
dHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQu
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAndXNlIHN0cmljdCc7CiBjb25zdCBU
eXBlZEFycmF5cyA9IFtVaW50OENsYW1wZWRBcnJheSwgVWludDhBcnJheSwgVWludDE2QXJyYXks
IFVpbnQzMkFycmF5LCBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIEZsb2F0MzJB
cnJheSwgRmxvYXQ2NEFycmF5XTsKLWNvbnN0IGNhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZ3Mg
PSBbJy0wJywgJy0xJywgJy0zLjE0JywgJ0luZmluaXR5JywgJy1JbmZpbml0eScsICdOYU4nLCAn
MC41JywgJzQyOTQ5NjcyOTUnLCAnNDI5NDk2NzI5NiddOworY29uc3QgY2Fub25pY2FsTnVtZXJp
Y0luZGV4U3RyaW5ncyA9IFsnLTAnLCAnMCcsICcxJywgJy0xJywgJy0zLjE0JywgJ0luZmluaXR5
JywgJy1JbmZpbml0eScsICdOYU4nLCAnMC41JywgJzQyOTQ5NjcyOTUnLCAnNDI5NDk2NzI5Nidd
OwogCiBmdW5jdGlvbiBhc3NlcnQoeCwga2V5KSB7CiAgICAgaWYgKCF4KQpAQCAtMzUsNiArMzUs
OSBAQCBmb3IgKGNvbnN0IFR5cGVkQXJyYXkgb2YgVHlwZWRBcnJheXMpIHsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGaXggUmVmbGVj
dC5zZXQgdG8gaW52b2tlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoKSBm
b3IgaW5kaWNlcyBhbmQgcmVtb3ZlIHRoaXMgZXhjZXB0aW9uLgorICAgICAgICAgICAgICAgIGlm
IChrZXkgPT09ICIwIiB8fCBrZXkgPT09ICIxIikgcmV0dXJuOworCiAgICAgICAgICAgICAgICAg
Y29uc3QgdEEgPSBuZXcgVHlwZWRBcnJheTsKICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQg
PSBPYmplY3QuY3JlYXRlKHRBKTsKICAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlciA9IHt9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMjItMDItMDggIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIE9yZGluYXJ5U2V0IHNob3VsZCBpbnZva2UgY3VzdG9tIFtbU2V0XV0gbWV0
aG9kcyBmb3IgaW5kZXhlZCBwdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGJyaW5ncyBzaW1pbGFyIGNvbXBhdGliaWxpdHkgZml4
ZXMgZm9yIGluZGV4ZWQgcHV0cyBhcyBpbiBidWcgMjE3OTE2LAorICAgICAgICBhbGlnbmluZyBK
U0Mgd2l0aCBWOCBhbmQgU3BpZGVyTW9ua2V5OgorICAgICAgICAgIC0gY2FzZXMgbGlrZSBgT2Jq
ZWN0LmNyZWF0ZShuZXcgU3RyaW5nKCJmb28iKSlbMF0gPSAiZiJgIG5vdyBmYWlscyBpbnN0ZWFk
IG9mCisgICAgICAgICAgICBkZWZpbmluZyBhIHByb3BlcnR5LCBhcyBwZXIgc3BlYyBbMV07Cisg
ICAgICAgICAgLSBwcm90b3R5cGUgY2hhaW4gdHJhdmVyc2FsIGlzIG5vdyB0ZXJtaW5hdGVkIG9u
Y2UgYW4gaW5kZXggb24gYSBmYXN0IGJ1dHRlcmZseQorICAgICAgICAgICAgd2FzIGZvdW5kLCB3
aGljaCBpcyBhbHdheXMgW1tXcml0YWJsZV1dLCB0byBhdm9pZCBpbnZva2luZyBzZXR0ZXJzIC8g
cHV0KCkKKyAgICAgICAgICAgIG92ZXJyaWRlcyBoaWdoZXIgaW4gdGhlIGNoYWluLgorCisgICAg
ICAgIEJlZm9yZSB0aGlzIGNoYW5nZSwgYSBwdXQoKSBvdmVycmlkZSBjb3VsZCBlaXRoZXIgYmUg
aW52b2tlZCB3aXRoIGFuIGluZGV4LCBvciBmb3IKKyAgICAgICAgYWx0ZXJlZCByZWNlaXZlci4g
Tm93LCBpdCBjYW4gYmUgaW52b2tlZCB3aXRoIGJvdGggYXQgb25jZSwgYW5kIG1ldGhvZHMgaGF2
ZSB0bworICAgICAgICBoYW5kbGUgdGhhdCBhcHByb3ByaWF0ZWx5LiBUaGlzIGRlc2lnbiBkZWNp
c2lvbiB3YXMgbWFkZSB0byBhdm9pZCBhZGRpbmcgYSBgcmVjZWl2ZXJgCisgICAgICAgIHBhcmFt
ZXRlciB0byBwdXRCeUluZGV4KCkgb3ZlcnJpZGVzLgorCisgICAgICAgIFNpbmNlIFJlZmxlY3Qu
c2V0KCkgc3RpbGwgaW52b2tlcyBvcmRpbmFyeVNldFNsb3coKSBmb3IgaW5kZXhlZCBwcm9wZXJ0
aWVzLCB3aGljaAorICAgICAgICBkb2Vzbid0IGludm9rZSBwdXQoKSBtZXRob2RzIGV4cGVjdCBm
b3IgUHJveHlPYmplY3QsIHdlIGFyZSBub3Qgc3BlYy1wZXJmZWN0IGp1c3QgeWV0LgorCisgICAg
ICAgIFNpbmNlIHB1dEJ5SW5kZXgoKSBhbmQgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgpIG1p
cnJvciBlYWNoIG90aGVyIChkb2Vzbid0IGZlZWwKKyAgICAgICAgcmlnaHQgdG8gYXNzZXJ0IHRo
YXQgdGhvdWdoKSwgdGhlIGxhdHRlciBpcyBjaGVja2VkIGluIG1heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcygpCisgICAgICAgIHRvIGF2b2lkIGludHJvZHVjaW5nIGEgdHlwZSBpbmZvIGZsYWcg
Zm9yIHB1dEJ5SW5kZXgoKS4KKworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBhYm9saXNoZXMg
dXNpbmcgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMgZm9yIG9iamVjdHMgd2l0aG91dCBhY3R1YWwK
KyAgICAgICAgaW5kZXhlZCBhY2Nlc3NvcnMgb24gc2xvdyBidXR0ZXJmbGllcywgd2hpY2ggaXMg
bmljZS4KKworICAgICAgICBPbiB0eXBlZCBhcnJheXM6IGN1cnJlbnRseSB0aGVyZSBpcyBhIHNw
ZWMgZ2FwIGZvciBbW1NldF1dIHdpdGggYWx0ZXJlZCByZWNlaXZlciBbMl0sCisgICAgICAgIHdo
aWNoIEkgaW50ZW50IHRvIGZpeCwgYnV0IGZvciBub3cgd2UgYWxpZ24gd2l0aCBWODogT09CIHB1
dHMgYXJlICJ0ZXJtaW5hdGVkIgorICAgICAgICAobm8gZnVydGhlciBwcm90b3R5cGUgY2hhaW4g
bG9va3VwKSwgd2hpbGUgaW4tYm91bmQgcHV0cyBwZXJmb3JtIE9yZGluYXJ5U2V0IGZvcgorICAg
ICAgICB3ZWItY29tcGF0aWJpbGl0eS4KKworICAgICAgICBBcyBmb3IgcGVyZm9ybWFuY2UsIHRo
aXMgcGF0Y2ggc2hvdWxkIGJlIG5ldXRyYWw6IHB1YmxpY0xlbmd0aCgpIGNoZWNrIGlzIGZhc3Qg
YW5kCisgICAgICAgIHRoZXJlIG5vIGtub3duIHVzYWdlcyBvZiBpbmhlcml0aW5nIG9iamVjdHMg
d2l0aCBjdXN0b20gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgpLgorCisgICAgICAgIFsxXTog
aHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXNldHdpdGhvd25kZXNjcmlwdG9y
IChzdGVwIDIuYSkKKyAgICAgICAgWzJdOiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hMjYy
L3B1bGwvMTU1NgorCisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OnB1dCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKToK
KyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlP
YmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRl
eENvbW1vbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aXNTdHJpbmdP
d25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0KToKKyAgICAgICAg
KEpTQzo6U3RyaW5nT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzIGNvbnN0KToKKwogMjAyMi0wMi0wOCAgQ2FpdGxpbiBQb3R0ZXIg
IDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIG1vdmUgZnVuY3Rpb24gd3JhcHBp
bmcgbG9naWMgdG8gYSBuZXcgRnVuY3Rpb24gdHlwZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDIsNiArNDAyLDEyIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnAK
ICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVy
aWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChVTkxJ
S0VMWShzbG90LnRoaXNWYWx1ZSgpICE9IHRoaXNPYmplY3QpKSB7CisgICAgICAgICAgICBpZiAo
dGhpc09iamVjdC0+aW5Cb3VuZHMoaW5kZXgudmFsdWUoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPj4sICJwdXRCeUluZGV4IG11c3Qgbm90IGJlIG92ZXJyaWRkZW4iKTsKICAgICAgICAg
cmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjg5NDM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODk2LDYgKzI4OTYsMTMgQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0
QnlJbgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGZv
ciAoSlNPYmplY3QqIGN1cnJlbnQgPSB0aGlzOyA7KSB7CisgICAgICAgIGlmIChjdXJyZW50LT5z
dHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgeworICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBzaG91bGRU
aHJvdyk7CisgICAgICAgICAgICBwdXRSZXN1bHQgPSBjdXJyZW50LT5tZXRob2RUYWJsZSh2bSkt
PnB1dChjdXJyZW50LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIGkpLCB2YWx1
ZSwgc2xvdCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAg
IC8vIFRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIHdpdGggcmVzcGVjdCB0byBwcm90b3R5cGVz
IGFzIEpTT2JqZWN0OjpwdXQoKS4gSXQgb25seQogICAgICAgICAvLyBhbGxvd3MgYSBwcm90b3R5
cGUgdG8gaW50ZXJjZXB0IGEgcHV0IGlmIChhKSB0aGUgcHJvdG90eXBlIGRlY2xhcmVzIHRoZSBw
cm9wZXJ0eQogICAgICAgICAvLyB3ZSdyZSBhZnRlciByYXRoZXIgdGhhbiBpbnRlcmNlcHRpbmcg
aXQgdmlhIGFuIG92ZXJyaWRlIG9mIEpTT2JqZWN0OjpwdXQoKSwgYW5kCkBAIC0yOTA5LDE0ICsy
OTE2LDggQEAgYm9vbCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogICAgICAg
ICAgICAgICAgIHB1dFJlc3VsdCA9IGl0ZXItPnZhbHVlLnB1dChnbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoY3VycmVudC0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgYXV0byogcHJveHkgPSBqc0Nhc3Q8
UHJveHlPYmplY3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIHB1dFJlc3VsdCA9IHByb3h5LT5w
dXRCeUluZGV4Q29tbW9uKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBpLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmIChpIDwgY3VycmVudC0+Z2V0QXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjdXJy
ZW50LT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc0
LDI1ICs0NzQsMTcgQEAgYm9vbCBQcm94eU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbAog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wZXJmb3JtUHV0KGdsb2JhbE9iamVjdCwgdmFsdWUsIHNs
b3QudGhpc1ZhbHVlKCksIHByb3BlcnR5TmFtZSwgcGVyZm9ybURlZmF1bHRQdXQsIHNsb3QuaXNT
dHJpY3RNb2RlKCkpOwogfQogCi1ib29sIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCB1bnNpZ25lZCBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgcHV0VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCitib29sIFBy
b3h5T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3Vs
ZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUHJveHlPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKICAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgYXV0byBwZXJmb3JtRGVmYXVsdFB1dCA9IFsmXSAoKSB7
Ci0gICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICAgICAgYm9v
bCBpc1N0cmljdE1vZGUgPSBzaG91bGRUaHJvdzsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodGhpc1ZhbHVlLCBpc1N0cmljdE1vZGUpOyAvLyBXZSBtdXN0IHByZXNlcnZlIHRoZSAidGhp
cyIgdGFyZ2V0IG9mIHRoZSBwdXRCeUluZGV4LgotICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRo
b2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGdsb2JhbE9iamVjdCwgaWRlbnQuaW1wbCgpLCBwdXRW
YWx1ZSwgc2xvdCk7CisgICAgICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzT2JqZWN0LT50YXJn
ZXQoKTsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCwgc2hvdWxkVGhy
b3cpOyAvLyBXZSBtdXN0IHByZXNlcnZlIHRoZSAidGhpcyIgdGFyZ2V0IG9mIHRoZSBwdXRCeUlu
ZGV4LgorICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQs
IGdsb2JhbE9iamVjdCwgaWRlbnQuaW1wbCgpLCB2YWx1ZSwgc2xvdCk7CiAgICAgfTsKLSAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1QdXQoZ2xvYmFsT2JqZWN0LCBwdXRWYWx1
ZSwgdGhpc1ZhbHVlLCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0LCBzaG91bGRUaHJv
dykpOwotfQotCi1ib29sIFByb3h5T2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBib29sIHNob3VsZFRocm93KQotewotICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1
dEJ5SW5kZXhDb21tb24oZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1QdXQoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgdGhpc09iamVjdCwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVs
dFB1dCwgc2hvdWxkVGhyb3cpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocGVyZm9y
bVByb3h5Q2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuaAkocmV2aXNpb24gMjg5NDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVuc2lnbmVkIGZsYWdzID0gU3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIGlmIChpc0Nh
bGxhYmxlKQogICAgICAgICAgICAgZmxhZ3MgfD0gKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpOwotICAgICAgICBTdHJ1Y3R1cmUqIHJlc3VsdCA9
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
UHJveHlPYmplY3RUeXBlLCBmbGFncyksIGluZm8oKSwgTm9uQXJyYXkgfCBNYXlIYXZlSW5kZXhl
ZEFjY2Vzc29ycyk7CisgICAgICAgIFN0cnVjdHVyZSogcmVzdWx0ID0gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhQcm94eU9iamVjdFR5cGUs
IGZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+Y2FuQWNj
ZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIXJlc3VsdC0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw4ICs2OSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIHB1dChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBz
aG91bGRUaHJvdyk7Ci0gICAgYm9vbCBwdXRCeUluZGV4Q29tbW9uKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgdm9pZCByZXZva2UoVk0mKTsKICAgICBib29sIGlzUmV2b2tl
ZCgpIGNvbnN0OwogCkBAIC0xMDcsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZv
cm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkm
KTsKICAgICB2b2lkIHBlcmZvcm1HZXRPd25FbnVtZXJhYmxlUHJvcGVydHlOYW1lcyhKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jik7CiAgICAgYm9vbCBwZXJmb3JtU2V0UHJvdG90
eXBlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJ
ZkNhbnRTZXQpOworICAgIEpTVmFsdWUgcGVyZm9ybUdldFByb3RvdHlwZShKU0dsb2JhbE9iamVj
dCopOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3RhcmdldDsKICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gbV9oYW5kbGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw2ICs2MSwxNyBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJ
CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpLCBzbG90KTsKIH0K
IAorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1N0cmluZ093blByb3BlcnR5KFZNJiB2bSwg
U3RyaW5nT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAob2JqZWN0LT5pbnRlcm5hbFZhbHVl
KCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC02OCw3ICs3OSw3IEBAIGJvb2wgU3Ry
aW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0cKIAogICAgIFN0cmluZ09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKIAotICAgIGlmIChwcm9wZXJ0
eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQorICAgIGlmIChpc1N0cmluZ093blBy
b3BlcnR5KHZtLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gdHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICBpZiAoVU5MSUtFTFkoc2xvdC50aGlzVmFsdWUoKSAh
PSB0aGlzT2JqZWN0KSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09iamVj
dDo6cHV0KGNlbGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwpA
QCAtODgsMjUgKzk5LDEzIEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2UKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXRCeUluZGV4KGNl
bGwsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKIH0K
IAotc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJpbmdPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
LXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgewotICAgICAgICBpZiAob2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4
KGluZGV4LnZhbHVlKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cmluZ09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihvYmplY3QpOwogCi0gICAgaWYg
KGlzU3RyaW5nT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUpKSB7CisgICAgaWYgKGlzU3RyaW5nT3duUHJvcGVydHkodm0sIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgLy8gVGhlIGN1cnJlbnQgUHJvcGVydHlEZXNjcmlwdG9yIGlz
IGFsd2F5cwogICAgICAgICAvLyBQcm9wZXJ0eURlc2NyaXB0b3J7W1tWYWx1ZV1dOiB2YWx1ZSwg
W1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxl
XV06IGZhbHNlfS4KICAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgYW55IHByb3BlcnR5IGRl
c2NyaXB0b3IgY2Fubm90IGNoYW5nZSB0aGUgZXhpc3Rpbmcgb25lLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24g
Mjg5NDM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw4IEBAIGlubGluZSBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6Y3JlYXRlKFZNJiAKIAogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlJbnRlcmNl
cHRJbmRleGVkQWNjZXNzZXMoKSBjb25zdAogeworICAgIGlmICh0eXBlSW5mbygpLmludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnko
KSAmIE1heUhhdmVJbmRleGVkQWNjZXNzb3JzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjg5NDM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDggIEFsZXhleSBTaHZh
eWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIE9yZGluYXJ5U2V0IHNo
b3VsZCBpbnZva2UgY3VzdG9tIFtbU2V0XV0gbWV0aG9kcyBmb3IgaW5kZXhlZCBwdXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMs
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
UHJvcGVydGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy8qOiBVcGRhdGVkLgorCiAyMDIyLTAyLTA4ICBBbmRyZXMgR29uemFsZXogIDxh
bmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbml0aWFsaXplIHRoZSBBWElzb2xhdGVk
T2JqZWN0IEFjY2Vzc2liaWxpdHlUZXh0IHByb3BlcnR5IGxhemlseS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCShyZXZp
c2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1By
b3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg5NDM1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMw
MjksNyArMzAyOSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgU3RydWN0dXJlIElECiAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKLSAgICBteSAkaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSA9IEluc3Rh
bmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2UpID8gIkpTQzo6TWF5SGF2
ZUluZGV4ZWRBY2Nlc3NvcnMiIDogIkpTQzo6Tm9uQXJyYXkiOworICAgIG15ICRpbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5ID0gIkpTQzo6Tm9uQXJyYXkiOwogICAgIGlmIChJc0RPTUdsb2Jh
bE9iamVjdCgkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgJGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpO1xuIik7CiAgICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJOb2Rl
IikpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RFdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25B
cnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0MzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhl
ZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbi5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYs
IGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCShyZXZpc2lvbiAy
ODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29y
cyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVu
dGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpT
Qzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlND
OjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29u
c3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCShy
ZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2
ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlND
OjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4
ZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkocmV2aXNpb24g
Mjg5NDM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVk
QWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaAko
cmV2aXNpb24gMjg5NDM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRB
Y2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlm
aWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlI
YXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdl
dHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9u
QXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3Io
SlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJO
b0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCShy
ZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZl
SW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJy
YXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkocmV2aXNpb24gMjg5NDM1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3Nv
cnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lP
dmVycmlkZUJ1aWx0SW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNl
dHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRo
TGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nl
c3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92
ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCShyZXZpc2lvbiAyODk0MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZpc2lv
biAyODk0MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpT
Qzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgJKHJldmlzaW9uIDI4OTQzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCks
IEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZN
JiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451388</attachid>
            <date>2022-02-09 09:09:32 -0800</date>
            <delta_ts>2022-02-09 10:37:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236330-20220209170931.patch</filename>
            <type>text/plain</type>
            <size>54868</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODk0NzUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTA5ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFw
cGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcmRpbmFyeVNldCBzaG91bGQgaW52b2tlIGN1c3Rv
bSBbW1NldF1dIG1ldGhvZHMgZm9yIGluZGV4ZWQgcHV0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MzMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvbW9kdWxlLW5hbWVzcGFjZS1hY2Nl
c3Mtc2V0LWZhaWxzLmpzOiBBZGQgaW5kZXhlZCB0ZXN0IGNhc2UgZXhjZXB0IGZvciBSZWZsZWN0
LnNldCgpLgorICAgICAgICAqIHN0cmVzcy9wdXQtdG8tcHJvdG8tY2hhaW4tb3ZlcnJpZGVzLXB1
dC5qczogUmVmYWN0b3IgYSBiaXQgYW5kIGFkZCBpbmRleGVkIHRlc3QgY2FzZXMuCisgICAgICAg
ICogc3RyZXNzL3JlZmxlY3Qtc2V0LmpzOiBBZGp1c3RlZCB0ZXN0IG5vdyBwYXNzZXMgb24gVjgg
YXMgd2VsbC4KKyAgICAgICAgKiBzdHJlc3MvdHlwZWQtYXJyYXktY2Fub25pY2FsLW51bWVyaWMt
aW5kZXgtc3RyaW5nLXNldC1pbi1ib3VuZHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy90
eXBlZC1hcnJheS1jYW5vbmljYWwtbnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzOiBBZGQgaW5k
ZXhlZCB0ZXN0IGNhc2UgZXhjZXB0IGZvciBSZWZsZWN0LnNldCgpLgorCiAyMDIyLTAyLTA5ICBB
bmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNr
aXAgZmFpbGluZyBzaGFkb3cgcmVhbG1zIHRlc3RzIG9uIE1JUFMKSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL21vZHVsZS1uYW1lc3BhY2UtYWNjZXNzLXNldC1mYWlscy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9tb2R1bGUtbmFtZXNwYWNlLWFjY2Vzcy1zZXQtZmFpbHMuanMJKHJldmlz
aW9uIDI4OTQ1MCkKKysrIEpTVGVzdHMvc3RyZXNzL21vZHVsZS1uYW1lc3BhY2UtYWNjZXNzLXNl
dC1mYWlscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIGNvbnN0IGV4aXN0aW5n
S2V5cyA9IFsiY29jb2EiLCAidGVzdCIsIFN5bWJvbC50b1N0cmluZ1RhZ107Ci1jb25zdCBub25F
eGlzdGluZ0tleXMgPSBbImZvbyIsIFN5bWJvbCgiZm9vIildOworY29uc3Qgbm9uRXhpc3RpbmdL
ZXlzID0gWyJmb28iLCBTeW1ib2woImZvbyIpLCAiMCJdOwogY29uc3QgYWxsS2V5cyA9IFsuLi5l
eGlzdGluZ0tleXMsIC4uLm5vbkV4aXN0aW5nS2V5c107CiBjb25zdCB0ZXN0VmFsdWUgPSBPYmpl
Y3QuZnJlZXplKHt9KTsKIApAQCAtNjAsNiArNjAsOSBAQCBmdW5jdGlvbiB0ZXN0UmVmbGVjdFNl
dChucykgewogICAgIH0KIAogICAgIGZvciAoY29uc3Qgbm9uRXhpc3RpbmdLZXkgb2Ygbm9uRXhp
c3RpbmdLZXlzKSB7CisgICAgICAgIC8vIEZJWE1FOiBGaXggUmVmbGVjdC5zZXQgdG8gaW52b2tl
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoKSBmb3IgaW5kaWNlcyBhbmQgcmVtb3ZlIHRo
aXMgZXhjZXB0aW9uLgorICAgICAgICBpZiAobm9uRXhpc3RpbmdLZXkgPT09ICIwIikgY29udGlu
dWU7CisKICAgICAgICAgYXNzZXJ0KCFSZWZsZWN0LnNldChucywgbm9uRXhpc3RpbmdLZXksIHRl
c3RWYWx1ZSksIG5vbkV4aXN0aW5nS2V5KTsKICAgICAgICAgYXNzZXJ0KG5zW25vbkV4aXN0aW5n
S2V5XSA9PT0gdW5kZWZpbmVkLCBub25FeGlzdGluZ0tleSk7CiAKQEAgLTY5LDYgKzcyLDkgQEAg
ZnVuY3Rpb24gdGVzdFJlZmxlY3RTZXQobnMpIHsKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IGtl
eSBvZiBhbGxLZXlzKSB7CisgICAgICAgIC8vIEZJWE1FOiBGaXggUmVmbGVjdC5zZXQgdG8gaW52
b2tlIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoKSBmb3IgaW5kaWNlcyBhbmQgcmVtb3Zl
IHRoaXMgZXhjZXB0aW9uLgorICAgICAgICBpZiAoa2V5ID09PSAiMCIpIGNvbnRpbnVlOworCiAg
ICAgICAgIGNvbnN0IHRhcmdldCA9IE9iamVjdC5jcmVhdGUobnMpOwogICAgICAgICBjb25zdCBy
ZWNlaXZlciA9IHt9OwogCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJvdG8tY2hhaW4t
b3ZlcnJpZGVzLXB1dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9wdXQtdG8tcHJv
dG8tY2hhaW4tb3ZlcnJpZGVzLXB1dC5qcwkocmV2aXNpb24gMjg5NDUwKQorKysgSlNUZXN0cy9z
dHJlc3MvcHV0LXRvLXByb3RvLWNoYWluLW92ZXJyaWRlcy1wdXQuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTUgKzEsMjYgQEAKK2NvbnN0IGlzSlNDID0gdHlwZW9mICR2bSA9PT0gIm9iamVjdCI7
CiBjb25zdCBURVNUX1ZBTFVFID0gMTA2MjYzMDcxMzsgLy8gQXJyYXkncyAibGVuZ3RoIiBpcyBy
ZXF1aXJlZCB0byBiZSBpbnQzMgogY29uc3QgY2xlYW5VcE1hcCA9IG5ldyBXZWFrTWFwOwogY29u
c3QgaGFzT3duID0gKG9iaiwga2V5KSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwob2JqLCBrZXkpOwogCiB0ZXN0U2V0UmVzdWx0KCgpID0+IFsxLCAyXSwgImxlbmd0aCIs
IHRydWUpOwordGVzdFNldFJlc3VsdCgoKSA9PiBbMSwgMl0sICIwIiwgdHJ1ZSk7CisKIHRlc3RT
ZXRSZXN1bHQoCiAgICAgKCkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBBcnJheSwgImxl
bmd0aCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAogICAgICJsZW5ndGgiLAogICAgIGZhbHNlLAog
KTsKIAordGVzdFNldFJlc3VsdCgKKyAgICAoKSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWzEs
IDJdLCAiMSIsIHsgd3JpdGFibGU6IGZhbHNlIH0pLAorICAgICIxIiwKKyAgICBmYWxzZSwKKyk7
CisKIHRlc3RTZXRSZXN1bHQoKCkgPT4gbmV3IFN0cmluZywgImxlbmd0aCIsIGZhbHNlKTsKK3Rl
c3RTZXRSZXN1bHQoKCkgPT4gbmV3IFN0cmluZygiZm9vIiksICIwIiwgZmFsc2UpOworCiB0ZXN0
U2V0UmVzdWx0KCgpID0+IG5ldyBSZWdFeHAsICJsYXN0SW5kZXgiLCB0cnVlKTsKIHRlc3RTZXRS
ZXN1bHQoCiAgICAgKCkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KC8oPzopL2csICJsYXN0SW5k
ZXgiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KSwKQEAgLTE3LDE2ICsyOCwyMSBAQCB0ZXN0U2V0UmVz
dWx0KAogICAgIGZhbHNlLAogKTsKIAotZm9yIChjb25zdCBrZXkgb2YgWyJsaW5lIiwgImNvbHVt
biIsICJzb3VyY2VVUkwiLCAic3RhY2siXSkKLSAgICB0ZXN0U2V0UmVzdWx0KCgpID0+IG5ldyBF
cnJvciwga2V5LCB0cnVlKTsKK3Rlc3RTZXRSZXN1bHQoKCkgPT4gbmV3IEVycm9yLCAic3RhY2si
LCB0cnVlKTsKK2lmIChpc0pTQykgeworICAgIGZvciAoY29uc3Qga2V5IG9mIFsibGluZSIsICJj
b2x1bW4iLCAic291cmNlVVJMIl0pCisgICAgICAgIHRlc3RTZXRSZXN1bHQoKCkgPT4gbmV3IEVy
cm9yLCBrZXksIHRydWUpOworfQogCiBjb25zdCBtYXBwZWRBcmd1bWVudHMgPSAoKSA9PiAoZnVu
Y3Rpb24oYSwgYikgeyByZXR1cm4gYXJndW1lbnRzOyB9KSgxLCAyKTsKIHRlc3RTZXRSZXN1bHQo
bWFwcGVkQXJndW1lbnRzLCAiY2FsbGVlIiwgdHJ1ZSk7CiB0ZXN0U2V0UmVzdWx0KG1hcHBlZEFy
Z3VtZW50cywgImxlbmd0aCIsIHRydWUpOwordGVzdFNldFJlc3VsdChtYXBwZWRBcmd1bWVudHMs
ICIwIiwgdHJ1ZSk7CiB0ZXN0U2V0UmVzdWx0KG1hcHBlZEFyZ3VtZW50cywgU3ltYm9sLml0ZXJh
dG9yLCB0cnVlKTsKIAotY29uc3QgdW5tYXBwZWRBcmd1bWVudHMgPSBmdW5jdGlvbigpIHsgInVz
ZSBzdHJpY3QiOyByZXR1cm4gYXJndW1lbnRzOyB9OworY29uc3QgdW5tYXBwZWRBcmd1bWVudHMg
PSAoKSA9PiAoZnVuY3Rpb24oYSwgYiwgYykgeyAidXNlIHN0cmljdCI7IHJldHVybiBhcmd1bWVu
dHM7IH0pKDEsIDIsIDMpOwogdGVzdFNldFJlc3VsdCh1bm1hcHBlZEFyZ3VtZW50cywgImxlbmd0
aCIsIHRydWUpOwordGVzdFNldFJlc3VsdCh1bm1hcHBlZEFyZ3VtZW50cywgIjAiLCB0cnVlKTsK
IHRlc3RTZXRSZXN1bHQodW5tYXBwZWRBcmd1bWVudHMsIFN5bWJvbC5pdGVyYXRvciwgdHJ1ZSk7
CiAKIHZhciBmb287CkBAIC0zNCw4ICs1MCwxMCBAQCBmdW5jdGlvbiBiYXIoKSB7fQogZm9yIChj
b25zdCBrZXkgb2YgWyJmb28iLCAiYmFyIiwgInBhcnNlSW50Il0pCiAgICAgdGVzdFNldFJlc3Vs
dCgoKSA9PiBnbG9iYWxUaGlzLCBrZXksIHRydWUpOwogCi1mb3IgKGNvbnN0IGtleSBvZiBbIklu
ZmluaXR5IiwgIk5hTiIsICJ1bmRlZmluZWQiXSkKLSAgICB0ZXN0U2V0UmVzdWx0KCgpID0+ICR2
bS5jcmVhdGVHbG9iYWxPYmplY3QoKS5nbG9iYWxUaGlzLCBrZXksIGZhbHNlKTsKK2lmIChpc0pT
QykgeworICAgIGZvciAoY29uc3Qga2V5IG9mIFsiSW5maW5pdHkiLCAiTmFOIiwgInVuZGVmaW5l
ZCJdKQorICAgICAgICB0ZXN0U2V0UmVzdWx0KCgpID0+ICR2bS5jcmVhdGVHbG9iYWxPYmplY3Qo
KS5nbG9iYWxUaGlzLCBrZXksIGZhbHNlKTsKK30KIAogZm9yIChjb25zdCBrZXkgb2YgWyJuYW1l
IiwgImxlbmd0aCJdKSB7CiAgICAgdGVzdFNldFJlc3VsdCgoKSA9PiBmdW5jdGlvbigpIHt9LmJp
bmQoKSwga2V5LCBmYWxzZSk7CkBAIC02NSw0NCArODMsNTEgQEAgdGVzdFNldFJlc3VsdCgKIGZ1
bmN0aW9uIHRlc3RTZXRSZXN1bHQoZ2V0VGFyZ2V0LCBrZXksIGV4cGVjdGVkUmVzdWx0KSB7CiAg
ICAgZm9yIChjb25zdCBwcmltaXRpdmUgb2YgW3RydWUsIDEsICJmb28iLCBTeW1ib2woKSwgMG5d
KSB7CiAgICAgICAgIGNvbnN0IHByaW1pdGl2ZVByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZihwcmltaXRpdmUpOwotICAgICAgICBjb25zdCBnZXRUYXJnZXRXaXRoRHVtbXlTZXR0ZXJP
blByb3RvdHlwZSA9IHdpdGhTZXR0ZXJPblByb3RvdHlwZSgoKSA9PiB7CisgICAgICAgIGNvbnN0
IGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90eXBlID0gd2l0aFBvaXNvbmVkU2V0
dGVyT25Qcm90b3R5cGUoKCkgPT4gewogICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFy
Z2V0KCk7Ci0gICAgICAgICAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgIT09
IHByaW1pdGl2ZVByb3RvdHlwZSkKLSAgICAgICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBl
T2YocHJpbWl0aXZlUHJvdG90eXBlLCB0YXJnZXQpOworICAgICAgICAgICAgUmVmbGVjdC5zZXRQ
cm90b3R5cGVPZih0YXJnZXQsIE9iamVjdC5wcm90b3R5cGUpOyAvLyBhdm9pZCBjeWNsaWMgW1tQ
cm90b3R5cGVdXSBjaGFpbiBpZiB0YXJnZXQgaXMgU3RyaW5nIG9iamVjdCBhbmQgcmVjZWl2ZXIg
aXMgYSBzdHJpbmcKKyAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcmltaXRpdmVQ
cm90b3R5cGUsIHRhcmdldCk7CiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwotICAgICAgICB9
LCBrZXksICgpID0+IHt9KTsKKyAgICAgICAgfSwga2V5KTsKIAotICAgICAgICB0ZXN0U2V0UmVz
dWx0SW50ZXJuYWwoZ2V0VGFyZ2V0V2l0aER1bW15U2V0dGVyT25Qcm90b3R5cGUsICgpID0+IHBy
aW1pdGl2ZSwga2V5LCBmYWxzZSk7CisgICAgICAgIHRlc3RTZXRSZXN1bHRJbnRlcm5hbChnZXRU
YXJnZXRXaXRoUG9pc29uZWRTZXR0ZXJPblByb3RvdHlwZSwgKCkgPT4gcHJpbWl0aXZlLCBrZXks
IGZhbHNlKTsKICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByaW1pdGl2ZVByb3RvdHlw
ZSwgT2JqZWN0LnByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgY29uc3QgZ2V0VGFyZ2V0V2l0aFBv
aXNvbmVkU2V0dGVyT25Qcm90b3R5cGUgPSB3aXRoU2V0dGVyT25Qcm90b3R5cGUoZ2V0VGFyZ2V0
LCBrZXksICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKGAke1N0cmluZyhrZXkpfSBzZXR0ZXIgc2hv
dWxkIGJlIHVucmVhY2hhYmxlIWApOyB9KTsKKyAgICBjb25zdCBnZXRUYXJnZXRXaXRoUG9pc29u
ZWRTZXR0ZXJPblByb3RvdHlwZSA9IHdpdGhQb2lzb25lZFNldHRlck9uUHJvdG90eXBlKGdldFRh
cmdldCwga2V5KTsKICAgICB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwoZ2V0VGFyZ2V0V2l0aFBvaXNv
bmVkU2V0dGVyT25Qcm90b3R5cGUsIHQgPT4gT2JqZWN0LmNyZWF0ZSh0KSwga2V5LCBleHBlY3Rl
ZFJlc3VsdCk7CiAgICAgdGVzdFNldFJlc3VsdEludGVybmFsKGdldFRhcmdldFdpdGhQb2lzb25l
ZFNldHRlck9uUHJvdG90eXBlLCB0ID0+IE9iamVjdC5jcmVhdGUoT2JqZWN0LmNyZWF0ZSh0KSks
IGtleSwgZXhwZWN0ZWRSZXN1bHQpOwogICAgIHRlc3RTZXRSZXN1bHRJbnRlcm5hbChnZXRUYXJn
ZXRXaXRoUG9pc29uZWRTZXR0ZXJPblByb3RvdHlwZSwgdCA9PiBuZXcgUHJveHkodCwge30pLCBr
ZXksIGV4cGVjdGVkUmVzdWx0KTsKICAgICB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwoZ2V0VGFyZ2V0
V2l0aFBvaXNvbmVkU2V0dGVyT25Qcm90b3R5cGUsIHQgPT4gbmV3IFByb3h5KHQsIFJlZmxlY3Qp
LCBrZXksIGV4cGVjdGVkUmVzdWx0KTsKLSAgICB0ZXN0U2V0UmVzdWx0SW50ZXJuYWwoZ2V0VGFy
Z2V0V2l0aFBvaXNvbmVkU2V0dGVyT25Qcm90b3R5cGUsIHQgPT4gJHZtLmNyZWF0ZVByb3h5KE9i
amVjdC5jcmVhdGUodCkpLCBrZXksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgIGlmIChpc0pTQykK
KyAgICAgICAgdGVzdFNldFJlc3VsdEludGVybmFsKGdldFRhcmdldFdpdGhQb2lzb25lZFNldHRl
ck9uUHJvdG90eXBlLCB0ID0+ICR2bS5jcmVhdGVQcm94eShPYmplY3QuY3JlYXRlKHQpKSwga2V5
LCBleHBlY3RlZFJlc3VsdCk7CiB9CiAKLWZ1bmN0aW9uIHdpdGhTZXR0ZXJPblByb3RvdHlwZShn
ZXRUYXJnZXQsIGtleSwgc2V0KSB7CitmdW5jdGlvbiB3aXRoUG9pc29uZWRTZXR0ZXJPblByb3Rv
dHlwZShnZXRUYXJnZXQsIGtleSkgewogICAgICJ1c2Ugc3RyaWN0IjsKICAgICByZXR1cm4gKCkg
PT4gewogICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXQoKTsKICAgICAgICAgY29uc3Qg
dGFyZ2V0UHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCk7Ci0gICAgICAg
IGNvbnN0IG5ld0Rlc2NyaXB0b3IgPSB7IHNldCwgY29uZmlndXJhYmxlOiB0cnVlIH07CisgICAg
ICAgIGNvbnN0IG5ld0Rlc2NyaXB0b3IgPSB7IHNldCgpIHsgdGhyb3cgbmV3IEVycm9yKGAke1N0
cmluZyhrZXkpfSBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlIWApOyB9LCBjb25maWd1cmFi
bGU6IHRydWUgfTsKIAotICAgICAgICBpZiAoa2V5ID09PSAibGVuZ3RoIiAmJiAhT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkuY29uZmlndXJhYmxlKSB7CisgICAg
ICAgIGlmICghT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkuY29u
ZmlndXJhYmxlKSB7CiAgICAgICAgICAgICBjb25zdCBuZXdQcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKG51bGwsIHsgW2tleV06IG5ld0Rlc2NyaXB0b3IgfSk7Ci0gICAgICAgICAgICBPYmplY3Qu
c2V0UHJvdG90eXBlT2YodGFyZ2V0LCBuZXdQcm90b3R5cGUpOwotICAgICAgICAgICAgY2xlYW5V
cE1hcC5zZXQodGFyZ2V0LCAoKSA9PiB7IE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHRh
cmdldFByb3RvdHlwZSk7IH0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY29uc3Qg
cHJldkRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldFBy
b3RvdHlwZSwga2V5KTsKLSAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXRQ
cm90b3R5cGUsIGtleSwgbmV3RGVzY3JpcHRvcik7Ci0gICAgICAgICAgICBjbGVhblVwTWFwLnNl
dCh0YXJnZXQsIHByZXZEZXNjcmlwdG9yCi0gICAgICAgICAgICAgICAgPyAoKSA9PiB7IE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXRQcm90b3R5cGUsIGtleSwgcHJldkRlc2NyaXB0b3IpOyB9
Ci0gICAgICAgICAgICAgICAgOiAoKSA9PiB7IGRlbGV0ZSB0YXJnZXRQcm90b3R5cGVba2V5XTsg
fSk7CisgICAgICAgICAgICBpZiAoUmVmbGVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIG5ld1By
b3RvdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBjbGVhblVwTWFwLnNldCh0YXJnZXQsICgpID0+
IHsgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgdGFyZ2V0UHJvdG90eXBlKTsgfSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
CisgICAgICAgIGNvbnN0IHByZXZEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih0YXJnZXRQcm90b3R5cGUsIGtleSk7CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0YXJnZXRQcm90b3R5cGUsIGtleSwgbmV3RGVzY3JpcHRvcik7CisgICAgICAgIGNsZWFu
VXBNYXAuc2V0KHRhcmdldCwgKCkgPT4geworICAgICAgICAgICAgaWYgKHByZXZEZXNjcmlwdG9y
KQorICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXRQcm90b3R5cGUs
IGtleSwgcHJldkRlc2NyaXB0b3IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGRlbGV0ZSB0YXJnZXRQcm90b3R5cGVba2V5XTsKKyAgICAgICAgfSk7CisKICAgICAgICAgcmV0
dXJuIHRhcmdldDsKICAgICB9OwogfQpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVmbGVjdC1zZXQuanMJKHJldmlzaW9u
IDI4OTQ1MCkKKysrIEpTVGVzdHMvc3RyZXNzL3JlZmxlY3Qtc2V0LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC02ODYsMTEgKzY4Niw5IEBAIHZhciBzeW1ib2wgPSBTeW1ib2woKTsKIAogICAgICAgICB2
YXIgb2JqZWN0ID0gbmV3IFR5cGVkQXJyYXkoNjQpOwogICAgICAgICB2YXIgcmVjZWl2ZXIgPSB7
fTsKLSAgICAgICAgLy8gVGhlIHJlY2VpdmVyIGlzIGlnbm9yZWQgd2hlbiB0aGUgcHJvcGVydHkg
bmFtZSBpcyBhbiBpbmRleGVkIG9uZS4KLSAgICAgICAgLy8gc2hvdWxkQmUoUmVmbGVjdC5zZXQo
b2JqZWN0LCAwLCA0MiwgcmVjZWl2ZXIpLCB0cnVlKTsKICAgICAgICAgc2hvdWxkQmUoUmVmbGVj
dC5zZXQob2JqZWN0LCAwLCA0MiwgcmVjZWl2ZXIpLCB0cnVlKTsKLSAgICAgICAgc2hvdWxkQmUo
UmVmbGVjdC5nZXQob2JqZWN0LCAwKSwgNDIpOwotICAgICAgICBzaG91bGRCZShyZWNlaXZlci5o
YXNPd25Qcm9wZXJ0eSgwKSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShSZWZsZWN0LmdldChv
YmplY3QsIDApLCAwKTsKKyAgICAgICAgc2hvdWxkQmUocmVjZWl2ZXIuaGFzT3duUHJvcGVydHko
MCksIHRydWUpOwogCiAgICAgICAgIHZhciBvYmplY3QgPSBuZXcgVHlwZWRBcnJheSgxKTsKICAg
ICAgICAgdHJhbnNmZXJBcnJheUJ1ZmZlcihvYmplY3QuYnVmZmVyKTsKSW5kZXg6IEpTVGVzdHMv
c3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQtaW4t
Ym91bmRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9u
aWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQtaW4tYm91bmRzLmpzCShub25leGlzdGVudCkK
KysrIEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0
cmluZy1zZXQtaW4tYm91bmRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKyd1
c2Ugc3RyaWN0JzsKK2NvbnN0IFR5cGVkQXJyYXlzID0gW1VpbnQ4Q2xhbXBlZEFycmF5LCBVaW50
OEFycmF5LCBVaW50MTZBcnJheSwgVWludDMyQXJyYXksIEludDhBcnJheSwgSW50MTZBcnJheSwg
SW50MzJBcnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0QXJyYXldOworCitmdW5jdGlvbiBhc3Nl
cnQoeCkgeworICAgIGlmICgheCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgYXNzZXJ0
aW9uIWApOworfQorCitmb3IgKGNvbnN0IFR5cGVkQXJyYXkgb2YgVHlwZWRBcnJheXMpIHsKKyAg
ICBjb25zdCB0ZXN0ID0gKCkgPT4geworICAgICAgICB7CisgICAgICAgICAgICBjb25zdCB0QSA9
IG5ldyBUeXBlZEFycmF5KFswLCAxXSk7CisgICAgICAgICAgICBjb25zdCBoZWlyID0gT2JqZWN0
LmNyZWF0ZSh0QSk7CisgICAgICAgICAgICBoZWlyWzFdID0gNDI7CisKKyAgICAgICAgICAgIGFz
c2VydCh0QVsxXSwgMSk7CisgICAgICAgICAgICBhc3NlcnQoaGVpci5oYXNPd25Qcm9wZXJ0eSgx
KSk7CisgICAgICAgICAgICBhc3NlcnQoaGVpclsxXSA9PT0gNDIpOworICAgICAgICB9CisKKyAg
ICAgICAgeworICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0ge307CisgICAgICAgICAgICBjb25z
dCByZWNlaXZlciA9IG5ldyBUeXBlZEFycmF5KFswLCAxXSkKKworICAgICAgICAgICAgYXNzZXJ0
KFJlZmxlY3Quc2V0KHRhcmdldCwgMSwgNDIsIHJlY2VpdmVyKSk7CisgICAgICAgICAgICBhc3Nl
cnQoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eSgxKSk7CisgICAgICAgICAgICBhc3NlcnQocmVjZWl2
ZXJbMV0gPT09IDQyKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IHRBID0gbmV3IFR5cGVkQXJyYXkoWzAsIDFdKTsKKyAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9
IE9iamVjdC5jcmVhdGUodEEpOworICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXIgPSB7fTsKKwor
ICAgICAgICAgICAgYXNzZXJ0KFJlZmxlY3Quc2V0KHRhcmdldCwgMSwgNDIsIHJlY2VpdmVyKSk7
CisgICAgICAgICAgICBhc3NlcnQodEFbMV0gPT09IDEpOworICAgICAgICAgICAgYXNzZXJ0KCF0
YXJnZXQuaGFzT3duUHJvcGVydHkoMSkpOworICAgICAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhh
c093blByb3BlcnR5KDEpKTsKKyAgICAgICAgICAgIGFzc2VydChyZWNlaXZlclsxXSA9PT0gNDIp
OworICAgICAgICB9CisgICAgfTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUeXBlZEFy
cmF5LnByb3RvdHlwZSwgMSwgeworICAgICAgICBzZXQoKSB7IHRocm93IG5ldyBFcnJvcihgJHtU
eXBlZEFycmF5Lm5hbWV9LnByb3RvdHlwZVsxXSBzZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxl
IWApOyB9LAorICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgfSk7CisgICAgdGVzdCgp
OworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFR5cGVkQXJyYXkucHJvdG90eXBlLCAxLCB7
IHdyaXRhYmxlOiBmYWxzZSB9KTsKKyAgICB0ZXN0KCk7Cit9CkluZGV4OiBKU1Rlc3RzL3N0cmVz
cy90eXBlZC1hcnJheS1jYW5vbmljYWwtbnVtZXJpYy1pbmRleC1zdHJpbmctc2V0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3R5cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWlu
ZGV4LXN0cmluZy1zZXQuanMJKHJldmlzaW9uIDI4OTQ1MCkKKysrIEpTVGVzdHMvc3RyZXNzL3R5
cGVkLWFycmF5LWNhbm9uaWNhbC1udW1lcmljLWluZGV4LXN0cmluZy1zZXQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAndXNlIHN0cmljdCc7CiBjb25zdCBUeXBlZEFycmF5cyA9
IFtVaW50OENsYW1wZWRBcnJheSwgVWludDhBcnJheSwgVWludDE2QXJyYXksIFVpbnQzMkFycmF5
LCBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIEZsb2F0MzJBcnJheSwgRmxvYXQ2
NEFycmF5XTsKLWNvbnN0IGNhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZ3MgPSBbJy0wJywgJy0x
JywgJy0zLjE0JywgJ0luZmluaXR5JywgJy1JbmZpbml0eScsICdOYU4nLCAnMC41JywgJzQyOTQ5
NjcyOTUnLCAnNDI5NDk2NzI5NiddOworY29uc3QgY2Fub25pY2FsTnVtZXJpY0luZGV4U3RyaW5n
cyA9IFsnLTAnLCAnMCcsICcxJywgJy0xJywgJy0zLjE0JywgJ0luZmluaXR5JywgJy1JbmZpbml0
eScsICdOYU4nLCAnMC41JywgJzQyOTQ5NjcyOTUnLCAnNDI5NDk2NzI5NiddOwogCiBmdW5jdGlv
biBhc3NlcnQoeCwga2V5KSB7CiAgICAgaWYgKCF4KQpAQCAtMzUsNiArMzUsOSBAQCBmb3IgKGNv
bnN0IFR5cGVkQXJyYXkgb2YgVHlwZWRBcnJheXMpIHsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBGaXggUmVmbGVjdC5zZXQgdG8gaW52
b2tlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpwdXQoKSBmb3IgaW5kaWNlcyBh
bmQgcmVtb3ZlIHRoaXMgZXhjZXB0aW9uLgorICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICIw
IiB8fCBrZXkgPT09ICIxIikgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgY29uc3QgdEEgPSBu
ZXcgVHlwZWRBcnJheTsKICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBPYmplY3QuY3Jl
YXRlKHRBKTsKICAgICAgICAgICAgICAgICBjb25zdCByZWNlaXZlciA9IHt9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjItMDIt
MDkgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IE9yZGluYXJ5U2V0IHNob3VsZCBpbnZva2UgY3VzdG9tIFtbU2V0XV0gbWV0aG9kcyBmb3IgaW5k
ZXhlZCBwdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzYzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGJyaW5ncyBzaW1pbGFyIGNvbXBhdGliaWxpdHkgZml4ZXMgZm9yIGluZGV4
ZWQgcHV0cyBhcyBpbiBidWcgMjE3OTE2LAorICAgICAgICBhbGlnbmluZyBKU0Mgd2l0aCBWOCBh
bmQgU3BpZGVyTW9ua2V5OgorICAgICAgICAgIC0gY2FzZXMgbGlrZSBgT2JqZWN0LmNyZWF0ZShu
ZXcgU3RyaW5nKCJmb28iKSlbMF0gPSAiZiJgIG5vdyBmYWlscyBpbnN0ZWFkIG9mCisgICAgICAg
ICAgICBkZWZpbmluZyBhIHByb3BlcnR5LCBhcyBwZXIgc3BlYyBbMV07CisgICAgICAgICAgLSBw
cm90b3R5cGUgY2hhaW4gdHJhdmVyc2FsIGlzIG5vdyB0ZXJtaW5hdGVkIG9uY2UgYW4gaW5kZXgg
b24gYSBmYXN0IGJ1dHRlcmZseQorICAgICAgICAgICAgd2FzIGZvdW5kLCB3aGljaCBpcyBhbHdh
eXMgW1tXcml0YWJsZV1dLCB0byBhdm9pZCBpbnZva2luZyBzZXR0ZXJzIC8gcHV0KCkKKyAgICAg
ICAgICAgIG92ZXJyaWRlcyBoaWdoZXIgaW4gdGhlIGNoYWluLgorCisgICAgICAgIEJlZm9yZSB0
aGlzIGNoYW5nZSwgYSBwdXQoKSBvdmVycmlkZSBjb3VsZCBlaXRoZXIgYmUgaW52b2tlZCB3aXRo
IGFuIGluZGV4LCBvciBmb3IKKyAgICAgICAgYWx0ZXJlZCByZWNlaXZlci4gTm93LCBpdCBjYW4g
YmUgaW52b2tlZCB3aXRoIGJvdGggYXQgb25jZSwgYW5kIG1ldGhvZHMgaGF2ZSB0bworICAgICAg
ICBoYW5kbGUgdGhhdCBhcHByb3ByaWF0ZWx5LiBUaGlzIGRlc2lnbiBkZWNpc2lvbiB3YXMgbWFk
ZSB0byBhdm9pZCBhZGRpbmcgYSBgcmVjZWl2ZXJgCisgICAgICAgIHBhcmFtZXRlciB0byBwdXRC
eUluZGV4KCkgb3ZlcnJpZGVzLgorCisgICAgICAgIFNpbmNlIFJlZmxlY3Quc2V0KCkgc3RpbGwg
aW52b2tlcyBvcmRpbmFyeVNldFNsb3coKSBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLCB3aGljaAor
ICAgICAgICBkb2Vzbid0IGludm9rZSBwdXQoKSBtZXRob2RzIGV4cGVjdCBmb3IgUHJveHlPYmpl
Y3QsIHdlIGFyZSBub3Qgc3BlYy1wZXJmZWN0IGp1c3QgeWV0LgorCisgICAgICAgIFNpbmNlIHB1
dEJ5SW5kZXgoKSBhbmQgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgpIG1pcnJvciBlYWNoIG90
aGVyIChkb2Vzbid0IGZlZWwKKyAgICAgICAgcmlnaHQgdG8gYXNzZXJ0IHRoYXQgdGhvdWdoKSwg
dGhlIGxhdHRlciBpcyBjaGVja2VkIGluIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCisg
ICAgICAgIHRvIGF2b2lkIGludHJvZHVjaW5nIGEgdHlwZSBpbmZvIGZsYWcgZm9yIHB1dEJ5SW5k
ZXgoKS4KKworICAgICAgICBBbHNvLCB0aGlzIGNoYW5nZSBhYm9saXNoZXMgdXNpbmcgTWF5SGF2
ZUluZGV4ZWRBY2Nlc3NvcnMgZm9yIG9iamVjdHMgd2l0aG91dCBhY3R1YWwKKyAgICAgICAgaW5k
ZXhlZCBhY2Nlc3NvcnMgb24gc2xvdyBidXR0ZXJmbGllcywgd2hpY2ggaXMgbmljZS4KKworICAg
ICAgICBPbiB0eXBlZCBhcnJheXM6IGN1cnJlbnRseSB0aGVyZSBpcyBhIHNwZWMgZ2FwIGZvciBb
W1NldF1dIHdpdGggYWx0ZXJlZCByZWNlaXZlciBbMl0sCisgICAgICAgIHdoaWNoIEkgaW50ZW50
IHRvIGZpeCwgYnV0IGZvciBub3cgd2UgYWxpZ24gd2l0aCBWODogT09CIHB1dHMgYXJlICJ0ZXJt
aW5hdGVkIgorICAgICAgICAobm8gZnVydGhlciBwcm90b3R5cGUgY2hhaW4gbG9va3VwKSwgd2hp
bGUgaW4tYm91bmQgcHV0cyBwZXJmb3JtIE9yZGluYXJ5U2V0IGZvcgorICAgICAgICB3ZWItY29t
cGF0aWJpbGl0eS4KKworICAgICAgICBBcyBmb3IgcGVyZm9ybWFuY2UsIHRoaXMgcGF0Y2ggc2hv
dWxkIGJlIG5ldXRyYWw6IHB1YmxpY0xlbmd0aCgpIGNoZWNrIGlzIGZhc3QgYW5kCisgICAgICAg
IHRoZXJlIG5vIGtub3duIHVzYWdlcyBvZiBpbmhlcml0aW5nIG9iamVjdHMgd2l0aCBjdXN0b20g
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgpLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly90YzM5
LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXNldHdpdGhvd25kZXNjcmlwdG9yIChzdGVwIDIuYSkK
KyAgICAgICAgWzJdOiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hMjYyL3B1bGwvMTU1Ngor
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphdHRl
bXB0VG9JbnRlcmNlcHRQdXRCeUluZGV4T25Ib2xlRm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5
SW5kZXgpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbik6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6aXNTdHJpbmdPd25Qcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzIGNvbnN0KToKKwogMjAyMi0wMi0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFlhcnJKSVQgaW5saW5pbmcgc2hvdWxkIGJlIGRpc2Fi
bGVkIHdoZW4gd2UgaGF2ZSBEb3RTdGFyRW5jbG9zdXJlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaAkocmV2aXNpb24gMjg5NDUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwMiw2ICs0MDIsMTIgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
cAogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKHNsb3QudGhpc1ZhbHVlKCkgIT0gdGhpc09iamVjdCkpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzT2JqZWN0LT5pbkJvdW5kcyhpbmRleC52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PiwgInB1dEJ5SW5kZXggbXVzdCBub3QgYmUgb3ZlcnJpZGRlbiIpOwogICAgICAg
ICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyODk0NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4OTYsNiArMjg5NiwxMyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQ
dXRCeUluCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
Zm9yIChKU09iamVjdCogY3VycmVudCA9IHRoaXM7IDspIHsKKyAgICAgICAgaWYgKGN1cnJlbnQt
PnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CisgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIHNob3Vs
ZFRocm93KTsKKyAgICAgICAgICAgIHB1dFJlc3VsdCA9IGN1cnJlbnQtPm1ldGhvZFRhYmxlKHZt
KS0+cHV0KGN1cnJlbnQsIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgaSksIHZh
bHVlLCBzbG90KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAg
ICAgLy8gVGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHByb3RvdHlw
ZXMgYXMgSlNPYmplY3Q6OnB1dCgpLiBJdCBvbmx5CiAgICAgICAgIC8vIGFsbG93cyBhIHByb3Rv
dHlwZSB0byBpbnRlcmNlcHQgYSBwdXQgaWYgKGEpIHRoZSBwcm90b3R5cGUgZGVjbGFyZXMgdGhl
IHByb3BlcnR5CiAgICAgICAgIC8vIHdlJ3JlIGFmdGVyIHJhdGhlciB0aGFuIGludGVyY2VwdGlu
ZyBpdCB2aWEgYW4gb3ZlcnJpZGUgb2YgSlNPYmplY3Q6OnB1dCgpLCBhbmQKQEAgLTI5MDksMTQg
KzI5MTYsOCBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiAgICAg
ICAgICAgICAgICAgcHV0UmVzdWx0ID0gaXRlci0+dmFsdWUucHV0KGdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBzdG9yYWdlLT5tX3NwYXJzZU1hcC5nZXQoKSwgdmFsdWUsIHNob3VsZFRocm93KTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChjdXJyZW50LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKSB7Ci0gICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBhdXRvKiBwcm94eSA9IGpzQ2Fz
dDxQcm94eU9iamVjdCo+KGN1cnJlbnQpOwotICAgICAgICAgICAgcHV0UmVzdWx0ID0gcHJveHkt
PnB1dEJ5SW5kZXhDb21tb24oZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGksIHZhbHVlLCBzaG91
bGRUaHJvdyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICB9
IGVsc2UgaWYgKGkgPCBjdXJyZW50LT5nZXRBcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGN1
cnJlbnQtPmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjg5NDUwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NzQsMjUgKzQ3NCwxNyBAQCBib29sIFByb3h5T2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0ds
CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBlcmZvcm1QdXQoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
c2xvdC50aGlzVmFsdWUoKSwgcHJvcGVydHlOYW1lLCBwZXJmb3JtRGVmYXVsdFB1dCwgc2xvdC5p
c1N0cmljdE1vZGUoKSk7CiB9CiAKLWJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKK2Jvb2wg
UHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBQcm94eU9iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGNlbGwpOwogICAgIElkZW50aWZpZXIgaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0UHV0ID0gWyZdICgp
IHsKLSAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IHNob3VsZFRocm93OwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzVmFsdWUsIGlzU3RyaWN0TW9kZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0
aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5SW5kZXguCi0gICAgICAgIHJldHVybiB0YXJnZXQtPm1l
dGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwgZ2xvYmFsT2JqZWN0LCBpZGVudC5pbXBsKCksIHB1
dFZhbHVlLCBzbG90KTsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXNPYmplY3QtPnRh
cmdldCgpOworICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRU
aHJvdyk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5
SW5kZXguCisgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdl
dCwgZ2xvYmFsT2JqZWN0LCBpZGVudC5pbXBsKCksIHZhbHVlLCBzbG90KTsKICAgICB9OwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybVB1dChnbG9iYWxPYmplY3QsIHB1dFZh
bHVlLCB0aGlzVmFsdWUsIGlkZW50LmltcGwoKSwgcGVyZm9ybURlZmF1bHRQdXQsIHNob3VsZFRo
cm93KSk7Ci19Ci0KLWJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17Ci0gICAgUHJveHlPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+
cHV0QnlJbmRleENvbW1vbihnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+cGVyZm9ybVB1dChn
bG9iYWxPYmplY3QsIHZhbHVlLCB0aGlzT2JqZWN0LCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZh
dWx0UHV0LCBzaG91bGRUaHJvdyk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJm
b3JtUHJveHlDYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSBTdHJ1Y3R1cmVGbGFnczsKICAgICAgICAgaWYgKGlz
Q2FsbGFibGUpCiAgICAgICAgICAgICBmbGFncyB8PSAoSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSk7Ci0gICAgICAgIFN0cnVjdHVyZSogcmVzdWx0
ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhQcm94eU9iamVjdFR5cGUsIGZsYWdzKSwgaW5mbygpLCBOb25BcnJheSB8IE1heUhhdmVJbmRl
eGVkQWNjZXNzb3JzKTsKKyAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlw
ZSwgZmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0LT5jYW5B
Y2Nlc3NQcm9wZXJ0aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVCghcmVzdWx0LT5jYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0pKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY5LDggKzY5LDYgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGJvb2wgcHV0KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KTsKLSAgICBib29sIHB1dEJ5SW5kZXhDb21tb24oSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHB1dFZh
bHVlLCBib29sIHNob3VsZFRocm93KTsKLSAgICBKU1ZhbHVlIHBlcmZvcm1HZXRQcm90b3R5cGUo
SlNHbG9iYWxPYmplY3QqKTsKICAgICB2b2lkIHJldm9rZShWTSYpOwogICAgIGJvb2wgaXNSZXZv
a2VkKCkgY29uc3Q7CiAKQEAgLTEwNyw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVy
Zm9ybUdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJh
eSYpOwogICAgIHZvaWQgcGVyZm9ybUdldE93bkVudW1lcmFibGVQcm9wZXJ0eU5hbWVzKEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmKTsKICAgICBib29sIHBlcmZvcm1TZXRQcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJv
d0lmQ2FudFNldCk7CisgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0Kik7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fdGFyZ2V0OwogICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiBtX2hhbmRsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDYgKzYxLDE3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RC
eUkKICAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSksIHNsb3QpOwog
fQogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU3RyaW5nT3duUHJvcGVydHkoVk0mIHZt
LCBTdHJpbmdPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAg
ICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChvYmplY3QtPmludGVybmFsVmFs
dWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFN0cmluZ09iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTY4LDcgKzc5LDcgQEAgYm9vbCBT
dHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEpTRwogCiAgICAgU3RyaW5nT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCi0gICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCisgICAgaWYgKGlzU3RyaW5nT3du
UHJvcGVydHkodm0sIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIGlmIChVTkxJS0VMWShzbG90LnRoaXNWYWx1ZSgp
ICE9IHRoaXNPYmplY3QpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2Jq
ZWN0OjpwdXQoY2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7
CkBAIC04OCwyNSArOTksMTMgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dEJ5SW5kZXgo
Y2VsbCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdykpOwog
fQogCi1zdGF0aWMgYm9vbCBpc1N0cmluZ093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cmluZ09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eU5hbWUpKSB7Ci0gICAgICAgIGlmIChvYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5k
ZXgoaW5kZXgudmFsdWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBib29sIFN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBi
b29sIHRocm93RXhjZXB0aW9uKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RyaW5nT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KG9iamVjdCk7CiAKLSAgICBp
ZiAoaXNTdHJpbmdPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSkpIHsKKyAgICBpZiAoaXNTdHJpbmdPd25Qcm9wZXJ0eSh2bSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lKSkgewogICAgICAgICAvLyBUaGUgY3VycmVudCBQcm9wZXJ0eURlc2NyaXB0b3Ig
aXMgYWx3YXlzCiAgICAgICAgIC8vIFByb3BlcnR5RGVzY3JpcHRvcntbW1ZhbHVlXV06IHZhbHVl
LCBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFi
bGVdXTogZmFsc2V9LgogICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgcHJvcGVydHkg
ZGVzY3JpcHRvciBjYW5ub3QgY2hhbmdlIHRoZSBleGlzdGluZyBvbmUuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lv
biAyODk0NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDggQEAgaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlOjpjcmVhdGUoVk0mIAogCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0CiB7CisgICAgaWYgKHR5cGVJbmZvKCkuaW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eSgpICYgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0wOSAgQWxleGV5IFNo
dmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gT3JkaW5hcnlTZXQg
c2hvdWxkIGludm9rZSBjdXN0b20gW1tTZXRdXSBtZXRob2RzIGZvciBpbmRleGVkIHB1dHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAv
dGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5cGVPZi1p
bi1wdXQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm9wZXJ0aWVz
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
Lyo6IFVwZGF0ZWQuCisKIDIwMjItMDItMDggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdW0lGQ10gU2V0IExpbmVCb3g6OnNldEJhc2VsaW5lVHlwZSB3aGVu
IHRoZSBsaW5lIGlzIGNvbXB1dGVkIHRvIGJlIElkZW9ncmFwaGljQmFzZWxpbmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJvcGVydGllcy5o
CShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1Byb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6
UHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg5NDUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMwMjksNyArMzAyOSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgU3RydWN0dXJl
IElECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB7XG4iKTsKLSAgICBteSAkaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSA9
IEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2UpID8gIkpTQzo6
TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMiIDogIkpTQzo6Tm9uQXJyYXkiOworICAgIG15ICRpbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5ID0gIkpTQzo6Tm9uQXJyYXkiOwogICAgIGlmIChJc0RP
TUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgJGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpO1xuIik7CiAg
ICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2Us
ICJOb2RlIikpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oCShyZXZpc2lvbiAyODk0NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlND
OjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29y
cyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJy
YXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlND
OjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZp
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMp
OworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCShyZXZp
c2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFj
Y2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dp
bmdFeGNlcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxl
dGVyTm9JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6
TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAg
fQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRl
bnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBK
U0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0
cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkocmV2
aXNpb24gMjg5NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJ
bmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGguaAkocmV2aXNpb24gMjg5NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUlu
ZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9J
ZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlND
OjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAg
ICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpT
Qzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllci5oCShyZXZpc2lvbiAyODk0NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwor
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oCShyZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6
VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpN
YXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZFNldHRlcldpdGhJZGVudGlmaWVyLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6
Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0
b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkocmV2aXNpb24g
Mjg5NDUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRB
Y2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCShyZXZpc2lvbiAyODk0NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJX
aXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vz
c29ycyk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3Jz
KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4
ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0ds
b2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExl
Z2FjeU92ZXJyaWRlQnVpbHRJbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oCShyZXZpc2lvbiAyODk0NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgSlNDOjpNYXlIYXZlSW5kZXhlZEFjY2Vzc29ycyk7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6
Ok5vbkFycmF5KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShy
ZXZpc2lvbiAyODk0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok1heUhhdmVJbmRleGVkQWNjZXNzb3JzKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIEpTQzo6Tm9uQXJyYXkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRl
cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UGx1Z2luSW50ZXJmYWNlLmgJKHJldmlzaW9uIDI4OTQ1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQbHVnaW5JbnRlcmZhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6TWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOworICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25B
cnJheSk7CiAgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihK
U0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjg5NDUwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjItMDItMDkgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9yZGluYXJ5U2V0IHNob3VsZCBpbnZva2UgY3VzdG9tIFtbU2V0
XV0gbWV0aG9kcyBmb3IgaW5kZXhlZCBwdXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYzMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNj
ZXNzLW9iamVjdC1nZXRQcm90b3R5cGVPZi1pbi1wdXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLW9iamVjdC1nZXRQcm90b3R5
cGVPZi1pbi1wdXQuaHRtbDoKKwogMjAyMi0wMi0wOCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1h
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0ZsZXhib3hdIEFkZCBzdXBw
b3J0IGZvciBzaG93aW5nL2hpZGluZyBmbGV4IGNvbnRhaW5lciBvdmVybGF5cyBhbmQgYmFzaWMg
b3ZlcmxheSBkcmF3aW5nCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Ny
b3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZy
YW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjg5NDUwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1m
cmFtZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSwxMCBAQAogVGhpcyB0ZXN0cyB0aGF0IHlvdSBjYW4ndCBn
ZXQgdGhlIHByb3RvdHlwZSBvZiB0aGUgd2luZG93IGR1cmluZyBbW1B1dF1dIG9wZXJhdGlvbi4K
IAorUEFTUyBhcnJheVswXSA9IDExLjExIHRocmV3IGV4Y2VwdGlvbiBTZWN1cml0eUVycm9yOiBC
bG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBh
Y2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBv
cnRzIG11c3QgbWF0Y2guLgorUEFTUyBhcnJheVsyXSA9IDIyLjIyIHRocmV3IGV4Y2VwdGlvbiBT
ZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywg
ZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgorUEFTUyBhcnJheVsxMDEwMTAxMF0gPSBo
dWdlSW5kZXhWYWx1ZSB0aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZy
YW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEg
Y3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLi4KIFBBU1MgYXJyYXkuY29jb2EgPSBjb2NvYVZhbHVlIHRocmV3IGV4Y2VwdGlvbiBTZWN1
cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9t
YWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgorUEFTUyAnc3RyJ1sxMTEwMTExMF0gPSBodWdl
SW5kZXhWYWx1ZSB0aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1l
IHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jv
c3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNo
Li4KIFBBU1MgJ3N0cicuY29jb2EgPSBjb2NvYVZhbHVlIHRocmV3IGV4Y2VwdGlvbiBTZWN1cml0
eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9tYWlu
cywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgogUEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3Vs
ZCBiZSAndHJ1ZScgYW5kIGlzLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFt
ZS1hY2Nlc3Mtb2JqZWN0LWdldFByb3RvdHlwZU9mLWluLXB1dC5odG1sCShyZXZpc2lvbiAyODk0
NTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vz
cy1vYmplY3QtZ2V0UHJvdG90eXBlT2YtaW4tcHV0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3
LDEzICsxNywxNCBAQAogICAgICAgICAgICAgdGFyZ2V0V2luZG93ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpLmNvbnRlbnRXaW5kb3c7CiAgICAgICAgICAgICBhcnJheSA9IFtd
OwogICAgICAgICAgICAgYXJyYXkuX19wcm90b19fLl9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdzsK
LSAgICAgICAgICAgIGFycmF5WzBdID0gMTEuMTE7Ci0gICAgICAgICAgICBhcnJheVsyXSA9IDIy
LjIyOwotICAgICAgICAgICAgYXJyYXlbMTAxMDEwMTBdID0geworICAgICAgICAgICAgc2hvdWxk
VGhyb3dFcnJvck5hbWUoImFycmF5WzBdID0gMTEuMTEiLCAiU2VjdXJpdHlFcnJvciIpOworICAg
ICAgICAgICAgc2hvdWxkVGhyb3dFcnJvck5hbWUoImFycmF5WzJdID0gMjIuMjIiLCAiU2VjdXJp
dHlFcnJvciIpOworICAgICAgICAgICAgaHVnZUluZGV4VmFsdWUgPSB7CiAgICAgICAgICAgICAg
ICAgdG9TdHJpbmcoKSB7CiAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInRvU3RyaW5n
IGlzIGNhbGxlZCBieSAxMDEwMTAxMCBzZXR0ZXIiKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgc2hvdWxkVGhyb3dFcnJvck5hbWUoImFycmF5WzEwMTAx
MDEwXSA9IGh1Z2VJbmRleFZhbHVlIiwgIlNlY3VyaXR5RXJyb3IiKTsKICAgICAgICAgICAgIGNv
Y29hVmFsdWUgPSB7CiAgICAgICAgICAgICAgICAgdG9TdHJpbmcoKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoInRvU3RyaW5nIGlzIGNhbGxlZCBieSBjb2NvYSBzZXR0ZXIiKTsK
QEAgLTMyLDYgKzMzLDcgQEAKICAgICAgICAgICAgIHNob3VsZFRocm93RXJyb3JOYW1lKCJhcnJh
eS5jb2NvYSA9IGNvY29hVmFsdWUiLCAiU2VjdXJpdHlFcnJvciIpOwogCiAgICAgICAgICAgICBP
YmplY3Quc2V0UHJvdG90eXBlT2YoU3RyaW5nLnByb3RvdHlwZSwgdGFyZ2V0V2luZG93KTsKKyAg
ICAgICAgICAgIHNob3VsZFRocm93RXJyb3JOYW1lKCInc3RyJ1sxMTEwMTExMF0gPSBodWdlSW5k
ZXhWYWx1ZSIsICJTZWN1cml0eUVycm9yIik7CiAgICAgICAgICAgICBzaG91bGRUaHJvd0Vycm9y
TmFtZSgiJ3N0cicuY29jb2EgPSBjb2NvYVZhbHVlIiwgIlNlY3VyaXR5RXJyb3IiKTsKICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="478113"
          type_id="1"
          status="-"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>