<?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>160343</bug_id>
          
          <creation_ts>2016-07-29 09:53:41 -0700</creation_ts>
          <short_desc>[ES6] Module binding can be exported by multiple names</short_desc>
          <delta_ts>2016-07-31 00:06:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1215569</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-29 09:53:41 -0700</bug_when>
    <thetext>Module can export the same local binding by using multiple names.


var value = 42;


export { value };
export { value as value2 };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215890</commentid>
    <comment_count>1</comment_count>
      <attachid>284952</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-30 12:57:25 -0700</bug_when>
    <thetext>Created attachment 284952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215891</commentid>
    <comment_count>2</comment_count>
      <attachid>284953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-30 13:12:36 -0700</bug_when>
    <thetext>Created attachment 284953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215901</commentid>
    <comment_count>3</comment_count>
      <attachid>284953</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-30 16:19:12 -0700</bug_when>
    <thetext>Comment on attachment 284953
Patch

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

r=me

&gt; Source/JavaScriptCore/parser/Parser.cpp:2793
&gt; +template &lt;class TreeBuilder&gt; typename TreeBuilder::ExportSpecifier Parser&lt;LexerType&gt;::parseExportSpecifier(TreeBuilder&amp; context, Vector&lt;std::pair&lt;const Identifier*, const Identifier*&gt;&gt;&amp; maybeExportedLocalNames, bool&amp; hasKeywordForLocalBindings)

Why is this called &quot;maybeExportedLocalNames&quot; instead of just &quot;exportedLocalNames&quot;.
It looks like we iterate the list later and export all the names.

&gt; Source/JavaScriptCore/tests/modules/aliased-names/main.js:10
&gt; +export { change }

Maybe it&apos;s worth adding a test that should fail when the program is something like:
export {foo as bar, baz as bar}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215931</commentid>
    <comment_count>4</comment_count>
      <attachid>284953</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-31 00:02:23 -0700</bug_when>
    <thetext>Comment on attachment 284953
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2793
&gt;&gt; +template &lt;class TreeBuilder&gt; typename TreeBuilder::ExportSpecifier Parser&lt;LexerType&gt;::parseExportSpecifier(TreeBuilder&amp; context, Vector&lt;std::pair&lt;const Identifier*, const Identifier*&gt;&gt;&amp; maybeExportedLocalNames, bool&amp; hasKeywordForLocalBindings)
&gt; 
&gt; Why is this called &quot;maybeExportedLocalNames&quot; instead of just &quot;exportedLocalNames&quot;.
&gt; It looks like we iterate the list later and export all the names.

This is because maybeExportedLocalNames could be non-local names.
Here, we need to handle two syntax.

1.
export { a, b, c };

2.
export { a, b, c } from &quot;other-module&quot;;

In the first case, a, b, c should be local bindings. So it is OK.
However, in the second case, a, b, c is directly exported from the &quot;other-module&quot; and there are no local bindings in the current module (And we must not create such local binding in the current module). So in this case, these collected names are not exportedLocalNames.


We cannot determine which the current parsing syntax is ((1) OR (2) ?) until we encounter the `from &quot;other-module&quot;` part. So when parsing export specifiers (here), these collected names are `maybe` exported local names.

&gt;&gt; Source/JavaScriptCore/tests/modules/aliased-names/main.js:10
&gt;&gt; +export { change }
&gt; 
&gt; Maybe it&apos;s worth adding a test that should fail when the program is something like:
&gt; export {foo as bar, baz as bar}

Sounds nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215932</commentid>
    <comment_count>5</comment_count>
      <attachid>284962</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-31 00:04:49 -0700</bug_when>
    <thetext>Created attachment 284962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215933</commentid>
    <comment_count>6</comment_count>
      <attachid>284962</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-31 00:05:18 -0700</bug_when>
    <thetext>Comment on attachment 284962
Patch

Oops, accidentally cleared r+. I&apos;ll land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215934</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-31 00:06:18 -0700</bug_when>
    <thetext>Committed r203953: &lt;http://trac.webkit.org/changeset/203953&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284952</attachid>
            <date>2016-07-30 12:57:25 -0700</date>
            <delta_ts>2016-07-30 13:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160343-20160731045608.patch</filename>
            <type>text/plain</type>
            <size>43719</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTgzNmMzYzQ2MTllMGZlN2I4ZDVhNDIwMTExNzM4OTAzZDdlZmQyLi43MjFhOTA3NzdmNWI1NjBi
NmU0NjZjYjJlOTZhMDFiNGI5MDAyYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNi0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGUgYmluZGluZyBjYW4gYmUgZXhwb3J0ZWQgYnkg
bXVsdGlwbGUgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MDM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisK
KyAgICAgICAgRVM2IE1vZHVsZSBjYW4gZXhwb3J0IHRoZSBzYW1lIGxvY2FsIGJpbmRpbmcgYnkg
dXNpbmcgbXVsdGlwbGUgbmFtZXMuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAg
ICBgYGAKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IDQyOworCisgICAgICAgICAgICBleHBvcnQg
eyB2YWx1ZSB9OworICAgICAgICAgICAgZXhwb3J0IHsgdmFsdWUgYXMgdmFsdWUyIH07CisgICAg
ICAgICAgICBgYGAKKworICAgICAgICBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3dlZCBvbmUgbG9j
YWwgYmluZGluZyB0byBiZSBleHBvcnRlZCB3aXRoIG9uZSBuYW1lLiBTbywgaW4gdGhlIGFib3Zl
IGNhc2UsCisgICAgICAgIHRoZSBsb2NhbCBiaW5kaW5nICJ2YWx1ZSIgaXMgZXhwb3J0ZWQgYXMg
InZhbHVlMiIgYW5kICJ2YWx1ZSIgbmFtZSBpcyBub3QgZXhwb3J0ZWQuIFRoaXMgaXMgd3Jvbmcu
CisKKyAgICAgICAgVG8gZml4IHRoaXMgaXNzdWUsIHdlIGNvbGxlY3QgdGhlIGNvcnJlc3BvbmRl
bmNlIChsb2NhbCBuYW1lID0+IGV4cG9ydGVkIG5hbWUpIHRvIHRoZSBsb2NhbCBiaW5kaW5ncwor
ICAgICAgICBpbiB0aGUgcGFyc2VyLiBQcmV2aW91c2x5LCB3ZSBvbmx5IG1haW50YWluZWQgdGhl
IGV4cG9ydGVkIGxvY2FsIGJpbmRpbmdzIGluIHRoZSBwYXJzZXIuIEFuZCB1dGlsaXplCisgICAg
ICAgIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBjcmVhdGluZyB0aGUgZXhwb3J0IGVudHJpZXMgaW4g
TW9kdWxlQW5hbHl6ZXIuCisKKyAgICAgICAgQW5kIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyBNb2R1
bGVTY29wZURhdGEgZnJvbSB0aGUgU2NvcGUgb2JqZWN0IHRvIHRoZSBQYXJzZXIgY2xhc3Mgc2lu
Y2UgZXhwb3J0ZWQKKyAgICAgICAgbmFtZXMgc2hvdWxkIGJlIG1hbmFnZWQgcGVyLW1vZHVsZSwg
bm90IHBlci1zY29wZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBzZXZlcmFsIHRlc3Qy
NjIgZmFpbHVyZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6Ok1v
ZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4
cG9ydGVkQmluZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpk
ZWNsYXJlRXhwb3J0QWxpYXMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5oOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVTY29wZURhdGEuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oLgorICAgICAgICAo
SlNDOjpNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6ZXhwb3J0ZWRCaW5kaW5ncyk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6
ZXhwb3J0TmFtZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6ZXhwb3J0QmluZGlu
Zyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5v
ZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVs
ZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9O
b2Rlcy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6bW9kdWxlU2NvcGVEYXRh
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwb3J0TmFtZSk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRlZEJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRh
OjpleHBvcnROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRCaW5kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNjb3BlOjptb2R1bGVTY29wZURhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL21v
ZHVsZXMvYWxpYXNlZC1uYW1lcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9h
bGlhc2VkLW5hbWVzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAg
KiB0ZXN0cy90ZXN0MjYyLnlhbWw6CisKIDIwMTYtMDctMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQnlWYWxJbmZvIGlzIG9u
bHkgdXNlZCBpbiBKSVQgZW5hYmxlZCBlbnZpcm9ubWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOTU4ZGVhN2VkNzdjNWQ5NTg3MWEzNzIyMjQxYWQ4ODI0MmRmMGIxNC4uYzRi
ZDBhNmQ2OGI4MTdlNDc2YTMzMTgzZDFmNzYzYTFmYWNhZDMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIxMzAsNiArMjEzMCw3IEBACiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9
OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdB
NCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQw
NTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CisJCUE3
OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4
QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDE3LDYgKzQ0MTgsNyBAQAog
CQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAw
QkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5k
U3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDAwQkVBRjBERjYwNDQ4
MUFGNkFCNjhDIC8qIE1vZHVsZVNjb3BlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNb2R1bGVTY29wZURhdGEuaDsgcGF0aCA9IHBhcnNlci9Nb2R1bGVTY29wZURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpA
QCAtNTU4Miw2ICs1NTg0LDcgQEAKIAkJCQlBN0E3RUU3NzExQjk4QjhEMDA2NUExNEYgLyogU3lu
dGF4Q2hlY2tlci5oICovLAogCQkJCTc5RUUwQkZEMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJs
ZUVudmlyb25tZW50LmNwcCAqLywKIAkJCQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1QzkgLyogVmFy
aWFibGVFbnZpcm9ubWVudC5oICovLAorCQkJCTAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4QyAvKiBN
b2R1bGVTY29wZURhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFyc2VyOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMjksNiArODIzMiw3IEBACiAJCQkJODY3MDRCOEExMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjJEODVC
NzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1
bGVTY29wZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCAyOTY2OGU5Mjg2MGE4OGFmM2MxOGFmZmRj
MjVjNGFiZDE2MzJjOWZhLi4xYzcwMzY2NTNkOWM2ZjZmNjIwNDBkYmI0MWRkNWM4NTdjMmNjYjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVk
ZSAiTW9kdWxlU2NvcGVEYXRhLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTQyLDIwICs0Myw3IEBAIE1vZHVsZUFuYWx5emVyOjpNb2R1bGVBbmFs
eXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uCiB7
CiB9CiAKLUlkZW50aWZpZXIgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydGVkQmluZGluZyhjb25zdCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCkKLXsKLSAgICBjb25zdCBhdXRvIGl0ZXJh
dG9yID0gbV9hbGlhc01hcC5maW5kKGlkZW50KTsKLSAgICBpZiAoaXRlcmF0b3IgIT0gbV9hbGlh
c01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKLSAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0oKSwgaWRlbnQuZ2V0KCkpOwotfQotCi12b2lkIE1vZHVs
ZUFuYWx5emVyOjpkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
LCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQotewotICAgIG1fYWxpYXNNYXAuYWRkKGxv
Y2FsTmFtZS5pbXBsKCksIGV4cG9ydE5hbWUpOwotfQotCi12b2lkIE1vZHVsZUFuYWx5emVyOjpl
eHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpCit2b2lkIE1vZHVsZUFu
YWx5emVyOjpleHBvcnRWYXJpYWJsZShNb2R1bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5v
ZGUsIGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkKIHsKICAgICAvLyBJbiB0aGUgcGFyc2Vy
LCB3ZSBhbHJlYWR5IG1hcmtlZCB0aGUgdmFyaWFibGVzIGFzIEV4cG9ydGVkIGFuZCBJbXBvcnRl
ZC4KICAgICAvLyBCeSBsZXZlcmFnaW5nIHRoaXMgaW5mb3JtYXRpb24sIHdlIGNvbGxlY3QgdGhl
IGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVkCkBAIC03NCwxMSArNjIsMTAgQEAgdm9pZCBNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgbG9jYWxOYW1lLAogICAgIGlmICghdmFyaWFibGUuaXNFeHBvcnRlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBjb25zdCBJZGVudGlmaWVyIGV4cG9ydE5hbWUgPSBleHBvcnRlZEJpbmRp
bmcobG9jYWxOYW1lKTsKLQogICAgIC8vIEV4cG9ydGVkIG1vZHVsZSBsb2NhbCB2YXJpYWJsZS4K
ICAgICBpZiAoIXZhcmlhYmxlLmlzSW1wb3J0ZWQoKSkgewotICAgICAgICBtb2R1bGVSZWNvcmQo
KS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2Nh
bChleHBvcnROYW1lLCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSkp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBleHBvcnROYW1lIDogbW9kdWxlUHJvZ3JhbU5vZGUubW9k
dWxlU2NvcGVEYXRhKCkuZXhwb3J0ZWRCaW5kaW5ncygpLmdldChsb2NhbE5hbWUuZ2V0KCkpKQor
ICAgICAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBleHBv
cnROYW1lLmdldCgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg5LDcgKzc2LDggQEAgdm9pZCBNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgbG9jYWxOYW1lLAogICAgICAgICAvLwogICAgICAgICAvLyBTZWMgMTUuMi4xLjE2LjEgc3Rl
cCAxMS1hLWlpLTItYiBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wYXJzZW1v
ZHVsZQogICAgICAgICAvLyBOYW1lc3BhY2UgZXhwb3J0IGlzIGhhbmRsZWQgYXMgbG9jYWwgZXhw
b3J0IHNpbmNlIGEgbmFtZXNwYWNlIG9iamVjdCBiaW5kaW5nIGl0c2VsZiBpcyBpbXBsZW1lbnRl
ZCBhcyBhIGxvY2FsIGJpbmRpbmcuCi0gICAgICAgIG1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRF
bnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9ydE5hbWUs
IElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSkpOworICAgICAgICBm
b3IgKGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5tb2R1bGVTY29wZURhdGEo
KS5leHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkpCisgICAgICAgICAgICBt
b2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpjcmVhdGVMb2NhbChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGV4cG9ydE5hbWUuZ2V0KCkp
LCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtOTksNyArODcsOCBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpl
eHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUs
CiAgICAgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9y
dEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQo
KSk7CiAgICAgQVNTRVJUKG9wdGlvbmFsSW1wb3J0RW50cnkpOwogICAgIGNvbnN0IEpTTW9kdWxl
UmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsK
LSAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
LCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgZm9yIChhdXRvJiBleHBvcnROYW1l
IDogbW9kdWxlUHJvZ3JhbU5vZGUubW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0ZWRCaW5kaW5ncygp
LmdldChsb2NhbE5hbWUuZ2V0KCkpKQorICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0
RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChJZGVudGlm
aWVyOjpmcm9tVWlkKG1fdm0sIGV4cG9ydE5hbWUuZ2V0KCkpLCBpbXBvcnRFbnRyeS5pbXBvcnRO
YW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CiB9CiAKIApAQCAtMTQ4LDEwICsxMzcs
MTAgQEAgSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dy
YW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAvLwogICAgIC8vICAgICBleHBvcnQgKiBm
cm9tICJtb2QiCiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQtPmRl
Y2xhcmVkVmFyaWFibGVzKCkpCi0gICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIua2V5LCBwYWly
LnZhbHVlKTsKKyAgICAgICAgZXhwb3J0VmFyaWFibGUobW9kdWxlUHJvZ3JhbU5vZGUsIHBhaXIu
a2V5LCBwYWlyLnZhbHVlKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbW9kdWxl
UmVjb3JkLT5sZXhpY2FsVmFyaWFibGVzKCkpCi0gICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIu
a2V5LCBwYWlyLnZhbHVlKTsKKyAgICAgICAgZXhwb3J0VmFyaWFibGUobW9kdWxlUHJvZ3JhbU5v
ZGUsIHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wTW9kdWxl
UmVjb3JkKCkpCiAgICAgICAgIG1fbW9kdWxlUmVjb3JkLT5kdW1wKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKaW5kZXggNzA4M2NhOTA5OTE4ZWZk
MjNlYmExYTNkNWJiOWMzZjY1NzMzOGUwNS4uYmIzYzUzZmNiYjQ0MDE5NzkyZmJiZmY1NjgyYTk1
Y2ViYjM0YjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1
bGVBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5h
bHl6ZXIuaApAQCAtNDQsMTggKzQ0LDExIEBAIGNsYXNzIE1vZHVsZUFuYWx5emVyIHsKIAogICAg
IEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5n
ZXQoKTsgfQogCi0gICAgdm9pZCBkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYg
bG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKLQogcHJpdmF0ZToKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllciwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+
IElkZW50aWZpZXJBbGlhc01hcDsKLQotICAgIHZvaWQgZXhwb3J0VmFyaWFibGUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYp
OwotCi0gICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnQpOworICAgIHZvaWQgZXhwb3J0VmFyaWFibGUoTW9kdWxlUHJvZ3Jh
bU5vZGUmLCBjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5Jik7CiAKICAgICBWTSogbV92bTsKICAgICBTdHJvbmc8SlNNb2R1bGVS
ZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwotICAgIElkZW50aWZpZXJBbGlhc01hcCBtX2FsaWFzTWFw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZVNjb3BlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVTY29wZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjIxYWY0ODM4ZjE4MzJhMmFkMmRh
MTM1MzY4ZTEzZjk1ZjE2Yzc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVTY29wZURhdGEuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIE1vZHVsZVNjb3BlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
ZHVsZVNjb3BlRGF0YT4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlU2NvcGVEYXRhKTsK
K1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyU2V0LCBJZGVudGlmaWVyUmVwSGFz
aCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSWRlbnRpZmllckFsaWFz
TWFwOworCisgICAgc3RhdGljIFJlZjxNb2R1bGVTY29wZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kdWxlU2NvcGVEYXRhKTsgfQorCisgICAgY29uc3QgSWRlbnRpZmll
ckFsaWFzTWFwJiBleHBvcnRlZEJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRlZEJp
bmRpbmdzOyB9CisKKyAgICBib29sIGV4cG9ydE5hbWUoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0
ZWROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhwb3J0ZWROYW1lcy5hZGQoZXhwb3J0
ZWROYW1lLmltcGwoKSkuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICB2b2lkIGV4cG9ydEJpbmRp
bmcoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnRl
ZE5hbWUpCisgICAgeworICAgICAgICBtX2V4cG9ydGVkQmluZGluZ3MuYWRkKGxvY2FsTmFtZS5p
bXBsKCksIElkZW50aWZpZXJTZXQoKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChleHBvcnRlZE5hbWUu
aW1wbCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGV4cG9ydEJpbmRpbmcoY29uc3QgSWRlbnRpZmll
ciYgbG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgZXhwb3J0QmluZGluZyhsb2NhbE5hbWUsIGxv
Y2FsTmFtZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1vZHVsZVNjb3BlRGF0YSgpID0gZGVm
YXVsdDsKKworICAgIElkZW50aWZpZXJTZXQgbV9leHBvcnRlZE5hbWVzIHsgfTsKKyAgICBJZGVu
dGlmaWVyQWxpYXNNYXAgbV9leHBvcnRlZEJpbmRpbmdzIHsgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDYzYzczMmQwYWMx
OTBmNWE1OTJjYjJiM2U0ZTI5MzY5MTU2NDBiYTEuLjRmOWZhMmY5NWE3N2YzMWNjYzM4NWY1Njgy
NzE2MmY1YmFkMjA4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1l
bnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFy
dExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVu
Y1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3Ry
aW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFt
ZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
SW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJB
cmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVu
dmlyb25tZW50JiB2YXJFbnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFy
aWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJT
ZXQmJiBzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJyb3dG
dW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpCiAgICAgOiBTY29wZU5vZGUo
cGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFyaWFibGVzLCBX
VEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGlubmVyQXJyb3dG
dW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihz
dGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKQEAgLTEyNiwxNiArMTI2
LDE3IEBAIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1Nb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBh
cnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25l
ZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52
aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xv
cHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25D
b2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQorTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBw
YXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNs
b3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9u
Q29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJiBtb2R1bGVTY29wZURhdGEpCiAgICAgOiBT
Y29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2Us
IGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFy
aWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGlu
bmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFy
dENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKKyAgICAs
IG1fbW9kdWxlU2NvcGVEYXRhKCpXVEZNb3ZlKG1vZHVsZVNjb3BlRGF0YSkpCiB7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1FdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFy
ZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQs
IEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxW
YXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5j
dGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJB
cnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGU6OkV2
YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25l
ZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxl
RW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBW
YXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0
clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgSW5uZXJBcnJv
d0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikKICAgICA6IFNjb3BlTm9k
ZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRy
ZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMs
IFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJv
d0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX2VuZENvbHVtbihl
bmRDb2x1bW4pCiB7CkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBGdW5jdGlvbk1ldGFkYXRhTm9k
ZTo6c2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24gcG9zaXRpb24pCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmIHBhcnNl
ckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYg
dmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5
TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQorRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9u
bWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYg
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVy
cywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJ
bm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQogICAgIDog
U2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNl
Q29kZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGlj
YWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJl
cywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBt
X3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMWUwODgyNzlmYzcyNGNhOTNi
MmI2MzNmZjA3OWNjM2FlMzAxNGY2YS4uNjdhZjRmYzhhYzNlZGM1MjlkMjg0YTUxNWUxNWIwMzc2
MTZhNWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNTIsNiArNTIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNjb3Bl
Tm9kZTsKICAgICBjbGFzcyBNb2R1bGVBbmFseXplcjsKKyAgICBjbGFzcyBNb2R1bGVTY29wZURh
dGE7CiAKICAgICB0eXBlZGVmIFNtYWxsUHRyU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKj4gVW5pcXVl
ZFN0cmluZ0ltcGxQdHJTZXQ7CiAKQEAgLTE2NDQsNyArMTY0NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRT
dHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAgICAgdW5zaWduZWQg
c3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVu
c2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNjU5
LDcgKzE2NjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVi
bGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsTm9kZShQYXJzZXJBcmVu
YSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNrJiYsIFZhcmlhYmxlRW52
aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmLCBGdW5jdGlvblBhcmFtZXRlcnMq
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFsTm9kZShQYXJzZXJBcmVu
YSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
ZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNrJiYsIFZhcmlhYmxlRW52
aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmLCBGdW5jdGlvblBhcmFtZXRlcnMq
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpOwog
CiAgICAgICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5kQ29sdW1uOyB9CkBAIC0xNjc0LDE3ICsxNjc1LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgTW9kdWxlUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFyaWFibGVF
bnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIFVuaXF1
ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1uOyB9
CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1u
OyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7
CiAKKyAgICAgICAgTW9kdWxlU2NvcGVEYXRhJiBtb2R1bGVTY29wZURhdGEoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9tb2R1bGVTY29wZURhdGE7CisgICAgICAgIH0KKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVt
bjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CisgICAgICAgIFJlZjxNb2R1bGVTY29w
ZURhdGE+IG1fbW9kdWxlU2NvcGVEYXRhOwogICAgIH07CiAKICAgICBjbGFzcyBNb2R1bGVOYW1l
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTE5MTUsNyArMTkyMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJs
ZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5p
cXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNlckFyZW5hJiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVudCYs
IFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAgICAg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNB
bmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFs
eXplTW9kdWxlLmNwcAppbmRleCBlZDQ2MWRhMjY4MzRmYjMzYzk0NDAyMTRhOTk1ZTQ1YzhhODE5
NDU1Li40MjZlNTNiOWQxZDc3YjAwZjQyOWY5Yjc0NDlhZGU0MTJkNWQ1OWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBA
IC02NSw5ICs2NSw4IEBAIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQo
KS0+YWRkU3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKIH0KIAot
dm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFu
YWx5emVyJiBhbmFseXplcikKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5h
bHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCiB7Ci0gICAgYW5hbHl6ZXIuZGVjbGFyZUV4cG9y
dEFsaWFzKG1fbG9jYWxOYW1lLCBhbmFseXplci52bSgpLnByb3BlcnR5TmFtZXMtPmRlZmF1bHRL
ZXl3b3JkKTsKIH0KIAogdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1v
ZHVsZShNb2R1bGVBbmFseXplciYpCkBAIC04NiwxMSArODUsNyBAQCB2b2lkIEV4cG9ydE5hbWVk
RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikK
ICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgbm8gbG9jYWwgdmFyaWFibGUgbmFtZXMgYXJl
IGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLgogICAgICAgICAgICAgLy8gInYiIGlu
ZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGluICJtb2QiLgogICAgICAgICAgICAgYW5hbHl6
ZXIubW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRF
bnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVy
LT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNwZWNpZmllci0+bG9jYWxOYW1l
KCkgIT0gc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSkKLSAgICAgICAgICAgIGFuYWx5emVyLmRl
Y2xhcmVFeHBvcnRBbGlhcyhzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBzcGVjaWZpZXItPmV4cG9y
dGVkTmFtZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCAyNGQ5NDM2NjFjMmNlM2M4NmIyNWIzYmZlMDE1OThmYzc1OGY0NzI5Li40YTFj
MWU1ODhmZjRkNTQ1NzcwZjI0NjgzY2MzYjNhZjUzOGU1NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMzQsNiArMjM0LDkgQEAgUGFyc2VyPExleGVyVHlw
ZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWls
dGluTW9kZQogICAgIGlmIChzdHJpY3RNb2RlID09IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0
KQogICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogCisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSkKKyAgICAgICAgbV9tb2R1bGVTY29wZURh
dGEgPSBNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSgpOworCiAgICAgbmV4dCgpOwogfQogCkBAIC00
NzYsNyArNDc5LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU28KIAogICAgIHByb3BhZ2F0ZUVy
cm9yKCk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHVpZCA6IGN1cnJlbnRTY29wZSgpLT5tb2R1
bGVTY29wZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhaXIgOiBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0ZWRCaW5kaW5ncygpKSB7CisgICAgICAg
IGNvbnN0IGF1dG8mIHVpZCA9IHBhaXIua2V5OwogICAgICAgICBpZiAoY3VycmVudFNjb3BlKCkt
Pmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSkgewogICAgICAgICAgICAgY3VycmVudFNjb3BlKCkt
PmRlY2xhcmVkVmFyaWFibGVzKCkubWFya1ZhcmlhYmxlQXNFeHBvcnRlZCh1aWQpOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC03MDgsNyArNzEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURl
Y2wKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9ydFR5
cGU6OkV4cG9ydGVkKSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBv
cnROYW1lKCpuYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFtZSAnIiwgbmFtZS0+
aW1wbCgpLCAiJyIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29w
ZURhdGEoKS5leHBvcnRCaW5kaW5nKCpuYW1lKTsKKyAgICAgICAgICAgICAgICBtX21vZHVsZVNj
b3BlRGF0YS0+ZXhwb3J0QmluZGluZygqbmFtZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChoYXNJbml0aWFsaXplcikgewpAQCAtODI4LDcgKzgzMiw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVCCiAKICAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRl
ZCkgewogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUobmFtZSksICJDYW5u
b3QgZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOwotICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZyhuYW1lKTsK
KyAgICAgICAgbV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJpbmRpbmcobmFtZSk7CiAgICAgfQog
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbih0b2tlbi5tX2xvY2F0aW9u
LCBuYW1lLCB0b2tlbi5tX3N0YXJ0UG9zaXRpb24sIHRva2VuLm1fZW5kUG9zaXRpb24sIGJpbmRp
bmdDb250ZXh0KTsKIH0KQEAgLTIyMjksNyArMjIzMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRl
Y2xhCiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAiQ2Fubm90IGRlY2xh
cmUgYSBmdW5jdGlvbiB0aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xhc3MvZnVuY3Rpb24gdmFy
aWFibGUgJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CiAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0ZWQpIHsKICAgICAgICAg
c2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpmdW5jdGlvbkluZm8ubmFtZSksICJDYW5u
b3QgZXhwb3J0IGEgZHVwbGljYXRlIGZ1bmN0aW9uIG5hbWU6ICciLCBmdW5jdGlvbkluZm8ubmFt
ZS0+aW1wbCgpLCAiJyIpOwotICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRh
KCkuZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOworICAgICAgICBtX21vZHVsZVNj
b3BlRGF0YS0+ZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOwogICAgIH0KIAogICAg
IFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChs
b2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKQEAgLTIyNTUsNyArMjI1OSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzc0RlY2xhcmF0CiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAiQ2Fu
bm90IGRlY2xhcmUgYSBjbGFzcyB0d2ljZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICIn
Iik7CiAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0ZWQpIHsKICAgICAg
ICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCppbmZvLmNsYXNzTmFtZSksICJDYW5u
b3QgZXhwb3J0IGEgZHVwbGljYXRlIGNsYXNzIG5hbWU6ICciLCBpbmZvLmNsYXNzTmFtZS0+aW1w
bCgpLCAiJyIpOwotICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhw
b3J0QmluZGluZygqaW5mby5jbGFzc05hbWUpOworICAgICAgICBtX21vZHVsZVNjb3BlRGF0YS0+
ZXhwb3J0QmluZGluZygqaW5mby5jbGFzc05hbWUpOwogICAgIH0KIAogICAgIEpTVGV4dFBvc2l0
aW9uIGNsYXNzRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKQEAgLTI3ODYsNyArMjc5MCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbXBvcnREZWNsYXJhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVy
KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8Y29uc3QgSWRlbnRpZmllcio+JiBtYXliZUxv
Y2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKQordGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4
dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+
PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRp
bmdzKQogewogICAgIC8vIEV4cG9ydFNwZWNpZmllciA6CiAgICAgLy8gSWRlbnRpZmllck5hbWUK
QEAgLTI4MDgsNyArMjgxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBQYXJzZXI8TGV4ZXJUCiAgICAgfQogCiAg
ICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpleHBvcnRlZE5hbWUpLCAiQ2Fubm90
IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBleHBvcnRlZE5hbWUtPmltcGwoKSwgIiciKTsK
LSAgICBtYXliZUxvY2FsTmFtZXMuYXBwZW5kKGxvY2FsTmFtZSk7CisgICAgbWF5YmVFeHBvcnRl
ZExvY2FsTmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxvY2FsTmFtZSwgZXhwb3J0ZWROYW1l
KSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0U3BlY2lmaWVyKHNwZWNpZmllckxv
Y2F0aW9uLCAqbG9jYWxOYW1lLCAqZXhwb3J0ZWROYW1lKTsKIH0KIApAQCAtMjg5Niw3ICsyOTAw
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgZmFpbElmRmFsc2UocmVzdWx0
LCAiQ2Fubm90IHBhcnNlIHRoZSBkZWNsYXJhdGlvbiIpOwogCiAgICAgICAgIHNlbWFudGljRmFp
bElmRmFsc2UoZXhwb3J0TmFtZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5kZWZhdWx0S2V5d29yZCks
ICJPbmx5IG9uZSAnZGVmYXVsdCcgZXhwb3J0IGlzIGFsbG93ZWQiKTsKLSAgICAgICAgY3VycmVu
dFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7Cisg
ICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhLT5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUsIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCByZXN1bHQsICps
b2NhbE5hbWUpOwogICAgIH0KIApAQCAtMjkxNiwxMiArMjkyMCwxMiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhw
b3J0RGVjbGFyYQogICAgICAgICBuZXh0KCk7CiAKICAgICAgICAgYXV0byBzcGVjaWZpZXJMaXN0
ID0gY29udGV4dC5jcmVhdGVFeHBvcnRTcGVjaWZpZXJMaXN0KCk7Ci0gICAgICAgIFZlY3Rvcjxj
b25zdCBJZGVudGlmaWVyKj4gbWF5YmVMb2NhbE5hbWVzOworICAgICAgICBWZWN0b3I8c3RkOjpw
YWlyPGNvbnN0IElkZW50aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+IG1heWJlRXhwb3J0ZWRM
b2NhbE5hbWVzOwogCiAgICAgICAgIGJvb2wgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MgPSBm
YWxzZTsKICAgICAgICAgd2hpbGUgKCFtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICAgICAg
ZmFpbElmRmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCksICJFeHBlY3RlZCBhIHZhcmlh
YmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgIGF1dG8g
c3BlY2lmaWVyID0gcGFyc2VFeHBvcnRTcGVjaWZpZXIoY29udGV4dCwgbWF5YmVMb2NhbE5hbWVz
LCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CisgICAgICAgICAgICBhdXRvIHNwZWNpZmll
ciA9IHBhcnNlRXhwb3J0U3BlY2lmaWVyKGNvbnRleHQsIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVz
LCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShz
cGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG5hbWVkIGV4cG9ydCIpOwogICAgICAgICAgICAg
Y29udGV4dC5hcHBlbmRFeHBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTGlzdCwgc3BlY2lmaWVyKTsK
ICAgICAgICAgICAgIGlmICghY29uc3VtZShDT01NQSkpCkBAIC0yOTQ3LDggKzI5NTEsMTEgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIC8vIGRvZXMgbm90IGhhdmUgZWZm
ZWN0IG9uIHRoZSBjdXJyZW50IG1vZHVsZSdzIHNjb3BlLiBCdXQsCiAgICAgICAgICAgICAvLyAg
IGV4cG9ydCB7IEEsIEIsIEMgYXMgRCB9CiAgICAgICAgICAgICAvLyB3aWxsIHJlZmVyZW5jZSB0
aGUgY3VycmVudCBtb2R1bGUncyBiaW5kaW5ncy4KLSAgICAgICAgICAgIGZvciAoY29uc3QgSWRl
bnRpZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKQotICAgICAgICAgICAgICAgIGN1
cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUp
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbWF5YmVFeHBvcnRlZExvY2Fs
TmFtZXMpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGV4cG9ydGVkTmFt
ZSA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhLT5leHBv
cnRCaW5kaW5nKCpsb2NhbE5hbWUsICpleHBvcnRlZE5hbWUpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJh
dGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAyNWNlYzk1YTc2MWNjZDhjMjYzMzgzNzMw
ZWIwNGUxNTY5NzIwYmEyLi5hMDBiODA0MWQyNjY2YTRjMjZjZWFjNzVjZGNlNDM4YjBiNzE1Yzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgIk1vZHVsZVNjb3BlRGF0YS5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJv
ci5oIgpAQCAtMTI4LDI3ICsxMjksNiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzSWRl
bnRpZmllck9yS2V5d29yZChjb25zdCBKU1Rva2VuJiB0b2tlbikKICAgICByZXR1cm4gdG9rZW4u
bV90eXBlID09IElERU5UIHx8IHRva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWc7CiB9CiAK
LWNsYXNzIE1vZHVsZVNjb3BlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZHVsZVNjb3BlRGF0
YT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9kdWxlU2NvcGVEYXRhPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVNjb3BlRGF0YSk7IH0KLQotICAgIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGV4cG9ydGVkQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydGVk
QmluZGluZ3M7IH0KLQotICAgIGJvb2wgZXhwb3J0TmFtZShjb25zdCBJZGVudGlmaWVyJiBleHBv
cnRlZE5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9leHBvcnRlZE5hbWVzLmFkZChleHBv
cnRlZE5hbWUuaW1wbCgpKS5pc05ld0VudHJ5OwotICAgIH0KLQotICAgIHZvaWQgZXhwb3J0Qmlu
ZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCi0gICAgewotICAgICAgICBtX2V4cG9y
dGVkQmluZGluZ3MuYWRkKGxvY2FsTmFtZS5pbXBsKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBJZGVudGlmaWVyU2V0IG1fZXhwb3J0ZWROYW1lcyB7IH07Ci0gICAgSWRlbnRpZmllclNldCBt
X2V4cG9ydGVkQmluZGluZ3MgeyB9OwotfTsKLQogc3RydWN0IFNjb3BlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTY29wZSk7CiAKQEAgLTIxNiw3ICsxOTYsNiBAQCBzdHJ1Y3QgU2NvcGUg
ewogICAgICAgICAsIG1fbGV4aWNhbFZhcmlhYmxlcyhXVEZNb3ZlKG90aGVyLm1fbGV4aWNhbFZh
cmlhYmxlcykpCiAgICAgICAgICwgbV91c2VkVmFyaWFibGVzKFdURk1vdmUob3RoZXIubV91c2Vk
VmFyaWFibGVzKSkKICAgICAgICAgLCBtX2Nsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlcyhXVEZNb3Zl
KG90aGVyLm1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzKSkKLSAgICAgICAgLCBtX21vZHVsZVNj
b3BlRGF0YShXVEZNb3ZlKG90aGVyLm1fbW9kdWxlU2NvcGVEYXRhKSkKICAgICAgICAgLCBtX2Z1
bmN0aW9uRGVjbGFyYXRpb25zKFdURk1vdmUob3RoZXIubV9mdW5jdGlvbkRlY2xhcmF0aW9ucykp
CiAgICAgewogICAgIH0KQEAgLTI3NywxMSArMjU2LDggQEAgc3RydWN0IFNjb3BlIHsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9k
ZToKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVBbmFseXplTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2
YWx1YXRlTW9kZToKLSAgICAgICAgICAgIHNldElzTW9kdWxlKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMywxMiArMjg5LDYgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsKICAgICB9CiAKLSAgICBNb2R1bGVT
Y29wZURhdGEmIG1vZHVsZVNjb3BlRGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV9tb2R1bGVTY29wZURhdGEpOwotICAgICAgICByZXR1cm4gKm1fbW9kdWxlU2NvcGVEYXRhOwot
ICAgIH0KLQogICAgIHZvaWQgY29tcHV0ZUxleGljYWxseUNhcHR1cmVkVmFyaWFibGVzQW5kUHVy
Z2VDYW5kaWRhdGVzKCkKICAgICB7CiAgICAgICAgIC8vIEJlY2F1c2UgdmFyaWFibGVzIG1heSBi
ZSBkZWZpbmVkIGF0IGFueSB0aW1lIGluIHRoZSByYW5nZSBvZiBhIGxleGljYWwgc2NvcGUsIHdl
IG11c3QKQEAgLTczMSwxMSArNzAxLDYgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgbV9pc0Fy
cm93RnVuY3Rpb24gPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgc2V0SXNNb2R1bGUoKQotICAg
IHsKLSAgICAgICAgbV9tb2R1bGVTY29wZURhdGEgPSBNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSgp
OwotICAgIH0KLQogICAgIGNvbnN0IFZNKiBtX3ZtOwogICAgIGJvb2wgbV9zaGFkb3dzQXJndW1l
bnRzOwogICAgIGJvb2wgbV91c2VzRXZhbDsKQEAgLTc3MSw3ICs3MzYsNiBAQCBzdHJ1Y3QgU2Nv
cGUgewogICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbFB0clNldCwgNj4gbV91c2VkVmFyaWFi
bGVzOwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0IG1fc2xvcHB5TW9kZUhvaXN0YWJsZUZ1
bmN0aW9uQ2FuZGlkYXRlczsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJpbmdJbXBsKj4gbV9jbG9z
ZWRWYXJpYWJsZUNhbmRpZGF0ZXM7Ci0gICAgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1
bGVTY29wZURhdGE7CiAgICAgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgbV9mdW5j
dGlvbkRlY2xhcmF0aW9uczsKIH07CiAKQEAgLTExNzYsNyArMTE0MCw4IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgYm9vbCBleHBvcnROYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGN1cnJlbnRTY29wZSgpLmluZGV4KCkgPT0gMCk7Ci0gICAgICAgIHJl
dHVybiBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0TmFtZShpZGVudCk7
CisgICAgICAgIEFTU0VSVChtX21vZHVsZVNjb3BlRGF0YSk7CisgICAgICAgIHJldHVybiBtX21v
ZHVsZVNjb3BlRGF0YS0+ZXhwb3J0TmFtZShpZGVudCk7CiAgICAgfQogCiAgICAgU2NvcGVTdGFj
ayBtX3Njb3BlU3RhY2s7CkBAIC0xNDQyLDcgKzE0MDcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9y
dFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVj
aWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUltcG9ydERl
Y2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0U3BlY2lm
aWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8Y29uc3QgSWRlbnRpZmllcio+JiBtYXli
ZUxvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVj
aWZpZXIgcGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFZlY3Rvcjxz
dGQ6OnBhaXI8Y29uc3QgSWRlbnRpZmllciosIGNvbnN0IElkZW50aWZpZXIqPj4mIG1heWJlRXhw
b3J0ZWRMb2NhbE5hbWVzLCBib29sJiBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRXhwb3J0RGVj
bGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKIAogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2QgfTsKQEAgLTE2MjMsNiAr
MTU4OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgRXhwcmVzc2lvbkVycm9yQ2xhc3NpZmllciog
bV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyOwogICAgIGJvb2wgbV9pc0V2YWxDb250ZXh0Owog
ICAgIGJvb2wgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0
ZW1lbnQ7CisgICAgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAg
ICAgCiAgICAgc3RydWN0IERlcHRoTWFuYWdlciB7CiAgICAgICAgIERlcHRoTWFuYWdlcihpbnQq
IGRlcHRoKQpAQCAtMTY5Nyw3ICsxNjYzLDggQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX3NvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+aW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVy
ZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShtX21vZHVsZVNjb3Bl
RGF0YSkpOwogICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1f
bGV4ZXItPmxpbmVOdW1iZXIoKSwgbV9sZXhlci0+Y3VycmVudE9mZnNldCgpLCBtX2xleGVyLT5j
dXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICByZXN1bHQtPnNldEVuZE9mZnNldCht
X2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNlZC1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzg3OTY1NDk1
YzAwYzY0OTYzMjk1ZWRhNGQ3OWRkYzk1NTdiNDM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNlZC1uYW1lcy5qcwpAQCAtMCwwICsx
LDggQEAKK2ltcG9ydCB7IGEsIGIsIGNoYW5nZSB9IGZyb20gJ2FsaWFzZWQtbmFtZXMvbWFpbi5q
cycKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20gIi4vcmVzb3VyY2VzL2Fz
c2VydC5qcyI7CisKK3Nob3VsZEJlKGEsIDQyKTsKK3Nob3VsZEJlKGIsIDQyKTsKK2NoYW5nZSg0
MDApOworc2hvdWxkQmUoYSwgNDAwKTsKK3Nob3VsZEJlKGIsIDQwMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzL21haW4uanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzL21haW4u
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzAzM2NmOWRhZWVjYmJlODYyOTMyZjg0MGI4NjEzNTJlNjIxODY4Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2Fs
aWFzZWQtbmFtZXMvbWFpbi5qcwpAQCAtMCwwICsxLDEwIEBACit2YXIgYSA9IDQyOworCitmdW5j
dGlvbiBjaGFuZ2UodmFsdWUpCit7CisgICAgYSA9IHZhbHVlOworfQorCitleHBvcnQgeyBhIH0K
K2V4cG9ydCB7IGEgYXMgYiB9CitleHBvcnQgeyBjaGFuZ2UgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3Rlc3QyNjIueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy90ZXN0MjYyLnlhbWwKaW5kZXggODQ1ZDU0ZDBhOTEzMzgzODI5YjhjNTBjODFkYjAw
NTQyZjUyZTUwZS4uY2JhOTQ5YzY2NDZmMmNjNWUxNGE5NTUwNTVmMjU5YWE5Yjk4ZmJlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3Rlc3QyNjIueWFtbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdGVzdDI2Mi55YW1sCkBAIC03MTIzMCw3ICs3MTIz
MCw3IEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9pbnN0bi1z
dGFyLXByb3BzLW5ybWwtc3Rhcl9GSVhUVVJFLmpzCiAgIGNtZDogcHJlcGFyZVRlc3QyNjJGaXh0
dXJlCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9pbnN0bi1zdGFy
LXByb3BzLW5ybWwuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
Om1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3Ru
LXN0YXItc3Rhci1jeWNsZS0yX0ZJWFRVUkUuanMKICAgY21kOiBwcmVwYXJlVGVzdDI2MkZpeHR1
cmUKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLXN0YXIt
c3Rhci1jeWNsZS1pbmRpcmVjdC14X0ZJWFRVUkUuanMKQEAgLTcxMjU2LDExICs3MTI1NiwxMSBA
QAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL1N5
bWJvbC5pdGVyYXRvci90aGlzLXZhbC1ub3QtbnMuanMKICAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL1N5bWJvbC5pdGVyYXRvci92YWx1
ZXMtYmluZGluZy10eXBlcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL1N5bWJvbC5pdGVyYXRvci92YWx1ZXMt
YmluZGluZy10eXBlc18uanMKICAgY21kOiBwcmVwYXJlVGVzdDI2MkZpeHR1cmUKIC0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9TeW1ib2wuaXRlcmF0
b3IvdmFsdWVzLW9yZGVyLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLnRvU3RyaW5nVGFnLmpzCiAg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxl
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2lu
dGVybmFscy9kZWZpbmUtb3duLXByb3BlcnR5LmpzCkBAIC03MTMwOCwxMSArNzEzMDgsMTEgQEAK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRl
cm5hbHMvaXMtZXh0ZW5zaWJsZS5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRlcm5hbHMvb3duLXByb3BlcnR5LWtleXMt
YmluZGluZy10eXBlcy5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9vd24tcHJvcGVydHkta2V5
cy1iaW5kaW5nLXR5cGVzX0ZJWFRVUkUuanMKICAgY21kOiBwcmVwYXJlVGVzdDI2MkZpeHR1cmUK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRl
cm5hbHMvb3duLXByb3BlcnR5LWtleXMtc29ydC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9w
cmV2ZW50LWV4dGVuc2lvbnMuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxzL3NldC1wcm90b3R5cGUtb2YuanMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284953</attachid>
            <date>2016-07-30 13:12:36 -0700</date>
            <delta_ts>2016-07-31 00:04:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160343-20160731051119.patch</filename>
            <type>text/plain</type>
            <size>43712</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTgzNmMzYzQ2MTllMGZlN2I4ZDVhNDIwMTExNzM4OTAzZDdlZmQyLi43MjFhOTA3NzdmNWI1NjBi
NmU0NjZjYjJlOTZhMDFiNGI5MDAyYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNi0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGUgYmluZGluZyBjYW4gYmUgZXhwb3J0ZWQgYnkg
bXVsdGlwbGUgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MDM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisK
KyAgICAgICAgRVM2IE1vZHVsZSBjYW4gZXhwb3J0IHRoZSBzYW1lIGxvY2FsIGJpbmRpbmcgYnkg
dXNpbmcgbXVsdGlwbGUgbmFtZXMuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAg
ICBgYGAKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IDQyOworCisgICAgICAgICAgICBleHBvcnQg
eyB2YWx1ZSB9OworICAgICAgICAgICAgZXhwb3J0IHsgdmFsdWUgYXMgdmFsdWUyIH07CisgICAg
ICAgICAgICBgYGAKKworICAgICAgICBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3dlZCBvbmUgbG9j
YWwgYmluZGluZyB0byBiZSBleHBvcnRlZCB3aXRoIG9uZSBuYW1lLiBTbywgaW4gdGhlIGFib3Zl
IGNhc2UsCisgICAgICAgIHRoZSBsb2NhbCBiaW5kaW5nICJ2YWx1ZSIgaXMgZXhwb3J0ZWQgYXMg
InZhbHVlMiIgYW5kICJ2YWx1ZSIgbmFtZSBpcyBub3QgZXhwb3J0ZWQuIFRoaXMgaXMgd3Jvbmcu
CisKKyAgICAgICAgVG8gZml4IHRoaXMgaXNzdWUsIHdlIGNvbGxlY3QgdGhlIGNvcnJlc3BvbmRl
bmNlIChsb2NhbCBuYW1lID0+IGV4cG9ydGVkIG5hbWUpIHRvIHRoZSBsb2NhbCBiaW5kaW5ncwor
ICAgICAgICBpbiB0aGUgcGFyc2VyLiBQcmV2aW91c2x5LCB3ZSBvbmx5IG1haW50YWluZWQgdGhl
IGV4cG9ydGVkIGxvY2FsIGJpbmRpbmdzIGluIHRoZSBwYXJzZXIuIEFuZCB1dGlsaXplCisgICAg
ICAgIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBjcmVhdGluZyB0aGUgZXhwb3J0IGVudHJpZXMgaW4g
TW9kdWxlQW5hbHl6ZXIuCisKKyAgICAgICAgQW5kIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyBNb2R1
bGVTY29wZURhdGEgZnJvbSB0aGUgU2NvcGUgb2JqZWN0IHRvIHRoZSBQYXJzZXIgY2xhc3Mgc2lu
Y2UgZXhwb3J0ZWQKKyAgICAgICAgbmFtZXMgc2hvdWxkIGJlIG1hbmFnZWQgcGVyLW1vZHVsZSwg
bm90IHBlci1zY29wZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBzZXZlcmFsIHRlc3Qy
NjIgZmFpbHVyZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6Ok1v
ZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4
cG9ydGVkQmluZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpk
ZWNsYXJlRXhwb3J0QWxpYXMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5oOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVTY29wZURhdGEuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oLgorICAgICAgICAo
SlNDOjpNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6ZXhwb3J0ZWRCaW5kaW5ncyk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6
ZXhwb3J0TmFtZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6ZXhwb3J0QmluZGlu
Zyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5v
ZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVs
ZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9O
b2Rlcy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6bW9kdWxlU2NvcGVEYXRh
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwb3J0TmFtZSk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRlZEJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRh
OjpleHBvcnROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRCaW5kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNjb3BlOjptb2R1bGVTY29wZURhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL21v
ZHVsZXMvYWxpYXNlZC1uYW1lcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9h
bGlhc2VkLW5hbWVzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAg
KiB0ZXN0cy90ZXN0MjYyLnlhbWw6CisKIDIwMTYtMDctMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQnlWYWxJbmZvIGlzIG9u
bHkgdXNlZCBpbiBKSVQgZW5hYmxlZCBlbnZpcm9ubWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOTU4ZGVhN2VkNzdjNWQ5NTg3MWEzNzIyMjQxYWQ4ODI0MmRmMGIxNC4uZWYw
YjFiYjU4N2Q5YzQxM2U0Njc2YjkwYjA0YzRmOGUzYTQ0YThhNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIxMzAsNiArMjEzMCw3IEBACiAJCUZFRDk0RjJFMTcxRTNFMjMwMEJF
NzdBNCAvKiBXYXRjaGRvZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUQ5NEYyQjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwICovOyB9
OwogCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRDk0RjJDMTcxRTNFMjMwMEJFNzdB
NCAvKiBXYXRjaGRvZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFRjA0MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQw
NTAxQUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CisJCUE3
OUQzRUQ5QzUwNjRERDBBODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4
QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00NDE3LDYgKzQ0MTgsNyBAQAog
CQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dU
ZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29t
cGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAw
QkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5k
U3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDAwQkVBRjBERjYwNDQ4
MUFGNkFCNjhDIC8qIE1vZHVsZVNjb3BlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNb2R1bGVTY29wZURhdGEuaDsgcGF0aCA9IE1vZHVsZVNjb3BlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC01NTgy
LDYgKzU1ODQsNyBAQAogCQkJCUE3QTdFRTc3MTFCOThCOEQwMDY1QTE0RiAvKiBTeW50YXhDaGVj
a2VyLmggKi8sCiAJCQkJNzlFRTBCRkQxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwICovLAogCQkJCTc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVu
dmlyb25tZW50LmggKi8sCisJCQkJMDAwQkVBRjBERjYwNDQ4MUFGNkFCNjhDIC8qIE1vZHVsZVNj
b3BlRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtODIyOSw2ICs4MjMyLDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MkQ4NUI3MUMwRDY1
MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTc5RDNFRDlDNTA2NEREMEE4NDY2QTNBIC8qIE1vZHVsZVNjb3Bl
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IDI5NjY4ZTkyODYwYTg4YWYzYzE4YWZmZGMyNWM0YWJk
MTYzMmM5ZmEuLjFjNzAzNjY1M2Q5YzZmNmY2MjA0MGRiYjQxZGQ1Yzg1N2MyY2NiMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJNb2R1
bGVTY29wZURhdGEuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDIsMjAgKzQzLDcgQEAgTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb24KIHsKIH0KIAot
SWRlbnRpZmllciBNb2R1bGVBbmFseXplcjo6ZXhwb3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50KQotewotICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBt
X2FsaWFzTWFwLmZpbmQoaWRlbnQpOwotICAgIGlmIChpdGVyYXRvciAhPSBtX2FsaWFzTWFwLmVu
ZCgpKQotICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwotICAgIHJldHVybiBJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSgpLCBpZGVudC5nZXQoKSk7Ci19Ci0KLXZvaWQgTW9kdWxlQW5hbHl6
ZXI6OmRlY2xhcmVFeHBvcnRBbGlhcyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCi17Ci0gICAgbV9hbGlhc01hcC5hZGQobG9jYWxOYW1l
LmltcGwoKSwgZXhwb3J0TmFtZSk7Ci19Ci0KLXZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZh
cmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkKK3ZvaWQgTW9kdWxlQW5hbHl6ZXI6
OmV4cG9ydFZhcmlhYmxlKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSwgY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnkmIHZhcmlhYmxlKQogewogICAgIC8vIEluIHRoZSBwYXJzZXIsIHdlIGFs
cmVhZHkgbWFya2VkIHRoZSB2YXJpYWJsZXMgYXMgRXhwb3J0ZWQgYW5kIEltcG9ydGVkLgogICAg
IC8vIEJ5IGxldmVyYWdpbmcgdGhpcyBpbmZvcm1hdGlvbiwgd2UgY29sbGVjdCB0aGUgaW5mb3Jt
YXRpb24gdGhhdCBpcyBuZWVkZWQKQEAgLTc0LDExICs2MiwxMCBAQCB2b2lkIE1vZHVsZUFuYWx5
emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2Nh
bE5hbWUsCiAgICAgaWYgKCF2YXJpYWJsZS5pc0V4cG9ydGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IElkZW50aWZpZXIgZXhwb3J0TmFtZSA9IGV4cG9ydGVkQmluZGluZyhsb2Nh
bE5hbWUpOwotCiAgICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlLgogICAgIGlm
ICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7Ci0gICAgICAgIG1vZHVsZVJlY29yZCgpLT5hZGRF
eHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGV4cG9y
dE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSkpOworICAg
ICAgICBmb3IgKGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5tb2R1bGVTY29w
ZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkpCisgICAgICAg
ICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpjcmVhdGVMb2NhbChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGV4cG9ydE5hbWUu
Z2V0KCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODksNyArNzYsOCBAQCB2b2lkIE1vZHVsZUFuYWx5
emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2Nh
bE5hbWUsCiAgICAgICAgIC8vCiAgICAgICAgIC8vIFNlYyAxNS4yLjEuMTYuMSBzdGVwIDExLWEt
aWktMi1iIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXBhcnNlbW9kdWxlCiAg
ICAgICAgIC8vIE5hbWVzcGFjZSBleHBvcnQgaXMgaGFuZGxlZCBhcyBsb2NhbCBleHBvcnQgc2lu
Y2UgYSBuYW1lc3BhY2Ugb2JqZWN0IGJpbmRpbmcgaXRzZWxmIGlzIGltcGxlbWVudGVkIGFzIGEg
bG9jYWwgYmluZGluZy4KLSAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoZXhwb3J0TmFtZSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZChtX3ZtLCBsb2NhbE5hbWUuZ2V0KCkpKSk7CisgICAgICAgIGZvciAoYXV0
byYgZXhwb3J0TmFtZSA6IG1vZHVsZVByb2dyYW1Ob2RlLm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9y
dGVkQmluZGluZ3MoKS5nZXQobG9jYWxOYW1lLmdldCgpKSkKKyAgICAgICAgICAgIG1vZHVsZVJl
Y29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0
ZUxvY2FsKElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgZXhwb3J0TmFtZS5nZXQoKSksIElkZW50
aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgpKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05OSw3ICs4Nyw4IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZh
cmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICBP
cHRpb25hbDxKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkg
PSBtb2R1bGVSZWNvcmQoKS0+dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKICAg
ICBBU1NFUlQob3B0aW9uYWxJbXBvcnRFbnRyeSk7CiAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6
OkltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwotICAgIG1v
ZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZUluZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUsIGltcG9y
dEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKKyAgICBmb3IgKGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1
bGVQcm9ncmFtTm9kZS5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxv
Y2FsTmFtZS5nZXQoKSkpCisgICAgICAgIG1vZHVsZVJlY29yZCgpLT5hZGRFeHBvcnRFbnRyeShK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KElkZW50aWZpZXI6OmZy
b21VaWQobV92bSwgZXhwb3J0TmFtZS5nZXQoKSksIGltcG9ydEVudHJ5LmltcG9ydE5hbWUsIGlt
cG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKIH0KIAogCkBAIC0xNDgsMTAgKzEzNywxMCBAQCBK
U01vZHVsZVJlY29yZCogTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUm
IG1vZHVsZVByb2dyYW1Ob2RlKQogICAgIC8vCiAgICAgLy8gICAgIGV4cG9ydCAqIGZyb20gIm1v
ZCIKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVJlY29yZC0+ZGVjbGFyZWRW
YXJpYWJsZXMoKSkKLSAgICAgICAgZXhwb3J0VmFyaWFibGUocGFpci5rZXksIHBhaXIudmFsdWUp
OworICAgICAgICBleHBvcnRWYXJpYWJsZShtb2R1bGVQcm9ncmFtTm9kZSwgcGFpci5rZXksIHBh
aXIudmFsdWUpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9tb2R1bGVSZWNvcmQt
PmxleGljYWxWYXJpYWJsZXMoKSkKLSAgICAgICAgZXhwb3J0VmFyaWFibGUocGFpci5rZXksIHBh
aXIudmFsdWUpOworICAgICAgICBleHBvcnRWYXJpYWJsZShtb2R1bGVQcm9ncmFtTm9kZSwgcGFp
ci5rZXksIHBhaXIudmFsdWUpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVSZWNvcmQo
KSkKICAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaAppbmRleCA3MDgzY2E5MDk5MThlZmQyM2ViYTFh
M2Q1YmI5YzNmNjU3MzM4ZTA1Li5iYjNjNTNmY2JiNDQwMTk3OTJmYmJmZjU2ODJhOTVjZWJiMzRi
MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5
emVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5o
CkBAIC00NCwxOCArNDQsMTEgQEAgY2xhc3MgTW9kdWxlQW5hbHl6ZXIgewogCiAgICAgSlNNb2R1
bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdldCgpOyB9
CiAKLSAgICB2b2lkIGRlY2xhcmVFeHBvcnRBbGlhcyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpOwotCiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyLCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSWRlbnRp
ZmllckFsaWFzTWFwOwotCi0gICAgdm9pZCBleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7Ci0KLSAg
ICBJZGVudGlmaWVyIGV4cG9ydGVkQmluZGluZyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudCk7CisgICAgdm9pZCBleHBvcnRWYXJpYWJsZShNb2R1bGVQcm9ncmFtTm9kZSYs
IGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkmKTsKIAogICAgIFZNKiBtX3ZtOwogICAgIFN0cm9uZzxKU01vZHVsZVJlY29yZD4g
bV9tb2R1bGVSZWNvcmQ7Ci0gICAgSWRlbnRpZmllckFsaWFzTWFwIG1fYWxpYXNNYXA7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlU2NvcGVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZVNjb3BlRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjFhZjQ4MzhmMTgzMmEyYWQyZGExMzUzNjhl
MTNmOTVmMTZjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZVNjb3BlRGF0YS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgTW9kdWxlU2NvcGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlU2Nv
cGVEYXRhPiB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGVTY29wZURhdGEpOworV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJTZXQsIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJZGVudGlmaWVyQWxpYXNNYXA7CisK
KyAgICBzdGF0aWMgUmVmPE1vZHVsZVNjb3BlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2R1bGVTY29wZURhdGEpOyB9CisKKyAgICBjb25zdCBJZGVudGlmaWVyQWxpYXNN
YXAmIGV4cG9ydGVkQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydGVkQmluZGluZ3M7
IH0KKworICAgIGJvb2wgZXhwb3J0TmFtZShjb25zdCBJZGVudGlmaWVyJiBleHBvcnRlZE5hbWUp
CisgICAgeworICAgICAgICByZXR1cm4gbV9leHBvcnRlZE5hbWVzLmFkZChleHBvcnRlZE5hbWUu
aW1wbCgpKS5pc05ld0VudHJ5OworICAgIH0KKworICAgIHZvaWQgZXhwb3J0QmluZGluZyhjb25z
dCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydGVkTmFtZSkK
KyAgICB7CisgICAgICAgIG1fZXhwb3J0ZWRCaW5kaW5ncy5hZGQobG9jYWxOYW1lLmltcGwoKSwg
SWRlbnRpZmllclNldCgpKS5pdGVyYXRvci0+dmFsdWUuYWRkKGV4cG9ydGVkTmFtZS5pbXBsKCkp
OworICAgIH0KKworICAgIHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2Nh
bE5hbWUpCisgICAgeworICAgICAgICBleHBvcnRCaW5kaW5nKGxvY2FsTmFtZSwgbG9jYWxOYW1l
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9kdWxlU2NvcGVEYXRhKCkgPSBkZWZhdWx0Owor
CisgICAgSWRlbnRpZmllclNldCBtX2V4cG9ydGVkTmFtZXMgeyB9OworICAgIElkZW50aWZpZXJB
bGlhc01hcCBtX2V4cG9ydGVkQmluZGluZ3MgeyB9OworfTsKKworfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggNjNjNzMyZDBhYzE5MGY1YTU5
MmNiMmIzZTRlMjkzNjkxNTY0MGJhMS4uNGY5ZmEyZjk1YTc3ZjMxY2NjMzg1ZjU2ODI3MTYyZjVi
YWQyMDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNv
bnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Qcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoUGFy
c2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ss
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBs
UHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyos
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBw
YXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWdu
ZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1l
bnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNs
b3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9u
Q29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikKICAgICA6IFNjb3BlTm9kZShwYXJzZXJB
cmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhckVu
dmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUo
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9u
Q29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29s
dW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTI2LDE2ICsxMjYsMTcgQEAg
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBzdGFydEwKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIE1vZHVsZVByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1v
ZHVsZVByb2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJl
bmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJF
bnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2Rl
SG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitN
b2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFy
ZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFy
RW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJvbm1l
bnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9k
ZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVh
dHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBS
ZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmIG1vZHVsZVNjb3BlRGF0YSkKICAgICA6IFNjb3BlTm9k
ZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwgY2hpbGRy
ZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMs
IFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJv
d0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0Q29sdW1u
KHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICwgbV9tb2R1
bGVTY29wZURhdGEoKldURk1vdmUobW9kdWxlU2NvcGVEYXRhKSkKIHsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLUV2YWxOb2RlOjpFdmFsTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBlbmRMb2NhdGlvbiwgdW5zaWduZWQsIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVu
dHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJFbnZpcm9ubWVudCwgRnVuY3Rp
b25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxl
cywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucywg
RnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVu
Y3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitFdmFsTm9kZTo6RXZhbE5vZGUo
UGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNp
Z25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9u
bWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYg
c2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKQogICAgIDogU2NvcGVOb2RlKHBhcnNl
ckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFy
RW52aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNhbFZhcmlhYmxlcywgV1RGTW92
ZShzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVzLCBpbm5lckFycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVt
bikKIHsKQEAgLTE4MSw3ICsxODIsNyBAQCB2b2lkIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpzZXRF
bmRQb3NpdGlvbihKU1RleHRQb3NpdGlvbiBwb3NpdGlvbikKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1GdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVt
biwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJFbnZp
cm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2RlSG9p
c3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCitGdW5jdGlvbk5vZGU6OkZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYgcGFyc2Vy
QXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVu
ZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2
YXJFbnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYmIGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9u
bWVudCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlN
b2RlSG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIElubmVyQXJy
b3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpCiAgICAgOiBTY29wZU5v
ZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2VDb2RlLCBj
aGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNhbFZhcmlh
YmxlcywgV1RGTW92ZShzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVzLCBpbm5l
ckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxZTA4ODI3OWZjNzI0Y2E5M2IyYjYzM2Zm
MDc5Y2MzYWUzMDE0ZjZhLi42N2FmNGZjOGFjM2VkYzUyOWQyODRhNTE1ZTE1YjAzNzYxNmE1YjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC01Miw2ICs1Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTU2NvcGU7CiAgICAgY2xhc3MgU2NvcGVOb2RlOwog
ICAgIGNsYXNzIE1vZHVsZUFuYWx5emVyOworICAgIGNsYXNzIE1vZHVsZVNjb3BlRGF0YTsKIAog
ICAgIHR5cGVkZWYgU21hbGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiBVbmlxdWVkU3RyaW5n
SW1wbFB0clNldDsKIApAQCAtMTY0NCw3ICsxNjQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0
YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVu
c2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50Jiwg
RnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQ
dHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0
dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
KyAgICAgICAgUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4s
IHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50
JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0lt
cGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
LCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKTsKIAogICAgICAgICB1bnNpZ25lZCBzdGFydENv
bHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQg
ZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KQEAgLTE2NTksNyArMTY2
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEV2YWxOb2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAgICAg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1
bW47IH0KQEAgLTE2NzQsMTcgKzE2NzUsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBNb2R1bGVQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgTW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVudmlyb25t
ZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVlZFN0cmlu
Z0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKTsKKyAgICAgICAgTW9kdWxlUHJvZ3JhbU5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQg
c3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJs
ZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5p
cXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKTsKIAogICAgICAgICB1bnNp
Z25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAg
ICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KIAog
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAorICAg
ICAgICBNb2R1bGVTY29wZURhdGEmIG1vZHVsZVNjb3BlRGF0YSgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX21vZHVsZVNjb3BlRGF0YTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAg
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4g
bV9tb2R1bGVTY29wZURhdGE7CiAgICAgfTsKIAogICAgIGNsYXNzIE1vZHVsZU5hbWVOb2RlIDog
cHVibGljIE5vZGUgewpAQCAtMTkxNSw3ICsxOTIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBGdW5jdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEZ1bmN0aW9uTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJv
bm1lbnQmLCBGdW5jdGlvblN0YWNrJiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBVbmlxdWVkU3Ry
aW5nSW1wbFB0clNldCYmLCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwg
Q29kZUZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOworICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJlbmEmLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgdW5zaWduZWQgc3Rh
cnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVudmlyb25tZW50JiwgVW5pcXVl
ZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiYmKTsKIAogICAgICAgICBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVN
b2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1
bGUuY3BwCmluZGV4IGVkNDYxZGEyNjgzNGZiMzNjOTQ0MDIxNGE5OTVlNDVjOGE4MTk0NTUuLjQy
NmU1M2I5ZDFkNzdiMDBmNDI5ZjliNzQ0OWFkZTQxMmQ1ZDU5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKQEAgLTY1LDkg
KzY1LDggQEAgdm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9k
dWxlQW5hbHl6ZXImIGFuYWx5emVyKQogICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLT5hZGRT
dGFyRXhwb3J0RW50cnkobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwogfQogCi12b2lkIEV4
cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQordm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJikKIHsKLSAgICBhbmFseXplci5kZWNsYXJlRXhwb3J0QWxpYXMo
bV9sb2NhbE5hbWUsIGFuYWx5emVyLnZtKCkucHJvcGVydHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQp
OwogfQogCiB2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJikKQEAgLTg2LDExICs4NSw3IEBAIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJh
dGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogICAgICAg
ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBubyBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhcmUgaW1wb3J0
ZWQgaW50byB0aGUgY3VycmVudCBtb2R1bGUuCiAgICAgICAgICAgICAvLyAidiIgaW5kaXJlY3Rs
eSBwb2ludHMgdGhlIGJpbmRpbmcgaW4gIm1vZCIuCiAgICAgICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5Ojpj
cmVhdGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2Fs
TmFtZSgpLCBtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSkpOwotICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSAhPSBz
cGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpKQotICAgICAgICAgICAgYW5hbHl6ZXIuZGVjbGFyZUV4
cG9ydEFsaWFzKHNwZWNpZmllci0+bG9jYWxOYW1lKCksIHNwZWNpZmllci0+ZXhwb3J0ZWROYW1l
KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IDI0ZDk0MzY2MWMyY2UzYzg2YjI1YjNiZmUwMTU5OGZjNzU4ZjQ3MjkuLjRhMWMxZTU4OGZm
NGQ1NDU3NzBmMjQ2ODNjYzNiM2FmNTM4ZTU0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTIzNCw2ICsyMzQsOSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFy
c2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2Rl
CiAgICAgaWYgKHN0cmljdE1vZGUgPT0gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAg
ICAgIHNjb3BlLT5zZXRTdHJpY3RNb2RlKCk7CiAKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKQorICAgICAgICBtX21vZHVsZVNjb3BlRGF0YSA9IE1v
ZHVsZVNjb3BlRGF0YTo6Y3JlYXRlKCk7CisKICAgICBuZXh0KCk7CiB9CiAKQEAgLTQ3Niw3ICs0
NzksOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTbwogCiAgICAgcHJvcGFnYXRlRXJyb3IoKTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgdWlkIDogY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3Bl
RGF0YSgpLmV4cG9ydGVkQmluZGluZ3MoKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fbW9kdWxlU2NvcGVEYXRhLT5leHBvcnRlZEJpbmRpbmdzKCkpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgdWlkID0gcGFpci5rZXk7CiAgICAgICAgIGlmIChjdXJyZW50U2NvcGUoKS0+aGFzRGVj
bGFyZWRWYXJpYWJsZSh1aWQpKSB7CiAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+ZGVjbGFy
ZWRWYXJpYWJsZXMoKS5tYXJrVmFyaWFibGVBc0V4cG9ydGVkKHVpZCk7CiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTcwOCw3ICs3MTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhw
b3J0ZWQpIHsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUo
Km5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBuYW1lLT5pbXBsKCks
ICInIik7Ci0gICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgp
LmV4cG9ydEJpbmRpbmcoKm5hbWUpOworICAgICAgICAgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRh
LT5leHBvcnRCaW5kaW5nKCpuYW1lKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGhhc0luaXRpYWxpemVyKSB7CkBAIC04MjgsNyArODMyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUIKIAogICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9ydFR5cGU6OkV4cG9ydGVkKSB7CiAg
ICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZShuYW1lKSwgIkNhbm5vdCBleHBv
cnQgYSBkdXBsaWNhdGUgbmFtZSAnIiwgbmFtZS5pbXBsKCksICInIik7Ci0gICAgICAgIGN1cnJl
bnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKG5hbWUpOworICAgICAg
ICBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZyhuYW1lKTsKICAgICB9CiAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKHRva2VuLm1fbG9jYXRpb24sIG5hbWUs
IHRva2VuLm1fc3RhcnRQb3NpdGlvbiwgdG9rZW4ubV9lbmRQb3NpdGlvbiwgYmluZGluZ0NvbnRl
eHQpOwogfQpAQCAtMjIyOSw3ICsyMjMzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKICAg
ICAgICAgaW50ZXJuYWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJDYW5ub3QgZGVjbGFyZSBhIGZ1
bmN0aW9uIHRoYXQgc2hhZG93cyBhIGxldC9jb25zdC9jbGFzcy9mdW5jdGlvbiB2YXJpYWJsZSAn
IiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICBp
ZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgewogICAgICAgICBzZW1hbnRp
Y0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmZ1bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5vdCBleHBv
cnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFtZTogJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBs
KCksICInIik7Ci0gICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBv
cnRCaW5kaW5nKCpmdW5jdGlvbkluZm8ubmFtZSk7CisgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRh
LT5leHBvcnRCaW5kaW5nKCpmdW5jdGlvbkluZm8ubmFtZSk7CiAgICAgfQogCiAgICAgVHJlZVN0
YXRlbWVudCByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxvY2F0aW9u
LCBmdW5jdGlvbkluZm8pOwpAQCAtMjI1NSw3ICsyMjU5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVj
bGFyYXQKICAgICAgICAgaW50ZXJuYWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJDYW5ub3QgZGVj
bGFyZSBhIGNsYXNzIHR3aWNlOiAnIiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsKICAg
ICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgewogICAgICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmluZm8uY2xhc3NOYW1lKSwgIkNhbm5vdCBleHBv
cnQgYSBkdXBsaWNhdGUgY2xhc3MgbmFtZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICIn
Iik7Ci0gICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5k
aW5nKCppbmZvLmNsYXNzTmFtZSk7CisgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhLT5leHBvcnRC
aW5kaW5nKCppbmZvLmNsYXNzTmFtZSk7CiAgICAgfQogCiAgICAgSlNUZXh0UG9zaXRpb24gY2xh
c3NFbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwpAQCAtMjc4Niw3ICsyNzkwLDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUltcG9ydERlY2xhcmEKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9y
dFNwZWNpZmllciBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIFZlY3Rvcjxjb25zdCBJZGVudGlmaWVyKj4mIG1heWJlTG9jYWxOYW1l
cywgYm9vbCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0
b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+JiBtYXli
ZUV4cG9ydGVkTG9jYWxOYW1lcywgYm9vbCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MpCiB7
CiAgICAgLy8gRXhwb3J0U3BlY2lmaWVyIDoKICAgICAvLyBJZGVudGlmaWVyTmFtZQpAQCAtMjgw
OCw3ICsyODEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAgICB9CiAKICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmV4cG9ydGVkTmFtZSksICJDYW5ub3QgZXhwb3J0
IGEgZHVwbGljYXRlIG5hbWUgJyIsIGV4cG9ydGVkTmFtZS0+aW1wbCgpLCAiJyIpOwotICAgIG1h
eWJlTG9jYWxOYW1lcy5hcHBlbmQobG9jYWxOYW1lKTsKKyAgICBtYXliZUV4cG9ydGVkTG9jYWxO
YW1lcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIobG9jYWxOYW1lLCBleHBvcnRlZE5hbWUpKTsKICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTG9jYXRpb24s
ICpsb2NhbE5hbWUsICpleHBvcnRlZE5hbWUpOwogfQogCkBAIC0yODk2LDcgKzI5MDAsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICBmYWlsSWZGYWxzZShyZXN1bHQsICJDYW5u
b3QgcGFyc2UgdGhlIGRlY2xhcmF0aW9uIik7CiAKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxz
ZShleHBvcnROYW1lKG1fdm0tPnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKSwgIk9ubHkg
b25lICdkZWZhdWx0JyBleHBvcnQgaXMgYWxsb3dlZCIpOwotICAgICAgICBjdXJyZW50U2NvcGUo
KS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqbG9jYWxOYW1lKTsKKyAgICAgICAg
bV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSwgbV92bS0+cHJvcGVy
dHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVF
eHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIHJlc3VsdCwgKmxvY2FsTmFt
ZSk7CiAgICAgfQogCkBAIC0yOTE2LDEyICsyOTIwLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNs
YXJhCiAgICAgICAgIG5leHQoKTsKIAogICAgICAgICBhdXRvIHNwZWNpZmllckxpc3QgPSBjb250
ZXh0LmNyZWF0ZUV4cG9ydFNwZWNpZmllckxpc3QoKTsKLSAgICAgICAgVmVjdG9yPGNvbnN0IElk
ZW50aWZpZXIqPiBtYXliZUxvY2FsTmFtZXM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Y29u
c3QgSWRlbnRpZmllciosIGNvbnN0IElkZW50aWZpZXIqPj4gbWF5YmVFeHBvcnRlZExvY2FsTmFt
ZXM7CiAKICAgICAgICAgYm9vbCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyA9IGZhbHNlOwog
ICAgICAgICB3aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgICAgICBmYWlsSWZG
YWxzZShtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSwgIkV4cGVjdGVkIGEgdmFyaWFibGUgbmFt
ZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwotICAgICAgICAgICAgYXV0byBzcGVjaWZp
ZXIgPSBwYXJzZUV4cG9ydFNwZWNpZmllcihjb250ZXh0LCBtYXliZUxvY2FsTmFtZXMsIGhhc0tl
eXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKKyAgICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFy
c2VFeHBvcnRTcGVjaWZpZXIoY29udGV4dCwgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGhhc0tl
eXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHNwZWNpZmll
ciwgIkNhbm5vdCBwYXJzZSB0aGUgbmFtZWQgZXhwb3J0Iik7CiAgICAgICAgICAgICBjb250ZXh0
LmFwcGVuZEV4cG9ydFNwZWNpZmllcihzcGVjaWZpZXJMaXN0LCBzcGVjaWZpZXIpOwogICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKENPTU1BKSkKQEAgLTI5NDcsOCArMjk1MSwxMSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBlZmZlY3Qgb24g
dGhlIGN1cnJlbnQgbW9kdWxlJ3Mgc2NvcGUuIEJ1dCwKICAgICAgICAgICAgIC8vICAgZXhwb3J0
IHsgQSwgQiwgQyBhcyBEIH0KICAgICAgICAgICAgIC8vIHdpbGwgcmVmZXJlbmNlIHRoZSBjdXJy
ZW50IG1vZHVsZSdzIGJpbmRpbmdzLgotICAgICAgICAgICAgZm9yIChjb25zdCBJZGVudGlmaWVy
KiBsb2NhbE5hbWUgOiBtYXliZUxvY2FsTmFtZXMpCi0gICAgICAgICAgICAgICAgY3VycmVudFNj
b3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmxvY2FsTmFtZSk7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcykg
eworICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA9IHBhaXIuZmly
c3Q7CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZXhwb3J0ZWROYW1lID0gcGFp
ci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgbV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJpbmRp
bmcoKmxvY2FsTmFtZSwgKmV4cG9ydGVkTmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0aW9uKGV4
cG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1bGVOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDI1Y2VjOTVhNzYxY2NkOGMyNjMzODM3MzBlYjA0ZTE1
Njk3MjBiYTIuLmEwMGI4MDQxZDI2NjZhNGMyNmNlYWM3NWNkY2U0MzhiMGI3MTVjOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IkxleGVyLmgiCisjaW5jbHVkZSAiTW9kdWxlU2NvcGVEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKICNpbmNsdWRlICJQYXJzZXJBcmVuYS5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCkBA
IC0xMjgsMjcgKzEyOSw2IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNJZGVudGlmaWVy
T3JLZXl3b3JkKGNvbnN0IEpTVG9rZW4mIHRva2VuKQogICAgIHJldHVybiB0b2tlbi5tX3R5cGUg
PT0gSURFTlQgfHwgdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZzsKIH0KIAotY2xhc3Mg
TW9kdWxlU2NvcGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlU2NvcGVEYXRhPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2R1bGVTY29wZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kdWxlU2NvcGVEYXRhKTsgfQotCi0gICAgY29uc3QgSWRlbnRpZmll
clNldCYgZXhwb3J0ZWRCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0ZWRCaW5kaW5n
czsgfQotCi0gICAgYm9vbCBleHBvcnROYW1lKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydGVkTmFt
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2V4cG9ydGVkTmFtZXMuYWRkKGV4cG9ydGVkTmFt
ZS5pbXBsKCkpLmlzTmV3RW50cnk7Ci0gICAgfQotCi0gICAgdm9pZCBleHBvcnRCaW5kaW5nKGNv
bnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkKLSAgICB7Ci0gICAgICAgIG1fZXhwb3J0ZWRCaW5k
aW5ncy5hZGQobG9jYWxOYW1lLmltcGwoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIElkZW50
aWZpZXJTZXQgbV9leHBvcnRlZE5hbWVzIHsgfTsKLSAgICBJZGVudGlmaWVyU2V0IG1fZXhwb3J0
ZWRCaW5kaW5ncyB7IH07Ci19OwotCiBzdHJ1Y3QgU2NvcGUgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjb3BlKTsKIApAQCAtMjE2LDcgKzE5Niw2IEBAIHN0cnVjdCBTY29wZSB7CiAgICAg
ICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKFdURk1vdmUob3RoZXIubV9sZXhpY2FsVmFyaWFibGVz
KSkKICAgICAgICAgLCBtX3VzZWRWYXJpYWJsZXMoV1RGTW92ZShvdGhlci5tX3VzZWRWYXJpYWJs
ZXMpKQogICAgICAgICAsIG1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzKFdURk1vdmUob3RoZXIu
bV9jbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZXMpKQotICAgICAgICAsIG1fbW9kdWxlU2NvcGVEYXRh
KFdURk1vdmUob3RoZXIubV9tb2R1bGVTY29wZURhdGEpKQogICAgICAgICAsIG1fZnVuY3Rpb25E
ZWNsYXJhdGlvbnMoV1RGTW92ZShvdGhlci5tX2Z1bmN0aW9uRGVjbGFyYXRpb25zKSkKICAgICB7
CiAgICAgfQpAQCAtMjc3LDExICsyNTYsOCBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgotICAg
ICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFu
YWx5emVNb2RlOgogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVN
b2RlOgotICAgICAgICAgICAgc2V0SXNNb2R1bGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzEzLDEyICsyODksNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAg
ICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOwogICAgIH0KIAotICAgIE1vZHVsZVNjb3BlRGF0
YSYgbW9kdWxlU2NvcGVEYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX21vZHVs
ZVNjb3BlRGF0YSk7Ci0gICAgICAgIHJldHVybiAqbV9tb2R1bGVTY29wZURhdGE7Ci0gICAgfQot
CiAgICAgdm9pZCBjb21wdXRlTGV4aWNhbGx5Q2FwdHVyZWRWYXJpYWJsZXNBbmRQdXJnZUNhbmRp
ZGF0ZXMoKQogICAgIHsKICAgICAgICAgLy8gQmVjYXVzZSB2YXJpYWJsZXMgbWF5IGJlIGRlZmlu
ZWQgYXQgYW55IHRpbWUgaW4gdGhlIHJhbmdlIG9mIGEgbGV4aWNhbCBzY29wZSwgd2UgbXVzdApA
QCAtNzMxLDExICs3MDEsNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICBtX2lzQXJyb3dGdW5j
dGlvbiA9IHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRJc01vZHVsZSgpCi0gICAgewotICAg
ICAgICBtX21vZHVsZVNjb3BlRGF0YSA9IE1vZHVsZVNjb3BlRGF0YTo6Y3JlYXRlKCk7Ci0gICAg
fQotCiAgICAgY29uc3QgVk0qIG1fdm07CiAgICAgYm9vbCBtX3NoYWRvd3NBcmd1bWVudHM7CiAg
ICAgYm9vbCBtX3VzZXNFdmFsOwpAQCAtNzcxLDcgKzczNiw2IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgVmVjdG9yPFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0LCA2PiBtX3VzZWRWYXJpYWJsZXM7CiAg
ICAgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQgbV9zbG9wcHlNb2RlSG9pc3RhYmxlRnVuY3Rpb25D
YW5kaWRhdGVzOwogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiBtX2Nsb3NlZFZhcmlh
YmxlQ2FuZGlkYXRlczsKLSAgICBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiBtX21vZHVsZVNjb3Bl
RGF0YTsKICAgICBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBtX2Z1bmN0aW9uRGVj
bGFyYXRpb25zOwogfTsKIApAQCAtMTE3Niw3ICsxMTQwLDggQEAgY2xhc3MgUGFyc2VyIHsKICAg
ICBib29sIGV4cG9ydE5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY3VycmVudFNjb3BlKCkuaW5kZXgoKSA9PSAwKTsKLSAgICAgICAgcmV0dXJuIGN1
cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnROYW1lKGlkZW50KTsKKyAgICAg
ICAgQVNTRVJUKG1fbW9kdWxlU2NvcGVEYXRhKTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlU2Nv
cGVEYXRhLT5leHBvcnROYW1lKGlkZW50KTsKICAgICB9CiAKICAgICBTY29wZVN0YWNrIG1fc2Nv
cGVTdGFjazsKQEAgLTE0NDIsNyArMTQwNyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lm
aWVyIHBhcnNlSW1wb3J0Q2xhdXNlSXRlbShUcmVlQnVpbGRlciYsIEltcG9ydFNwZWNpZmllclR5
cGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6Ok1vZHVsZU5hbWUgcGFyc2VNb2R1bGVOYW1lKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlSW1wb3J0RGVjbGFyYXRp
b24oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgcGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIFZlY3Rvcjxjb25zdCBJZGVudGlmaWVyKj4mIG1heWJlTG9jYWxO
YW1lcywgYm9vbCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBw
YXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFp
cjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExv
Y2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VFeHBvcnREZWNsYXJhdGlv
bihUcmVlQnVpbGRlciYpOwogCiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb25UeXBl
IHsgRXhwcmVzc2lvbiwgRGVjbGFyYXRpb24sIE1ldGhvZCB9OwpAQCAtMTYyMyw2ICsxNTg4LDcg
QEAgY2xhc3MgUGFyc2VyIHsKICAgICBFeHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyKiBtX2V4cHJl
c3Npb25FcnJvckNsYXNzaWZpZXI7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9v
bCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRpb25JblN0YXRlbWVudDsK
KyAgICBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiBtX21vZHVsZVNjb3BlRGF0YTsKICAgICAKICAg
ICBzdHJ1Y3QgRGVwdGhNYW5hZ2VyIHsKICAgICAgICAgRGVwdGhNYW5hZ2VyKGludCogZGVwdGgp
CkBAIC0xNjk3LDcgKzE2NjMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcygpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1fbW9kdWxlU2NvcGVEYXRhKSk7
CiAgICAgICAgIHJlc3VsdC0+c2V0TG9jKG1fc291cmNlLT5maXJzdExpbmUoKSwgbV9sZXhlci0+
bGluZU51bWJlcigpLCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCksIG1fbGV4ZXItPmN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0RW5kT2Zmc2V0KG1fbGV4ZXIt
PmN1cnJlbnRPZmZzZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL2FsaWFzZWQtbmFtZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjODc5NjU0OTVjMDBjNjQ5
NjMyOTVlZGE0ZDc5ZGRjOTU1N2I0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzLmpzCkBAIC0wLDAgKzEsOCBAQAor
aW1wb3J0IHsgYSwgYiwgY2hhbmdlIH0gZnJvbSAnYWxpYXNlZC1uYW1lcy9tYWluLmpzJworaW1w
b3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0Lmpz
IjsKKworc2hvdWxkQmUoYSwgNDIpOworc2hvdWxkQmUoYiwgNDIpOworY2hhbmdlKDQwMCk7Citz
aG91bGRCZShhLCA0MDApOworc2hvdWxkQmUoYiwgNDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2FsaWFzZWQtbmFtZXMvbWFpbi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2FsaWFzZWQtbmFtZXMvbWFpbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMDMzY2Y5ZGFlZWNiYmU4NjI5MzJmODQwYjg2MTM1MmU2MjE4Njg2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNlZC1u
YW1lcy9tYWluLmpzCkBAIC0wLDAgKzEsMTAgQEAKK3ZhciBhID0gNDI7CisKK2Z1bmN0aW9uIGNo
YW5nZSh2YWx1ZSkKK3sKKyAgICBhID0gdmFsdWU7Cit9CisKK2V4cG9ydCB7IGEgfQorZXhwb3J0
IHsgYSBhcyBiIH0KK2V4cG9ydCB7IGNoYW5nZSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvdGVzdDI2Mi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3Rlc3QyNjIueWFtbAppbmRleCA4NDVkNTRkMGE5MTMzODM4MjliOGM1MGM4MWRiMDA1NDJmNTJl
NTBlLi5jYmE5NDljNjY0NmYyY2M1ZTE0YTk1NTA1NWYyNTlhYTliOThmYmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdGVzdDI2Mi55YW1sCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTcxMjMwLDcgKzcxMjMwLDcgQEAK
IC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLXN0YXItcHJv
cHMtbnJtbC1zdGFyX0ZJWFRVUkUuanMKICAgY21kOiBwcmVwYXJlVGVzdDI2MkZpeHR1cmUKIC0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2luc3RuLXN0YXItcHJvcHMt
bnJtbC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1
bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxl
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tc3Rhci1z
dGFyLWN5Y2xlLTJfRklYVFVSRS5qcwogICBjbWQ6IHByZXBhcmVUZXN0MjYyRml4dHVyZQogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5zdG4tc3Rhci1zdGFyLWN5
Y2xlLWluZGlyZWN0LXhfRklYVFVSRS5qcwpAQCAtNzEyNTYsMTEgKzcxMjU2LDExIEBACiAtIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLml0
ZXJhdG9yL3RoaXMtdmFsLW5vdC1ucy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLml0ZXJhdG9yL3ZhbHVlcy1iaW5k
aW5nLXR5cGVzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLml0ZXJhdG9yL3ZhbHVlcy1iaW5kaW5n
LXR5cGVzXy5qcwogICBjbWQ6IHByZXBhcmVUZXN0MjYyRml4dHVyZQogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL1N5bWJvbC5pdGVyYXRvci92YWx1
ZXMtb3JkZXIuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9TeW1ib2wudG9TdHJpbmdUYWcuanMKICAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxz
L2RlZmluZS1vd24tcHJvcGVydHkuanMKQEAgLTcxMzA4LDExICs3MTMwOCwxMSBAQAogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9p
cy1leHRlbnNpYmxlLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
bW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9vd24tcHJvcGVydHkta2V5cy1iaW5kaW5n
LXR5cGVzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxzL293bi1wcm9wZXJ0eS1rZXlzLWJpbmRp
bmctdHlwZXNfRklYVFVSRS5qcwogICBjbWQ6IHByZXBhcmVUZXN0MjYyRml4dHVyZQogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9v
d24tcHJvcGVydHkta2V5cy1zb3J0LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxzL3ByZXZlbnQt
ZXh0ZW5zaW9ucy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21v
ZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRlcm5hbHMvc2V0LXByb3RvdHlwZS1vZi5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284962</attachid>
            <date>2016-07-31 00:04:49 -0700</date>
            <delta_ts>2016-07-31 00:05:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160343-20160731160331.patch</filename>
            <type>text/plain</type>
            <size>46520</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWRiZWJiY2JhMmIwNjc2NjAwMTNmZWE3YjcyMWMxZWU2MDkyZWQwLi5iOTgxM2Y0ZWJiNTUyMTM1
MDRkZjdhYWJmM2ZmYjkxNDc1YWUxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MyBAQAorMjAxNi0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGUgYmluZGluZyBjYW4gYmUgZXhwb3J0ZWQgYnkg
bXVsdGlwbGUgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MDM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisK
KyAgICAgICAgRVM2IE1vZHVsZSBjYW4gZXhwb3J0IHRoZSBzYW1lIGxvY2FsIGJpbmRpbmcgYnkg
dXNpbmcgbXVsdGlwbGUgbmFtZXMuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAg
ICBgYGAKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IDQyOworCisgICAgICAgICAgICBleHBvcnQg
eyB2YWx1ZSB9OworICAgICAgICAgICAgZXhwb3J0IHsgdmFsdWUgYXMgdmFsdWUyIH07CisgICAg
ICAgICAgICBgYGAKKworICAgICAgICBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3dlZCBvbmUgbG9j
YWwgYmluZGluZyB0byBiZSBleHBvcnRlZCB3aXRoIG9uZSBuYW1lLiBTbywgaW4gdGhlIGFib3Zl
IGNhc2UsCisgICAgICAgIHRoZSBsb2NhbCBiaW5kaW5nICJ2YWx1ZSIgaXMgZXhwb3J0ZWQgYXMg
InZhbHVlMiIgYW5kICJ2YWx1ZSIgbmFtZSBpcyBub3QgZXhwb3J0ZWQuIFRoaXMgaXMgd3Jvbmcu
CisKKyAgICAgICAgVG8gZml4IHRoaXMgaXNzdWUsIHdlIGNvbGxlY3QgdGhlIGNvcnJlc3BvbmRl
bmNlIChsb2NhbCBuYW1lID0+IGV4cG9ydGVkIG5hbWUpIHRvIHRoZSBsb2NhbCBiaW5kaW5ncwor
ICAgICAgICBpbiB0aGUgcGFyc2VyLiBQcmV2aW91c2x5LCB3ZSBvbmx5IG1haW50YWluZWQgdGhl
IGV4cG9ydGVkIGxvY2FsIGJpbmRpbmdzIGluIHRoZSBwYXJzZXIuIEFuZCB1dGlsaXplCisgICAg
ICAgIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBjcmVhdGluZyB0aGUgZXhwb3J0IGVudHJpZXMgaW4g
TW9kdWxlQW5hbHl6ZXIuCisKKyAgICAgICAgQW5kIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyBNb2R1
bGVTY29wZURhdGEgZnJvbSB0aGUgU2NvcGUgb2JqZWN0IHRvIHRoZSBQYXJzZXIgY2xhc3Mgc2lu
Y2UgZXhwb3J0ZWQKKyAgICAgICAgbmFtZXMgc2hvdWxkIGJlIG1hbmFnZWQgcGVyLW1vZHVsZSwg
bm90IHBlci1zY29wZS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBzZXZlcmFsIHRlc3Qy
NjIgZmFpbHVyZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6Ok1v
ZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4
cG9ydGVkQmluZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpk
ZWNsYXJlRXhwb3J0QWxpYXMpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5oOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVTY29wZURhdGEuaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oLgorICAgICAgICAo
SlNDOjpNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6ZXhwb3J0ZWRCaW5kaW5ncyk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6
ZXhwb3J0TmFtZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3BlRGF0YTo6ZXhwb3J0QmluZGlu
Zyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5v
ZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVs
ZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9O
b2Rlcy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6bW9kdWxlU2NvcGVEYXRh
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OlBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwb3J0TmFtZSk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNjb3Bl
RGF0YTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRlZEJpbmRpbmdzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRh
OjpleHBvcnROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlU2NvcGVEYXRhOjpl
eHBvcnRCaW5kaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlNjb3BlOjptb2R1bGVTY29wZURhdGEpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL21v
ZHVsZXMvYWxpYXNlZC1uYW1lcy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9h
bGlhc2VkLW5hbWVzL21haW4uanM6IEFkZGVkLgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3Itd2l0aC1uYW1lcy5qczoKKyAgICAg
ICAgKGV4cG9ydC5Db2NvYSk6CisgICAgICAgIChTeW50YXhFcnJvci5DYW5ub3QuZXhwb3J0LmEu
ZHVwbGljYXRlLm5hbWUpOgorICAgICAgICAqIHRlc3RzL3Rlc3QyNjIueWFtbDoKKwogMjAxNi0w
Ny0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQXNzZXJ0aW9u
IGZhaWx1cmUgd2hpbGUgc2V0dGluZyB0aGUgbGVuZ3RoIG9mIGFuIEFycmF5Q2xhc3MgYXJyYXku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1OGRlYTdlZDc3YzVkOTU4NzFhMzcy
MjI0MWFkODgyNDJkZjBiMTQuLmVmMGIxYmI1ODdkOWM0MTNlNDY3NmI5MGIwNGM0ZjhlM2E0NGE4
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTMwLDYgKzIxMzAsNyBAQAog
CQlGRUQ5NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0
IC8qIFdhdGNoZG9nLmNwcCAqLzsgfTsKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdh
dGNoZG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUQ5NEYyQzE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAg
LyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dh
cFRlc3QuY3BwICovOyB9OworCQlBNzlEM0VEOUM1MDY0REQwQTg0NjZBM0EgLyogTW9kdWxlU2Nv
cGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MDBCRUFGMERGNjA0NDgxQUY2QUI2OEMgLyogTW9kdWxlU2NvcGVEYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpA
QCAtNDQxNyw2ICs0NDE4LDcgQEAKIAkJRkVEQTUwRDUxQjk3RjREOTAwOUEzQjRGIC8qIFBpbmdQ
b25nU3RhY2tPdmVyZmxvd1Rlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL1BpbmdQb25nU3Rh
Y2tPdmVyZmxvd1Rlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTAx
QUFFNjYyRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuY3BwOyBwYXRoID0gQVBJ
L3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFRjA0MDUyMUFBRUM0RUQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHBhdGgg
PSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTAwMEJFQUYwREY2MDQ0ODFBRjZBQjY4QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9kdWxlU2NvcGVEYXRhLmg7IHBhdGggPSBN
b2R1bGVTY29wZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNTU4Miw2ICs1NTg0LDcgQEAKIAkJCQlBN0E3RUU3NzExQjk4QjhE
MDA2NUExNEYgLyogU3ludGF4Q2hlY2tlci5oICovLAogCQkJCTc5RUUwQkZEMUI0QUZCODUwMDAz
ODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCAqLywKIAkJCQk3OUVFMEJGRTFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovLAorCQkJCTAwMEJFQUYwREY2MDQ0
ODFBRjZBQjY4QyAvKiBNb2R1bGVTY29wZURhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFy
c2VyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTgyMjksNiArODIzMiw3IEBACiAJ
CQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyog
WWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3OUQzRUQ5QzUwNjRERDBB
ODQ2NkEzQSAvKiBNb2R1bGVTY29wZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCAyOTY2OGU5Mjg2
MGE4OGFmM2MxOGFmZmRjMjVjNGFiZDE2MzJjOWZhLi4xYzcwMzY2NTNkOWM2ZjZmNjIwNDBkYmI0
MWRkNWM4NTdjMmNjYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCisjaW5jbHVkZSAiTW9kdWxlU2NvcGVEYXRhLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDIwICs0Myw3IEBAIE1vZHVsZUFuYWx5
emVyOjpNb2R1bGVBbmFseXplcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgY29uCiB7CiB9CiAKLUlkZW50aWZpZXIgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydGVk
QmluZGluZyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCkKLXsKLSAgICBj
b25zdCBhdXRvIGl0ZXJhdG9yID0gbV9hbGlhc01hcC5maW5kKGlkZW50KTsKLSAgICBpZiAoaXRl
cmF0b3IgIT0gbV9hbGlhc01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1
ZTsKLSAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0oKSwgaWRlbnQuZ2V0KCkpOwot
fQotCi12b2lkIE1vZHVsZUFuYWx5emVyOjpkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRp
ZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQotewotICAgIG1f
YWxpYXNNYXAuYWRkKGxvY2FsTmFtZS5pbXBsKCksIGV4cG9ydE5hbWUpOwotfQotCi12b2lkIE1v
ZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUp
Cit2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShNb2R1bGVQcm9ncmFtTm9kZSYg
bW9kdWxlUHJvZ3JhbU5vZGUsIGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkKIHsKICAgICAv
LyBJbiB0aGUgcGFyc2VyLCB3ZSBhbHJlYWR5IG1hcmtlZCB0aGUgdmFyaWFibGVzIGFzIEV4cG9y
dGVkIGFuZCBJbXBvcnRlZC4KICAgICAvLyBCeSBsZXZlcmFnaW5nIHRoaXMgaW5mb3JtYXRpb24s
IHdlIGNvbGxlY3QgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVkCkBAIC03NCwxMSArNjIs
MTAgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogICAgIGlmICghdmFyaWFibGUuaXNFeHBvcnRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBJZGVudGlmaWVyIGV4cG9ydE5hbWUg
PSBleHBvcnRlZEJpbmRpbmcobG9jYWxOYW1lKTsKLQogICAgIC8vIEV4cG9ydGVkIG1vZHVsZSBs
b2NhbCB2YXJpYWJsZS4KICAgICBpZiAoIXZhcmlhYmxlLmlzSW1wb3J0ZWQoKSkgewotICAgICAg
ICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxv
Y2FsTmFtZS5nZXQoKSkpKTsKKyAgICAgICAgZm9yIChhdXRvJiBleHBvcnROYW1lIDogbW9kdWxl
UHJvZ3JhbU5vZGUubW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0ZWRCaW5kaW5ncygpLmdldChsb2Nh
bE5hbWUuZ2V0KCkpKQorICAgICAgICAgICAgbW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5
KEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoSWRlbnRpZmllcjo6ZnJv
bVVpZChtX3ZtLCBleHBvcnROYW1lLmdldCgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZChtX3ZtLCBs
b2NhbE5hbWUuZ2V0KCkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg5LDcgKzc2
LDggQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogICAgICAgICAvLwogICAgICAgICAvLyBTZWMg
MTUuMi4xLjE2LjEgc3RlcCAxMS1hLWlpLTItYiBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1wYXJzZW1vZHVsZQogICAgICAgICAvLyBOYW1lc3BhY2UgZXhwb3J0IGlzIGhhbmRs
ZWQgYXMgbG9jYWwgZXhwb3J0IHNpbmNlIGEgbmFtZXNwYWNlIG9iamVjdCBiaW5kaW5nIGl0c2Vs
ZiBpcyBpbXBsZW1lbnRlZCBhcyBhIGxvY2FsIGJpbmRpbmcuCi0gICAgICAgIG1vZHVsZVJlY29y
ZCgpLT5hZGRFeHBvcnRFbnRyeShKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxv
Y2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1lLmdldCgp
KSkpOworICAgICAgICBmb3IgKGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5t
b2R1bGVTY29wZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkp
CisgICAgICAgICAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNv
cmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGV4
cG9ydE5hbWUuZ2V0KCkpLCBJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQo
KSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTksNyArODcsOCBAQCB2b2lkIE1v
ZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBsb2NhbE5hbWUsCiAgICAgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5
PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVudHJ5
KGxvY2FsTmFtZS5nZXQoKSk7CiAgICAgQVNTRVJUKG9wdGlvbmFsSW1wb3J0RW50cnkpOwogICAg
IGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9u
YWxJbXBvcnRFbnRyeTsKLSAgICBtb2R1bGVSZWNvcmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnROYW1lLCBpbXBvcnRF
bnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CisgICAgZm9yIChh
dXRvJiBleHBvcnROYW1lIDogbW9kdWxlUHJvZ3JhbU5vZGUubW9kdWxlU2NvcGVEYXRhKCkuZXhw
b3J0ZWRCaW5kaW5ncygpLmdldChsb2NhbE5hbWUuZ2V0KCkpKQorICAgICAgICBtb2R1bGVSZWNv
cmQoKS0+YWRkRXhwb3J0RW50cnkoSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJ
bmRpcmVjdChJZGVudGlmaWVyOjpmcm9tVWlkKG1fdm0sIGV4cG9ydE5hbWUuZ2V0KCkpLCBpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7CiB9CiAKIApA
QCAtMTQ4LDEwICsxMzcsMTAgQEAgSlNNb2R1bGVSZWNvcmQqIE1vZHVsZUFuYWx5emVyOjphbmFs
eXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSkKICAgICAvLwogICAgIC8v
ICAgICBleHBvcnQgKiBmcm9tICJtb2QiCiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9t
b2R1bGVSZWNvcmQtPmRlY2xhcmVkVmFyaWFibGVzKCkpCi0gICAgICAgIGV4cG9ydFZhcmlhYmxl
KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKKyAgICAgICAgZXhwb3J0VmFyaWFibGUobW9kdWxlUHJv
Z3JhbU5vZGUsIHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1fbW9kdWxlUmVjb3JkLT5sZXhpY2FsVmFyaWFibGVzKCkpCi0gICAgICAgIGV4cG9y
dFZhcmlhYmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKKyAgICAgICAgZXhwb3J0VmFyaWFibGUo
bW9kdWxlUHJvZ3JhbU5vZGUsIHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKIAogICAgIGlmIChPcHRp
b25zOjpkdW1wTW9kdWxlUmVjb3JkKCkpCiAgICAgICAgIG1fbW9kdWxlUmVjb3JkLT5kdW1wKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKaW5kZXgg
NzA4M2NhOTA5OTE4ZWZkMjNlYmExYTNkNWJiOWMzZjY1NzMzOGUwNS4uYmIzYzUzZmNiYjQ0MDE5
NzkyZmJiZmY1NjgyYTk1Y2ViYjM0YjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuaApAQCAtNDQsMTggKzQ0LDExIEBAIGNsYXNzIE1vZHVsZUFu
YWx5emVyIHsKIAogICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBt
X21vZHVsZVJlY29yZC5nZXQoKTsgfQogCi0gICAgdm9pZCBkZWNsYXJlRXhwb3J0QWxpYXMoY29u
c3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsK
LQogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgSWRlbnRpZmllciwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4+IElkZW50aWZpZXJBbGlhc01hcDsKLQotICAgIHZvaWQgZXhwb3J0VmFy
aWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSYpOwotCi0gICAgSWRlbnRpZmllciBleHBvcnRlZEJpbmRpbmcoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnQpOworICAgIHZvaWQgZXhwb3J0VmFyaWFi
bGUoTW9kdWxlUHJvZ3JhbU5vZGUmLCBjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Jiwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7CiAKICAgICBWTSogbV92bTsKICAgICBT
dHJvbmc8SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOwotICAgIElkZW50aWZpZXJBbGlh
c01hcCBtX2FsaWFzTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVNjb3BlRGF0YS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVTY29wZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MjIxYWY0
ODM4ZjE4MzJhMmFkMmRhMTM1MzY4ZTEzZjk1ZjE2Yzc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVTY29wZURhdGEuaApAQCAtMCwwICsxLDY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1vZHVsZVNjb3BlRGF0YSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1vZHVsZVNjb3BlRGF0YT4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9k
dWxlU2NvcGVEYXRhKTsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyU2V0LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
SWRlbnRpZmllckFsaWFzTWFwOworCisgICAgc3RhdGljIFJlZjxNb2R1bGVTY29wZURhdGE+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlU2NvcGVEYXRhKTsgfQorCisgICAg
Y29uc3QgSWRlbnRpZmllckFsaWFzTWFwJiBleHBvcnRlZEJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9leHBvcnRlZEJpbmRpbmdzOyB9CisKKyAgICBib29sIGV4cG9ydE5hbWUoY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0ZWROYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhwb3J0ZWRO
YW1lcy5hZGQoZXhwb3J0ZWROYW1lLmltcGwoKSkuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICB2
b2lkIGV4cG9ydEJpbmRpbmcoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnRlZE5hbWUpCisgICAgeworICAgICAgICBtX2V4cG9ydGVkQmluZGluZ3Mu
YWRkKGxvY2FsTmFtZS5pbXBsKCksIElkZW50aWZpZXJTZXQoKSkuaXRlcmF0b3ItPnZhbHVlLmFk
ZChleHBvcnRlZE5hbWUuaW1wbCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGV4cG9ydEJpbmRpbmco
Y29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKQorICAgIHsKKyAgICAgICAgZXhwb3J0QmluZGlu
Zyhsb2NhbE5hbWUsIGxvY2FsTmFtZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1vZHVsZVNj
b3BlRGF0YSgpID0gZGVmYXVsdDsKKworICAgIElkZW50aWZpZXJTZXQgbV9leHBvcnRlZE5hbWVz
IHsgfTsKKyAgICBJZGVudGlmaWVyQWxpYXNNYXAgbV9leHBvcnRlZEJpbmRpbmdzIHsgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmlu
ZGV4IDYzYzczMmQwYWMxOTBmNWE1OTJjYjJiM2U0ZTI5MzY5MTU2NDBiYTEuLjRmOWZhMmY5NWE3
N2YzMWNjYzM4NWY1NjgyNzE2MmY1YmFkMjA4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2Rl
OjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJvZ3Jh
bU5vZGU6OlByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0
aW9uLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5j
dGlvblN0YWNrJiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFi
bGVzLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25z
LCBGdW5jdGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dG
dW5jdGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9n
cmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
c3RhcnRMb2NhdGlvbiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJFbnZpcm9ubWVudCwgRnVuY3Rpb25TdGFjayYm
IGZ1bmNTdGFjaywgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcywgVW5pcXVl
ZFN0cmluZ0ltcGxQdHJTZXQmJiBzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucywgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFycm93RnVuY3Rpb25Db2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVTY29wZURhdGE+JiYpCiAg
ICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBz
b3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShmdW5jU3RhY2spLCBsZXhp
Y2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zKSwgZmVhdHVy
ZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwg
bV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikK
QEAgLTEyNiwxNiArMTI2LDE3IEBAIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVu
YSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNb2R1bGVQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1Nb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUo
UGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9j
YXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
aWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3Rh
Y2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJ
bXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVy
cyosIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5l
ckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQorTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2Rl
KFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExv
Y2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCB1bnNpZ25lZCBzdGFy
dENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
cmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNrJiYgZnVuY1N0
YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlxdWVkU3RyaW5n
SW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlvblBhcmFtZXRl
cnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgSW5u
ZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJiBtb2R1bGVTY29w
ZURhdGEpCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExv
Y2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShmdW5jU3Rh
Y2spLCBsZXhpY2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25z
KSwgZmVhdHVyZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRz
KQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVu
ZENvbHVtbikKKyAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKCpXVEZNb3ZlKG1vZHVsZVNjb3BlRGF0
YSkpCiB7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FdmFsTm9kZTo6RXZhbE5vZGUoUGFyc2Vy
QXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRpb24s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkLCB1bnNpZ25lZCBl
bmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFibGVFbnZpcm9ubWVudCYg
dmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ssIFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYgc2xvcHB5
TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2Rl
RmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorRXZhbE5vZGU6OkV2YWxOb2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExv
Y2F0aW9uLCB1bnNpZ25lZCwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckVudmlyb25tZW50LCBGdW5jdGlvblN0YWNr
JiYgZnVuY1N0YWNrLCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzLCBVbmlx
dWVkU3RyaW5nSW1wbFB0clNldCYmIHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zLCBGdW5jdGlv
blBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIGlubmVyQXJyb3dGdW5jdGlvbkNv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJikK
ICAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxl
eGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0
dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAg
LCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCiB7CkBAIC0xODEsNyArMTgyLDcgQEAgdm9pZCBGdW5j
dGlvbk1ldGFkYXRhTm9kZTo6c2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24gcG9zaXRpb24p
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbk5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5vZGUoUGFy
c2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0TG9jYXRp
b24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0YXJ0Q29s
dW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5jU3RhY2ss
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJpbmdJbXBs
UHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1ldGVycyog
cGFyYW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1bmN0aW9u
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVuY3Rpb25Ob2RlOjpGdW5jdGlvbk5v
ZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0
TG9jYXRpb24sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kTG9jYXRpb24sIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyaWFibGVFbnZpcm9ubWVudCYgdmFyRW52aXJvbm1lbnQsIEZ1bmN0aW9uU3RhY2smJiBmdW5j
U3RhY2ssIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMsIFVuaXF1ZWRTdHJp
bmdJbXBsUHRyU2V0JiYgc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMsIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJvd0Z1
bmN0aW9uQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzLCBSZWZQdHI8TW9kdWxlU2NvcGVE
YXRhPiYmKQogICAgIDogU2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRM
b2NhdGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1
bmNTdGFjayksIGxleGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5j
dGlvbnMpLCBmZWF0dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25z
dGFudHMpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fc3RhcnRDb2x1
bW4oc3RhcnRDb2x1bW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMWUw
ODgyNzlmYzcyNGNhOTNiMmI2MzNmZjA3OWNjM2FlMzAxNGY2YS4uNjdhZjRmYzhhYzNlZGM1Mjlk
Mjg0YTUxNWUxNWIwMzc2MTZhNWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aApAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU1Njb3BlOwog
ICAgIGNsYXNzIFNjb3BlTm9kZTsKICAgICBjbGFzcyBNb2R1bGVBbmFseXplcjsKKyAgICBjbGFz
cyBNb2R1bGVTY29wZURhdGE7CiAKICAgICB0eXBlZGVmIFNtYWxsUHRyU2V0PFVuaXF1ZWRTdHJp
bmdJbXBsKj4gVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQ7CiAKQEAgLTE2NDQsNyArMTY0NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRzKiwg
VmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQs
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1lbnRz
KiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZpcm9u
bWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyosIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4mJik7CiAKICAg
ICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0Q29sdW1u
OyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fZW5kQ29s
dW1uOyB9CkBAIC0xNjU5LDcgKzE2NjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFs
Tm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNr
JiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmLCBGdW5j
dGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFs
Tm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29s
dW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNr
JiYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBVbmlxdWVkU3RyaW5nSW1wbFB0clNldCYmLCBGdW5j
dGlvblBhcmFtZXRlcnMqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBJbm5lckFy
cm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMsIFJlZlB0cjxNb2R1bGVT
Y29wZURhdGE+JiYpOwogCiAgICAgICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc3RhcnRDb2x1
bW4oKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNv
bnN0IHsgcmV0dXJuIG1fZW5kQ29sdW1uOyB9CkBAIC0xNjc0LDE3ICsxNjc1LDIzIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgTW9kdWxlUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5h
JiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBl
bmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJjZUVsZW1l
bnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1ldGVycyos
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlvbkNvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIE1vZHVsZVByb2dyYW1Ob2RlKFBh
cnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNv
dXJjZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFy
aWFibGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFy
YW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0
YT4mJik7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1
bmN0aW9uID0gZmFsc2U7CiAKKyAgICAgICAgTW9kdWxlU2NvcGVEYXRhJiBtb2R1bGVTY29wZURh
dGEoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9tb2R1bGVTY29wZURhdGE7Cisg
ICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CisgICAgICAg
IFJlZjxNb2R1bGVTY29wZURhdGE+IG1fbW9kdWxlU2NvcGVEYXRhOwogICAgIH07CiAKICAgICBj
bGFzcyBNb2R1bGVOYW1lTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTE5MTUsNyArMTkyMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbk5vZGUoUGFyc2VyQXJl
bmEmLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGVuZCwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgU291cmNlRWxl
bWVudHMqLCBWYXJpYWJsZUVudmlyb25tZW50JiwgRnVuY3Rpb25TdGFjayYmLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgVW5pcXVlZFN0cmluZ0ltcGxQdHJTZXQmJiwgRnVuY3Rpb25QYXJhbWV0ZXJz
KiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgSW5uZXJBcnJvd0Z1bmN0aW9uQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Ob2RlKFBhcnNl
ckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBlbmQsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0aW9uU3RhY2smJiwgVmFyaWFi
bGVFbnZpcm9ubWVudCYsIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0JiYsIEZ1bmN0aW9uUGFyYW1l
dGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIElubmVyQXJyb3dGdW5jdGlv
bkNvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cywgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4m
Jik7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCBlZDQ2MWRhMjY4MzRmYjMzYzk0NDAy
MTRhOTk1ZTQ1YzhhODE5NDU1Li40MjZlNTNiOWQxZDc3YjAwZjQyOWY5Yjc0NDlhZGU0MTJkNWQ1
OWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5
emVNb2R1bGUuY3BwCkBAIC02NSw5ICs2NSw4IEBAIHZvaWQgRXhwb3J0QWxsRGVjbGFyYXRpb25O
b2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKICAgICBhbmFseXpl
ci5tb2R1bGVSZWNvcmQoKS0+YWRkU3RhckV4cG9ydEVudHJ5KG1fbW9kdWxlTmFtZS0+bW9kdWxl
TmFtZSgpKTsKIH0KIAotdm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xh
cmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCiB7Ci0gICAgYW5hbHl6
ZXIuZGVjbGFyZUV4cG9ydEFsaWFzKG1fbG9jYWxOYW1lLCBhbmFseXplci52bSgpLnByb3BlcnR5
TmFtZXMtPmRlZmF1bHRLZXl3b3JkKTsKIH0KIAogdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9u
Tm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCkBAIC04NiwxMSArODUsNyBAQCB2
b2lkIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5
emVyJiBhbmFseXplcikKICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgbm8gbG9jYWwgdmFy
aWFibGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLgogICAgICAg
ICAgICAgLy8gInYiIGluZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGluICJtb2QiLgogICAg
ICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCktPmFkZEV4cG9ydEVudHJ5KEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5h
bWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkp
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNwZWNp
Zmllci0+bG9jYWxOYW1lKCkgIT0gc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSkKLSAgICAgICAg
ICAgIGFuYWx5emVyLmRlY2xhcmVFeHBvcnRBbGlhcyhzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBz
cGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAyNGQ5NDM2NjFjMmNlM2M4NmIyNWIzYmZlMDE1OThm
Yzc1OGY0NzI5Li40YTFjMWU1ODhmZjRkNTQ1NzcwZjI0NjgzY2MzYjNhZjUzOGU1NGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMzQsNiArMjM0LDkgQEAg
UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgIGlmIChzdHJpY3RNb2RlID09IEpTUGFyc2VyU3Ry
aWN0TW9kZTo6U3RyaWN0KQogICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogCisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlIHx8IHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSkKKyAgICAgICAg
bV9tb2R1bGVTY29wZURhdGEgPSBNb2R1bGVTY29wZURhdGE6OmNyZWF0ZSgpOworCiAgICAgbmV4
dCgpOwogfQogCkBAIC00NzYsNyArNDc5LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU28KIAog
ICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHVpZCA6IGN1cnJl
bnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkpIHsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0ZWRCaW5kaW5n
cygpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHVpZCA9IHBhaXIua2V5OwogICAgICAgICBpZiAo
Y3VycmVudFNjb3BlKCktPmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSkgewogICAgICAgICAgICAg
Y3VycmVudFNjb3BlKCktPmRlY2xhcmVkVmFyaWFibGVzKCkubWFya1ZhcmlhYmxlQXNFeHBvcnRl
ZCh1aWQpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC03MDgsNyArNzEyLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleHBvcnRU
eXBlID09IEV4cG9ydFR5cGU6OkV4cG9ydGVkKSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShleHBvcnROYW1lKCpuYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUg
bmFtZSAnIiwgbmFtZS0+aW1wbCgpLCAiJyIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpuYW1lKTsKKyAgICAgICAgICAg
ICAgICBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZygqbmFtZSk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewpAQCAtODI4LDcgKzgzMiw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCCiAKICAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBv
cnRUeXBlOjpFeHBvcnRlZCkgewogICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5h
bWUobmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUuaW1wbCgp
LCAiJyIpOwotICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0
QmluZGluZyhuYW1lKTsKKyAgICAgICAgbV9tb2R1bGVTY29wZURhdGEtPmV4cG9ydEJpbmRpbmco
bmFtZSk7CiAgICAgfQogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbih0
b2tlbi5tX2xvY2F0aW9uLCBuYW1lLCB0b2tlbi5tX3N0YXJ0UG9zaXRpb24sIHRva2VuLm1fZW5k
UG9zaXRpb24sIGJpbmRpbmdDb250ZXh0KTsKIH0KQEAgLTIyMjksNyArMjIzMyw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNl
LCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xh
c3MvZnVuY3Rpb24gdmFyaWFibGUgJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0
ZWQpIHsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpmdW5jdGlvbklu
Zm8ubmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGZ1bmN0aW9uIG5hbWU6ICciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOwotICAgICAgICBjdXJyZW50U2NvcGUoKS0+
bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOworICAg
ICAgICBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUp
OwogICAgIH0KIAogICAgIFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVGdW5j
RGVjbFN0YXRlbWVudChsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsKQEAgLTIyNTUsNyArMjI1OSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzc0RlY2xhcmF0CiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNz
YWdlKGZhbHNlLCAiQ2Fubm90IGRlY2xhcmUgYSBjbGFzcyB0d2ljZTogJyIsIGluZm8uY2xhc3NO
YW1lLT5pbXBsKCksICInIik7CiAgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhw
b3J0ZWQpIHsKICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCppbmZvLmNs
YXNzTmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGNsYXNzIG5hbWU6ICciLCBpbmZv
LmNsYXNzTmFtZS0+aW1wbCgpLCAiJyIpOwotICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxl
U2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqaW5mby5jbGFzc05hbWUpOworICAgICAgICBtX21v
ZHVsZVNjb3BlRGF0YS0+ZXhwb3J0QmluZGluZygqaW5mby5jbGFzc05hbWUpOwogICAgIH0KIAog
ICAgIEpTVGV4dFBvc2l0aW9uIGNsYXNzRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKQEAg
LTI3ODYsNyArMjc5MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnREZWNsYXJhCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RXhwb3J0U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8Y29uc3QgSWRlbnRp
Zmllcio+JiBtYXliZUxvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdz
KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhw
b3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVl
QnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29u
c3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdv
cmRGb3JMb2NhbEJpbmRpbmdzKQogewogICAgIC8vIEV4cG9ydFNwZWNpZmllciA6CiAgICAgLy8g
SWRlbnRpZmllck5hbWUKQEAgLTI4MDgsNyArMjgxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBQYXJzZXI8TGV4
ZXJUCiAgICAgfQogCiAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpleHBvcnRl
ZE5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBleHBvcnRlZE5hbWUt
PmltcGwoKSwgIiciKTsKLSAgICBtYXliZUxvY2FsTmFtZXMuYXBwZW5kKGxvY2FsTmFtZSk7Cisg
ICAgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGxvY2FsTmFt
ZSwgZXhwb3J0ZWROYW1lKSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0U3BlY2lm
aWVyKHNwZWNpZmllckxvY2F0aW9uLCAqbG9jYWxOYW1lLCAqZXhwb3J0ZWROYW1lKTsKIH0KIApA
QCAtMjg5Niw3ICsyOTAwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgZmFp
bElmRmFsc2UocmVzdWx0LCAiQ2Fubm90IHBhcnNlIHRoZSBkZWNsYXJhdGlvbiIpOwogCiAgICAg
ICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5k
ZWZhdWx0S2V5d29yZCksICJPbmx5IG9uZSAnZGVmYXVsdCcgZXhwb3J0IGlzIGFsbG93ZWQiKTsK
LSAgICAgICAgY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmco
KmxvY2FsTmFtZSk7CisgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhLT5leHBvcnRCaW5kaW5nKCps
b2NhbE5hbWUsIG1fdm0tPnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKTsKICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKGV4cG9ydExvY2F0
aW9uLCByZXN1bHQsICpsb2NhbE5hbWUpOwogICAgIH0KIApAQCAtMjkxNiwxMiArMjkyMCwxMiBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICBuZXh0KCk7CiAKICAgICAgICAgYXV0
byBzcGVjaWZpZXJMaXN0ID0gY29udGV4dC5jcmVhdGVFeHBvcnRTcGVjaWZpZXJMaXN0KCk7Ci0g
ICAgICAgIFZlY3Rvcjxjb25zdCBJZGVudGlmaWVyKj4gbWF5YmVMb2NhbE5hbWVzOworICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+
IG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzOwogCiAgICAgICAgIGJvb2wgaGFzS2V5d29yZEZvckxv
Y2FsQmluZGluZ3MgPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKCFtYXRjaChDTE9TRUJSQUNFKSkg
ewogICAgICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCksICJF
eHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKLSAg
ICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VFeHBvcnRTcGVjaWZpZXIoY29udGV4dCwg
bWF5YmVMb2NhbE5hbWVzLCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CisgICAgICAgICAg
ICBhdXRvIHNwZWNpZmllciA9IHBhcnNlRXhwb3J0U3BlY2lmaWVyKGNvbnRleHQsIG1heWJlRXhw
b3J0ZWRMb2NhbE5hbWVzLCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShzcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG5hbWVkIGV4cG9ydCIp
OwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRFeHBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTGlz
dCwgc3BlY2lmaWVyKTsKICAgICAgICAgICAgIGlmICghY29uc3VtZShDT01NQSkpCkBAIC0yOTQ3
LDggKzI5NTEsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIC8vIGRv
ZXMgbm90IGhhdmUgZWZmZWN0IG9uIHRoZSBjdXJyZW50IG1vZHVsZSdzIHNjb3BlLiBCdXQsCiAg
ICAgICAgICAgICAvLyAgIGV4cG9ydCB7IEEsIEIsIEMgYXMgRCB9CiAgICAgICAgICAgICAvLyB3
aWxsIHJlZmVyZW5jZSB0aGUgY3VycmVudCBtb2R1bGUncyBiaW5kaW5ncy4KLSAgICAgICAgICAg
IGZvciAoY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lIDogbWF5YmVMb2NhbE5hbWVzKQotICAg
ICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5k
aW5nKCpsb2NhbE5hbWUpOworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbWF5
YmVFeHBvcnRlZExvY2FsTmFtZXMpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBsb2NhbE5hbWUgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIGV4cG9ydGVkTmFtZSA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgICAgIG1fbW9kdWxl
U2NvcGVEYXRhLT5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUsICpleHBvcnRlZE5hbWUpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhw
b3J0TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxl
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAyNWNlYzk1YTc2
MWNjZDhjMjYzMzgzNzMwZWIwNGUxNTY5NzIwYmEyLi5hMDBiODA0MWQyNjY2YTRjMjZjZWFjNzVj
ZGNlNDM4YjBiNzE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJMZXhlci5oIgorI2luY2x1ZGUgIk1vZHVsZVNjb3BlRGF0
YS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyQXJlbmEuaCIKICNpbmNs
dWRlICJQYXJzZXJFcnJvci5oIgpAQCAtMTI4LDI3ICsxMjksNiBAQCBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBib29sIGlzSWRlbnRpZmllck9yS2V5d29yZChjb25zdCBKU1Rva2VuJiB0b2tlbikKICAg
ICByZXR1cm4gdG9rZW4ubV90eXBlID09IElERU5UIHx8IHRva2VuLm1fdHlwZSAmIEtleXdvcmRU
b2tlbkZsYWc7CiB9CiAKLWNsYXNzIE1vZHVsZVNjb3BlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PE1vZHVsZVNjb3BlRGF0YT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9kdWxlU2NvcGVE
YXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vZHVsZVNjb3BlRGF0YSk7IH0K
LQotICAgIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydGVkQmluZGluZ3MoKSBjb25zdCB7IHJl
dHVybiBtX2V4cG9ydGVkQmluZGluZ3M7IH0KLQotICAgIGJvb2wgZXhwb3J0TmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnRlZE5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9leHBvcnRl
ZE5hbWVzLmFkZChleHBvcnRlZE5hbWUuaW1wbCgpKS5pc05ld0VudHJ5OwotICAgIH0KLQotICAg
IHZvaWQgZXhwb3J0QmluZGluZyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCi0gICAgewot
ICAgICAgICBtX2V4cG9ydGVkQmluZGluZ3MuYWRkKGxvY2FsTmFtZS5pbXBsKCkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBJZGVudGlmaWVyU2V0IG1fZXhwb3J0ZWROYW1lcyB7IH07Ci0gICAg
SWRlbnRpZmllclNldCBtX2V4cG9ydGVkQmluZGluZ3MgeyB9OwotfTsKLQogc3RydWN0IFNjb3Bl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZSk7CiAKQEAgLTIxNiw3ICsxOTYsNiBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1fbGV4aWNhbFZhcmlhYmxlcyhXVEZNb3ZlKG90
aGVyLm1fbGV4aWNhbFZhcmlhYmxlcykpCiAgICAgICAgICwgbV91c2VkVmFyaWFibGVzKFdURk1v
dmUob3RoZXIubV91c2VkVmFyaWFibGVzKSkKICAgICAgICAgLCBtX2Nsb3NlZFZhcmlhYmxlQ2Fu
ZGlkYXRlcyhXVEZNb3ZlKG90aGVyLm1fY2xvc2VkVmFyaWFibGVDYW5kaWRhdGVzKSkKLSAgICAg
ICAgLCBtX21vZHVsZVNjb3BlRGF0YShXVEZNb3ZlKG90aGVyLm1fbW9kdWxlU2NvcGVEYXRhKSkK
ICAgICAgICAgLCBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zKFdURk1vdmUob3RoZXIubV9mdW5jdGlv
bkRlY2xhcmF0aW9ucykpCiAgICAgewogICAgIH0KQEAgLTI3NywxMSArMjU2LDggQEAgc3RydWN0
IFNjb3BlIHsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZToKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToKICAgICAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKLSAgICAgICAgICAgIHNldElzTW9kdWxlKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMywxMiArMjg5LDYgQEAg
c3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsKICAgICB9
CiAKLSAgICBNb2R1bGVTY29wZURhdGEmIG1vZHVsZVNjb3BlRGF0YSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV9tb2R1bGVTY29wZURhdGEpOwotICAgICAgICByZXR1cm4gKm1fbW9k
dWxlU2NvcGVEYXRhOwotICAgIH0KLQogICAgIHZvaWQgY29tcHV0ZUxleGljYWxseUNhcHR1cmVk
VmFyaWFibGVzQW5kUHVyZ2VDYW5kaWRhdGVzKCkKICAgICB7CiAgICAgICAgIC8vIEJlY2F1c2Ug
dmFyaWFibGVzIG1heSBiZSBkZWZpbmVkIGF0IGFueSB0aW1lIGluIHRoZSByYW5nZSBvZiBhIGxl
eGljYWwgc2NvcGUsIHdlIG11c3QKQEAgLTczMSwxMSArNzAxLDYgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICAgICAgbV9pc0Fycm93RnVuY3Rpb24gPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgc2V0
SXNNb2R1bGUoKQotICAgIHsKLSAgICAgICAgbV9tb2R1bGVTY29wZURhdGEgPSBNb2R1bGVTY29w
ZURhdGE6OmNyZWF0ZSgpOwotICAgIH0KLQogICAgIGNvbnN0IFZNKiBtX3ZtOwogICAgIGJvb2wg
bV9zaGFkb3dzQXJndW1lbnRzOwogICAgIGJvb2wgbV91c2VzRXZhbDsKQEAgLTc3MSw3ICs3MzYs
NiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbFB0clNldCwg
Nj4gbV91c2VkVmFyaWFibGVzOwogICAgIFVuaXF1ZWRTdHJpbmdJbXBsUHRyU2V0IG1fc2xvcHB5
TW9kZUhvaXN0YWJsZUZ1bmN0aW9uQ2FuZGlkYXRlczsKICAgICBIYXNoU2V0PFVuaXF1ZWRTdHJp
bmdJbXBsKj4gbV9jbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZXM7Ci0gICAgUmVmUHRyPE1vZHVsZVNj
b3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAgICAgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0
aW9uU3RhY2sgbV9mdW5jdGlvbkRlY2xhcmF0aW9uczsKIH07CiAKQEAgLTExNzYsNyArMTE0MCw4
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgYm9vbCBleHBvcnROYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRTY29wZSgpLmluZGV4KCkgPT0g
MCk7Ci0gICAgICAgIHJldHVybiBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhw
b3J0TmFtZShpZGVudCk7CisgICAgICAgIEFTU0VSVChtX21vZHVsZVNjb3BlRGF0YSk7CisgICAg
ICAgIHJldHVybiBtX21vZHVsZVNjb3BlRGF0YS0+ZXhwb3J0TmFtZShpZGVudCk7CiAgICAgfQog
CiAgICAgU2NvcGVTdGFjayBtX3Njb3BlU3RhY2s7CkBAIC0xNDQyLDcgKzE0MDcsNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxk
ZXImLCBJbXBvcnRTcGVjaWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVl
QnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBwYXJzZUltcG9ydERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBh
cnNlRXhwb3J0U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8Y29uc3QgSWRl
bnRpZmllcio+JiBtYXliZUxvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRp
bmdzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpFeHBvcnRTcGVjaWZpZXIgcGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgSWRlbnRpZmllciosIGNvbnN0IElkZW50aWZp
ZXIqPj4mIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzLCBib29sJiBoYXNLZXl3b3JkRm9yTG9jYWxC
aW5kaW5ncyk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IHBhcnNlRXhwb3J0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKIAogICAgIGVudW0gY2xhc3Mg
RnVuY3Rpb25EZWZpbml0aW9uVHlwZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2Qg
fTsKQEAgLTE2MjMsNiArMTU4OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgRXhwcmVzc2lvbkVy
cm9yQ2xhc3NpZmllciogbV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyOwogICAgIGJvb2wgbV9p
c0V2YWxDb250ZXh0OwogICAgIGJvb2wgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRl
Y2xhcmF0aW9uSW5TdGF0ZW1lbnQ7CisgICAgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1
bGVTY29wZURhdGE7CiAgICAgCiAgICAgc3RydWN0IERlcHRoTWFuYWdlciB7CiAgICAgICAgIERl
cHRoTWFuYWdlcihpbnQqIGRlcHRoKQpAQCAtMTY5Nyw3ICsxNjYzLDggQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IEkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX3NvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmVhdHVyZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+aW5uZXJBcnJv
d0Z1bmN0aW9uRmVhdHVyZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bnVtQ29uc3RhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92
ZShtX21vZHVsZVNjb3BlRGF0YSkpOwogICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+
Zmlyc3RMaW5lKCksIG1fbGV4ZXItPmxpbmVOdW1iZXIoKSwgbV9sZXhlci0+Y3VycmVudE9mZnNl
dCgpLCBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICByZXN1bHQt
PnNldEVuZE9mZnNldChtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2VkLW5hbWVzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNlZC1uYW1lcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Yzg3OTY1NDk1YzAwYzY0OTYzMjk1ZWRhNGQ3OWRkYzk1NTdiNDM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNlZC1uYW1l
cy5qcwpAQCAtMCwwICsxLDggQEAKK2ltcG9ydCB7IGEsIGIsIGNoYW5nZSB9IGZyb20gJ2FsaWFz
ZWQtbmFtZXMvbWFpbi5qcycKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20g
Ii4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKGEsIDQyKTsKK3Nob3VsZEJlKGIs
IDQyKTsKK2NoYW5nZSg0MDApOworc2hvdWxkQmUoYSwgNDAwKTsKK3Nob3VsZEJlKGIsIDQwMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2Vk
LW5hbWVzL21haW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlh
c2VkLW5hbWVzL21haW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAzM2NmOWRhZWVjYmJlODYyOTMyZjg0MGI4
NjEzNTJlNjIxODY4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL2FsaWFzZWQtbmFtZXMvbWFpbi5qcwpAQCAtMCwwICsxLDEwIEBACit2YXIg
YSA9IDQyOworCitmdW5jdGlvbiBjaGFuZ2UodmFsdWUpCit7CisgICAgYSA9IHZhbHVlOworfQor
CitleHBvcnQgeyBhIH0KK2V4cG9ydCB7IGEgYXMgYiB9CitleHBvcnQgeyBjaGFuZ2UgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRh
eC1lcnJvci13aXRoLW5hbWVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9tb2R1bGVzLXN5bnRheC1lcnJvci13aXRoLW5hbWVzLmpzCmluZGV4IDYyZjQ4ODdiNGYzNWY4
ZjYzZmQ0OTQxNzU1ZGMwMGU0YzQ4OGU0OTguLmVmN2Q1NGZhMmRiMjVhOGE5MTE1MmM4MTczYzVk
YmNiZDlmMzAyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvbW9kdWxlcy1zeW50YXgtZXJyb3Itd2l0aC1uYW1lcy5qcworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLXdpdGgtbmFtZXMuanMK
QEAgLTE5MiwyNiArMTkyLDYxIEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhlbGxvICgpIHsg
fQogZXhwb3J0IGRlZmF1bHQgMjA7CiBgLCBgU3ludGF4RXJyb3I6IE9ubHkgb25lICdkZWZhdWx0
JyBleHBvcnQgaXMgYWxsb3dlZC46NGApOwogCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgCit2YXIgYSA9IDQyOwordmFyIGIgPSA1NTsKK2V4cG9ydCB7IGEgYXMgQ29jb2EsIGIg
YXMgQ29jb2EgfTsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBu
YW1lICdDb2NvYScuOjRgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
dmFyIGEgPSA0MjsKK3ZhciBiID0gNTU7CitleHBvcnQgeyBhIGFzIENvY29hLCBiIGFzIENvY29h
IH07CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFtZSAnQ29j
b2EnLjo0YCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBDb2Nv
YSA9IDQyOwordmFyIGIgPSA1NTsKK2V4cG9ydCB7IENvY29hLCBiIGFzIENvY29hIH07CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFtZSAnQ29jb2EnLjo0YCk7
CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB2YXIgQ29jb2Eg
PSA0MjsKK3ZhciBiID0gNTU7CitleHBvcnQgeyBiIGFzIENvY29hIH07CitgLCBgU3ludGF4RXJy
b3I6IENhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFtZSAnQ29jb2EnLjo0YCk7CisKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhID0gNDI7CitleHBvcnQgeyBhIGFz
IENvY29hIH07CitleHBvcnQgZnVuY3Rpb24gQ29jb2EoKSB7IH0KK2AsIGBTeW50YXhFcnJvcjog
Q2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBmdW5jdGlvbiBuYW1lOiAnQ29jb2EnLjo1YCk7CisK
K2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhID0gNDI7CitleHBvcnQg
eyBhIGFzIENvY29hIH07CitleHBvcnQgY2xhc3MgQ29jb2EgeyB9CitgLCBgU3ludGF4RXJyb3I6
IENhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgY2xhc3MgbmFtZTogJ0NvY29hJy46NWApOworCiAv
LyBGSVhNRTogVGhlc2UgdGVzdHMgYWxzbyBzaG91bGQgYmUgcGFzc2VkLiBCdXQgbm93LCB2YXIg
YW5kIGxleGljYWwgZGVjbGFyZWQgbmFtZXMgY2FuIGJlIGNvLWV4aXN0IG9uIFNjcmlwdCAvIE1v
ZHVsZSB0b3AgbGV2ZWwgc2NvcGUuCiAvLyBUaGlzIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGlzIGlz
c3VlIGlzIGZpeGVkIGZvciBTY3JpcHQgZW52aXJvbm1lbnQuCiAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2NyaXB0cy1zdGF0aWMtc2VtYW50
aWNzLWVhcmx5LWVycm9ycwogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1zZW1hbnRpY3Mtc3RhdGljLXNlbWFudGljcy1lYXJseS1l
cnJvcnMKLS8vCi0vLyBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCi0vLyBpbXBv
cnQgQSBmcm9tICJDb2NvYSIKLS8vIHZhciBBID0gMjA7Ci0vLyBgLCBgYCk7Ci0vLworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IEEgZnJvbSAiQ29jb2EiCit2YXIg
QSA9IDIwOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIHZhciB2YXJpYWJsZSB0
aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xhc3MgdmFyaWFibGU6ICdBJy46M2ApOworCiAvLyBj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiAvLyB2YXIgQSA9IDIwOwogLy8gaW1w
b3J0IEEgZnJvbSAiQ29jb2EiCiAvLyBgLCBgYCk7Ci0vLwotLy8gY2hlY2tNb2R1bGVTeW50YXhF
cnJvcihTdHJpbmcucmF3YAotLy8gaW1wb3J0IEEgZnJvbSAiQ29jb2EiCi0vLyB2YXIgQSA9IDIw
OwotLy8gYCwgYGApOwotLy8KKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
aW1wb3J0IEEgZnJvbSAiQ29jb2EiCit2YXIgQSA9IDIwOworYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgZGVjbGFyZSBhIHZhciB2YXJpYWJsZSB0aGF0IHNoYWRvd3MgYSBsZXQvY29uc3QvY2xhc3Mg
dmFyaWFibGU6ICdBJy46M2ApOworCiAvLyBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCiAvLyB2YXIgQSA9IDIwOwogLy8gaW1wb3J0IEEgZnJvbSAiQ29jb2EiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdGVzdDI2Mi55YW1sIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3Rlc3QyNjIueWFtbAppbmRleCAwYTdkMmE4NmYyYTg5NTJhODcxNzVj
NjhkOTc0OWY4MzBlM2Q2MjY2Li44YWFlMTMxYWRjY2Q1OWUzYTU4ZjU4YzUzYmVjZmRhOTM5ODc2
MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdGVzdDI2Mi55YW1s
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTcxMjMw
LDcgKzcxMjMwLDcgQEAKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2Rl
L2luc3RuLXN0YXItcHJvcHMtbnJtbC1zdGFyX0ZJWFRVUkUuanMKICAgY21kOiBwcmVwYXJlVGVz
dDI2MkZpeHR1cmUKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL2lu
c3RuLXN0YXItcHJvcHMtbnJtbC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNv
ZGUvaW5zdG4tc3Rhci1zdGFyLWN5Y2xlLTJfRklYVFVSRS5qcwogICBjbWQ6IHByZXBhcmVUZXN0
MjYyRml4dHVyZQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvaW5z
dG4tc3Rhci1zdGFyLWN5Y2xlLWluZGlyZWN0LXhfRklYVFVSRS5qcwpAQCAtNzEyNTYsMTEgKzcx
MjU2LDExIEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1l
c3BhY2UvU3ltYm9sLml0ZXJhdG9yL3RoaXMtdmFsLW5vdC1ucy5qcwogICBjbWQ6IHJ1blRlc3Qy
NjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLml0ZXJh
dG9yL3ZhbHVlcy1iaW5kaW5nLXR5cGVzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvU3ltYm9sLml0ZXJhdG9y
L3ZhbHVlcy1iaW5kaW5nLXR5cGVzXy5qcwogICBjbWQ6IHByZXBhcmVUZXN0MjYyRml4dHVyZQog
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL1N5bWJv
bC5pdGVyYXRvci92YWx1ZXMtb3JkZXIuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9TeW1ib2wudG9TdHJpbmdU
YWcuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
Wzptb2R1bGVdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1l
c3BhY2UvaW50ZXJuYWxzL2RlZmluZS1vd24tcHJvcGVydHkuanMKQEAgLTcxMzA4LDExICs3MTMw
OCwxMSBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNw
YWNlL2ludGVybmFscy9pcy1leHRlbnNpYmxlLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxlXQogLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFscy9vd24tcHJvcGVy
dHkta2V5cy1iaW5kaW5nLXR5cGVzLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxzL293bi1wcm9w
ZXJ0eS1rZXlzLWJpbmRpbmctdHlwZXNfRklYVFVSRS5qcwogICBjbWQ6IHByZXBhcmVUZXN0MjYy
Rml4dHVyZQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNw
YWNlL2ludGVybmFscy9vd24tcHJvcGVydHkta2V5cy1zb3J0LmpzCi0gIGNtZDogcnVuVGVzdDI2
MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVd
CiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50
ZXJuYWxzL3ByZXZlbnQtZXh0ZW5zaW9ucy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRlcm5hbHMvc2V0LXByb3RvdHlw
ZS1vZi5qcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>