<?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>128316</bug_id>
          
          <creation_ts>2014-02-06 10:24:08 -0800</creation_ts>
          <short_desc>IDB: storage/indexeddb/create-index-with-integer-keys.html fails</short_desc>
          <delta_ts>2014-02-07 10:22:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>977419</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 10:24:08 -0800</bug_when>
    <thetext>IDB: storage/indexeddb/create-index-with-integer-keys.html fails

The test creates an object store, puts a record in the object store, creates an index, then opens an index cursor.

The index cursor is supposed to represent that record in the object store, but comes up undefined.

We don&apos;t write index records for indexes that are created *after* a record is put in its referenced object store.  Doh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977420</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-06 10:24:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/16002857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977490</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 12:28:09 -0800</bug_when>
    <thetext>Populating an index if it is created after an object store already has records is what &quot;IndexPopulator&quot; is about.

That mechanism is still nuts, though.  We&apos;re going to do this way better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977632</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 17:06:21 -0800</bug_when>
    <thetext>Have this working in a sane manner with a little JSC in the DatabaseProcess.

Working out a kink in the patch (the test still has one wrong result) then I&apos;ll post for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977741</commentid>
    <comment_count>4</comment_count>
      <attachid>223428</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 23:25:13 -0800</bug_when>
    <thetext>Created attachment 223428
Patch v1 - Figure out the index keys to write in the DatabaseProcess as part of the createIndex operation itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977742</commentid>
    <comment_count>5</comment_count>
      <attachid>223429</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 23:26:43 -0800</bug_when>
    <thetext>Created attachment 223429
Patch v2 - Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977867</commentid>
    <comment_count>6</comment_count>
      <attachid>223429</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-07 10:14:32 -0800</bug_when>
    <thetext>Comment on attachment 223429
Patch v2 - Fix style  

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:208
&gt; +        for (auto i : keyDatas)

This should be &quot;auto&amp;&quot; to avoid an apparent copy.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:209
&gt; +            keys.append(i.maybeCreateIDBKey());

Let&apos;s null check before append to avoid a nullptr dereference later.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:329
&gt; +                indexKeys.append(i.maybeCreateIDBKey());

Let&apos;s null check before append to avoid a nullptr dereference later.

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:355
&gt; +        if (!indexKey-&gt;isValid())
&gt; +            return;

Maybe we should check isValid in both cases -- maybe up at the top, by the nullptr check? It seems that an array key can be invalid, so I guess we should check it.

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:363
&gt; +        for (auto i : indexKey-&gt;array())

auto&amp;?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:646
&gt; +        for (auto indexKey : indexKeys) {

auto&amp;?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h:117
&gt; +    OwnPtr&lt;JSC::JSGlobalObject&gt; m_globalObject;

Please use JSC::Strong. It&apos;s like OwnPtr, but for GC instead of malloc. Otherwise, crash-o.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977879</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-07 10:22:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163627</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223428</attachid>
            <date>2014-02-06 23:25:13 -0800</date>
            <delta_ts>2014-02-06 23:26:43 -0800</delta_ts>
            <desc>Patch v1 - Figure out the index keys to write in the DatabaseProcess as part of the createIndex operation itself.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>47273</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YThlMWUwLi5mM2IwOTc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDIt
MDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIElEQjogc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDAyODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
OiBFbmFibGUgdGhlIHRlc3QuCisKIDIwMTQtMDItMDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZXN0IGNhc2UgZm9yIG5hdmlnYXRv
ci5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ODM0MDk2Li42MDVlOTVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC00NzQsNiArNDc0
LDcgQEAgZnVsbHNjcmVlbi9hbm9ueW1vdXMtYmxvY2stbWVyZ2UtY3Jhc2guaHRtbCBbIFBhc3Mg
XQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sIFsgUGFz
cyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1s
IFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwgWyBQYXNzIF0K
K3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlz
Lmh0bWwgWyBQYXNzIF0KIAogCiAjIyMgRU5EIE9GICg1KSBGZWF0dXJlcyB0aGF0IGFyZSBub3Qg
c3VwcG9ydGVkIGluIFdlYktpdDEsIHNvIHNraXBwZWQgaW4gbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
dGhlbiByZS1lbmFibGVkIGhlcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTJhMmEyLi5jOTI1YzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzkgQEAKIDIwMTQtMDItMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWlu
ZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE2MDAyODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RlZCBieSBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
aHRtbCAoYW5kIHByb2JhYmx5IHNvbWUgb3RoZXJzKQorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRl
KTogVXBkYXRlIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGggdXNhZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkpOiBVcGRhdGUgY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCB1c2FnZS4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpwdXQpOiBVcGRhdGUgdXNhZ2Ugb2YgYmluZGluZyB1dGlsaXRpZXMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IFVwZGF0ZSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoIHVzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6IENoYW5nZWQgdG8gdGFrZSBhbiBFeGVjU3RhdGUq
LgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6IEFkZGVkIG5l
dyB2ZXJzaW9uIHRoYXQgc3RhcnRzIHdpdGggRXhlY1N0YXRlKiBhbmQgVmVjdG9yPHVpbnQ4X3Q+
CisgICAgICAgICAgaW5zdGVhZCBvZiBSZXF1ZXN0U3RhdGUgYW5kIFNoYXJlZEJ1ZmZlci4KKyAg
ICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUpOiBNb3ZlZCBmcm9tIElE
Qk9iamVjdFN0b3JlLmNwcCBhbmQgY2hhbmdlZCB0byB0YWtlIGFuIEV4ZWNTdGF0ZSoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisKKyAgICAgICAgQWRkZWQg
bmV3IGJsb2IgZmV0Y2hlciB0aGF0IHdvcmtzIHdpdGggdWludDhfdCBidWZmZXJzOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iQXNWZWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
CisyMDE0LTAyLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAg
ICBJREI6IFJlbW92ZSB0aGUgZW50aXJlbHkgdW5uZWNlc3NhcnkgIlZhbHVlIEtleSIgY29uY2Vw
dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MzYw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmlu
ZGV4IDkxYTc3ZTguLmRjOTA3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVk
OjpTY3JpCiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCA9IG9iamVjdFN0b3JlLT5tZXRh
ZGF0YSgpLmtleVBhdGg7CiAgICAgY29uc3QgYm9vbCB1c2VzSW5MaW5lS2V5cyA9ICFrZXlQYXRo
LmlzTnVsbCgpOwogICAgIGlmICh1c2VzSW5MaW5lS2V5cykgewotICAgICAgICBSZWZQdHI8SURC
S2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCht
X3JlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLCB2YWx1ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0
cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKG1fcmVxdWVzdC0+cmVxdWVzdFN0YXRlKCktPmV4ZWMoKSwgdmFsdWUsIGtleVBhdGgpOwog
ICAgICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPmlzRXF1YWwobV9jdXJyZW50
UHJpbWFyeUtleS5nZXQoKSkpIHsKICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRhdGFFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhCiAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEgbWV0YWRhdGEgPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKTsKICAgICAgICAgaWYgKG1l
dGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYgIW1ldGFkYXRhLmtleVBhdGguaXNOdWxsKCkpIHsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNy
ZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgobV9yZXF1ZXN0LT5yZXF1ZXN0U3Rh
dGUoKSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOworICAgICAgICAgICAgUmVmUHRyPElEQktl
eT4gZXhwZWN0ZWRLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKG1f
cmVxdWVzdC0+cmVxdWVzdFN0YXRlKCktPmV4ZWMoKSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgp
OwogICAgICAgICAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVh
bChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJvb2wg
aW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUobV9yZXF1ZXN0LT5yZXF1ZXN0
U3RhdGUoKSwgbV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGQzYmE1ZTguLjA4OWMwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklE
QktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uLmgiCkBAIC05NCwyOSArOTUsNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAg
IHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXN0YXRp
YyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5
cyogaW5kZXhLZXlzKQotewotICAgIEFTU0VSVChpbmRleEtleXMpOwotICAgIFJlZlB0cjxJREJL
ZXk+IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1
ZXN0U3RhdGUsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBhdGgpOwotCi0gICAgaWYg
KCFpbmRleEtleSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpbmRleE1ldGFkYXRhLm11
bHRpRW50cnkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkgewotICAg
ICAgICBpZiAoIWluZGV4S2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaW5kZXhLZXlzLT5hcHBlbmQoaW5kZXhLZXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEFTU0VSVChpbmRleE1ldGFkYXRhLm11bHRpRW50cnkpOwotICAgICAgICBBU1NFUlQoaW5kZXhL
ZXktPnR5cGUoKSA9PSBJREJLZXk6OkFycmF5VHlwZSk7Ci0gICAgICAgIGluZGV4S2V5ID0gSURC
S2V5OjpjcmVhdGVNdWx0aUVudHJ5QXJyYXkoaW5kZXhLZXktPmFycmF5KCkpOwotCi0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhLZXktPmFycmF5KCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBpbmRleEtleXMtPmFwcGVuZChpbmRleEtleS0+YXJyYXkoKVtpXSk7Ci0gICAg
fQotfQotCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwpAQCAtMTk1LDcgKzE3Myw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJh
Y2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICh1c2VzSW5MaW5lS2V5cykgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0g
Y3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCgmcmVxdWVzdFN0YXRlLCB2YWx1
ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHJlcXVlc3RTdGF0ZS5leGVjKCksIHZhbHVl
LCBrZXlQYXRoKTsKICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXktPmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9y
OwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMjEsOSArMTk5LDE0IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1v
ZGUgcHV0TW9kZSwKICAgICBWZWN0b3I8aW50NjRfdD4gaW5kZXhJZHM7CiAgICAgVmVjdG9yPElu
ZGV4S2V5cz4gaW5kZXhLZXlzOwogICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5k
ZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0
ICE9IG1fbWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBJbmRleEtleXMg
a2V5czsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZSgmcmVxdWVzdFN0YXRlLCBp
dC0+dmFsdWUsIHZhbHVlLCAma2V5cyk7CisgICAgICAgIFZlY3RvcjxJREJLZXlEYXRhPiBrZXlE
YXRhczsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShyZXF1ZXN0U3RhdGUuZXhl
YygpLCBpdC0+dmFsdWUsIHZhbHVlLCBrZXlEYXRhcyk7CiAgICAgICAgIGluZGV4SWRzLmFwcGVu
ZChpdC0+a2V5KTsKKworICAgICAgICAvLyBGSVhNRTogTXVjaCBvZiB0aGUgSW5kZXhlZCBEQiBj
b2RlIG5lZWRzIHRvIHVzZSBJREJLZXlEYXRhIGRpcmVjdGx5IHRvIGF2b2lkIHdhc3RlZnVsIGNv
bnZlcnNpb25zIGxpa2UgdGhpcy4KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBrZXlz
OworICAgICAgICBmb3IgKGF1dG8gaSA6IGtleURhdGFzKQorICAgICAgICAgICAga2V5cy5hcHBl
bmQoaS5tYXliZUNyZWF0ZUlEQktleSgpKTsKICAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChrZXlz
KTsKICAgICB9CiAKQEAgLTMzOCw4ICszMjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFJl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBjdXJzb3ItPmlkYlByaW1hcnlLZXkoKTsKICAgICAg
ICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gY3Vyc29yLT52YWx1ZSgpOwog
Ci0gICAgICAgICAgICBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzIGluZGV4S2V5czsKLSAgICAg
ICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUocmVxdWVzdC0+cmVxdWVzdFN0YXRlKCks
IG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtleXMpOworICAgICAgICAgICAgVmVjdG9y
PElEQktleURhdGE+IGluZGV4S2V5RGF0YXM7CisgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKHJlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLT5leGVjKCksIG1faW5kZXhNZXRhZGF0
YSwgdmFsdWUsIGluZGV4S2V5RGF0YXMpOworCisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPElE
QktleT4+IGluZGV4S2V5czsKKyAgICAgICAgICAgIGZvciAoYXV0byBpIDogaW5kZXhLZXlEYXRh
cykKKyAgICAgICAgICAgICAgICBpbmRleEtleXMuYXBwZW5kKGkubWF5YmVDcmVhdGVJREJLZXko
KSk7CiAKICAgICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzLCAxPiBp
bmRleEtleXNMaXN0OwogICAgICAgICAgICAgaW5kZXhLZXlzTGlzdC5hcHBlbmQoaW5kZXhLZXlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
aW5kZXggY2FlNzM0OS4uZGIyNWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIsIFBhc3NS
ZWZQdHI8SURCSwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlL
ZXk7CiAjaWZuZGVmIE5ERUJVRwotICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1ZXN0U3RhdGUoKSwgdmFsdWUs
IGtleVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1ZXN0U3RhdGUoKS0+ZXhlYygpLCB2YWx1ZSwg
a2V5UGF0aCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVh
bChwcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKICAgICBib29sIGluamVjdGVkID0gaW5qZWN0
SURCS2V5SW50b1NjcmlwdFZhbHVlKHJlcXVlc3RTdGF0ZSgpLCBwcmltYXJ5S2V5LCB2YWx1ZSwg
a2V5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGE5YTNiYzguLmQ1YWQ0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC04NCw2ICs4NCw3IEBAIF9fWk43V2ViQ29yZTEwUmVuZGVyVmll
dzEwY29tcG9zaXRvckV2CiBfX1pON1dlYkNvcmUxMFJlbmRlclZpZXc3aGl0VGVzdEVSS05TXzE0
SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk43V2ViQ29yZTE1U1FMaXRl
U3RhdGVtZW50MTRnZXRDb2x1bW5JbnQ2NEVpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVu
dDIxZ2V0Q29sdW1uQmxvYkFzVmVjdG9yRWlSTjNXVEY2VmVjdG9ySWNMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDIxZ2V0Q29sdW1uQmxv
YkFzVmVjdG9yRWlSTjNXVEY2VmVjdG9ySWhMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBf
X1pON1dlYkNvcmUxMFNjcm9sbFZpZXcxNnNldFBhcmVudFZpc2libGVFYgogX19aTjdXZWJDb3Jl
MTBTY3JvbGxWaWV3MTdzZXRVc2VGaXhlZExheW91dEViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcxOHNldEZpeGVkTGF5b3V0U2l6ZUVSS05TXzdJbnRTaXplRQpAQCAtMzE1NSw1ICszMTU2LDcg
QEAgX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIwRUxiMEVOU18yMklEQk9i
amVjdFN0b3JlTWV0YWRhdGFFRTRjb3B5RVIKIF9fWk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlSUxiMEVMYjBFTlNfOUluZGV4ZWREQjEwQ3Vyc29yVHlwZUVFNGNvcHlFUktTMl8KIF9f
Wk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlSUxiMEVMYjBFTlNfOUluZGV4ZWREQjE1
Q3Vyc29yRGlyZWN0aW9uRUU0Y29weUVSS1MyXwogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENv
cGllckJhc2VJTGIwRUxiMEVOU185SW5kZXhlZERCMTVUcmFuc2FjdGlvbk1vZGVFRTRjb3B5RVJL
UzJfCitfX1pON1dlYkNvcmUyNWRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXJFUE4zSlNDOUV4ZWNT
dGF0ZUVSS04zV1RGNlZlY3RvckloTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRWIKK19fWk43
V2ViQ29yZTI1Z2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZUVQTjNKU0M5RXhlY1N0YXRlRVJLTlNf
MTZJREJJbmRleE1ldGFkYXRhRVJLTjEwRGVwcmVjYXRlZDExU2NyaXB0VmFsdWVFUk4zV1RGNlZl
Y3RvcklOU18xMElEQktleURhdGFFTG0wRU5TQV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlNklEQktleUQxRXYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyNWM2MjkuLjRmYzI3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
NDksMTAgKzE0NDksMTAgQEAKIAkJNDM5MDQ2RTYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOTA0NkQyMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290
LmggKi87IH07CiAJCTQzOTA0NkU3MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
OTA0NkQzMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCAqLzsgfTsK
IAkJNDM5MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ0MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggKi87IH07Ci0JCTQzOTA0NkVCMTJE
QTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyog
UmVuZGVyTWF0aE1MVG9rZW4uY3BwICovOyB9OwotCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkg
LyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tl
bi5oICovOyB9OwogCQk0MzkwNDZFOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTA0NkQ1MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwICov
OyB9OwogCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZE
NjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggKi87IH07CisJCTQz
OTA0NkVCMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBB
RjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwICovOyB9OworCQk0MzkwNDZFQzEyREEyNUU4
MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJN
YXRoTUxUb2tlbi5oICovOyB9OwogCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5p
bWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87IH07CiAJ
CTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDExM0E2
OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07CiAJCTQzOUQz
MzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKQEAgLTUzODksNyArNTM4OSw3IEBACiAJ
CUM1ODM2MUE5MTc0NDUyM0YwMDE3MzUxMSAvKiBGb250U2VydmljZXNJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1ODM2MUE3MTc0NDUyM0YwMDE3
MzUxMSAvKiBGb250U2VydmljZXNJT1MuaCAqLzsgfTsKIAkJQzU4MzYxQUExNzQ0NTIzRjAwMTcz
NTExIC8qIEZvbnRTZXJ2aWNlc0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1ODM2MUE4MTc0NDUyM0YwMDE3MzUxMSAvKiBGb250U2VydmljZXNJ
T1MubW0gKi87IH07CiAJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLzsg
fTsKLQkJQzU4NUE2NjMxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1ODVBNjYxMTFE
NEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi87IH07CisJCUM1ODVBNjYz
MTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY2MTExRDRGQUM1MDA0QzNFNEIg
LyogSURCQmluZGluZ1V0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUM1ODVBNjdEMTFENEZCMDgwMDRDM0U0QiAvKiBKU0lEQkFueS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NjUx
MUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCQW55LmggKi87IH07CiAJCUM1ODVBNjgzMTFENEZCMDgw
MDRDM0U0QiAvKiBKU0lEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY2QjExRDRGQjA3MDA0QzNFNEIgLyogSlNJREJEYXRhYmFz
ZS5oICovOyB9OwogCQlDNTg1QTY4RDExRDRGQjA4MDA0QzNFNEIgLyogSlNJREJLZXlSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NzUx
MUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCS2V5UmFuZ2UuaCAqLzsgfTsKQEAgLTgzMDIsMTAgKzgz
MDIsMTAgQEAKIAkJNDM5MDQ2RDIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5oOyBwYXRoID0gbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2RDMxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA7IHBhdGggPSBtYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkQ0MTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFJlbmRlck1hdGhNTFNjcmlwdHMuaDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzOTA0NkQ3MTJEQTI1RTgw
MEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBSZW5kZXJNYXRoTUxUb2tlbi5jcHA7IHBhdGggPSBtYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkwNDZEODEy
REEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MVG9rZW4uaDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZENTEyREEy
NUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA7IHBhdGggPSBt
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDM5MDQ2RDYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW5kZXJNYXRoTUxVbmRlck92ZXIu
aDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDM5MDQ2RDcxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlck1hdGhN
TFRva2VuLmNwcDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJN
YXRoTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW5kZXJNYXRo
TUxUb2tlbi5oOyBwYXRoID0gbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBjMjlkMzY4Li5jZWM2M2Y0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cApAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKIAog
I2luY2x1ZGUgIkRPTVJlcXVlc3RTdGF0ZS5oIgorI2luY2x1ZGUgIklEQkluZGV4TWV0YWRhdGEu
aCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKQEAgLTE3OCw3ICsxODAsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9u
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBWZQogICAg
IHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQor
c3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRW
YWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CkBAIC0y
NTQsMTggKzI1NiwxNiBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZQogICAgIHJldHVybiB0cnVl
OwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorUGFzc1JlZlB0
cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjcmVhdGVJREJLZXlGcm9t
U2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsK
IAotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotCiAgICAgaWYg
KGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSkgewogICAgICAgICBJREJL
ZXk6OktleUFycmF5IHJlc3VsdDsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5
ID0ga2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBhcnJheVtpXSk7Cisg
ICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFycmF5W2ldKTsKICAgICAgICAgICAg
IGlmICgha2V5KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChrZXkpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVz
CiAgICAgfQogCiAgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmlu
Z1R5cGUpOwotICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKKyAgICByZXR1cm4gaW50ZXJuYWxDcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0
cmluZygpKTsKIH0KIAogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVx
dWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBz
Y3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTMwNSwyMSArMzA1LDI2
IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVz
dFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSCiAKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIsIGJvb2wga2V5SXNEZWZpbmVkKQogewot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKKyAgICBpZiAocHJwQnVmZmVyKSB7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKKyAgICAgICAgdmFsdWUuYXBwZW5kKHBycEJ1
ZmZlci0+ZGF0YSgpLCBwcnBCdWZmZXItPnNpemUoKSk7CisgICAgICAgIHJldHVybiBkZXNlcmlh
bGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZS0+ZXhlYygpLCB2YWx1ZSwga2V5SXNEZWZp
bmVkKTsKKyAgICB9CisgCisgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHJlcXVl
c3RTdGF0ZS0+ZXhlYygpLT52bSgpLCBqc051bGwoKSk7Cit9CiAKK0RlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBib29sIGtleUlzRGVmaW5lZCkKK3sKICAgICAv
LyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIHRoZW4gdGhlIHZhbHVlIG11c3QgYmUgdW5kZWZp
bmVkIChhcyBvcHBvc2VkIHRvIG51bGwpLgogICAgIGlmICgha2V5SXNEZWZpbmVkKSB7CiAgICAg
ICAgIC8vIFdlIGVpdGhlciBzaG91bGRuJ3QgaGF2ZSBhIGJ1ZmZlciBvciBpdCBzaG91bGQgYmUg
b2Ygc2l6ZSAwLgotICAgICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBBU1NFUlQoIWJ1ZmZlci5zaXplKCkpOwogICAgICAgICByZXR1cm4gRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAg
aWYgKGJ1ZmZlcikgewotICAgICAgICAvLyBGSVhNRTogVGhlIGV4dHJhIGNvcHkgaGVyZSBjYW4g
YmUgZWxpbWluYXRlZCBieSBhbGxvd2luZyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGFrZSBh
IHJhdyBjb25zdCBjaGFyKiBvciBjb25zdCB1aW50OF90Ki4KLSAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlOwotICAgICAgICB2YWx1ZS5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHZhbHVl
KTsKKyAgICBpZiAoYnVmZmVyLnNpemUoKSkgeworICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21XaXJlQnl0ZXMoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVzZXJpYWxpemUoZXhlYywgc2VyaWFsaXplZFZhbHVlLmdldCgpLCBOb25UaHJvd2lu
Zyk7CiAgICAgfQogCkBAIC0zMzgsNiArMzQzLDI4IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBzY3Jp
cHRWYWx1ZVRvSURCS2V5KERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBjb25zdCBEZXBy
CiAgICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21WYWx1ZShleGVjLCBzY3JpcHRWYWx1ZS5qc1Zh
bHVlKCkpOwogfQogCit2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgb2JqZWN0VmFsdWUsIFZlY3RvcjxJREJLZXlEYXRhPiYgaW5kZXhL
ZXlzKQoreworICAgIFJlZlB0cjxJREJLZXk+IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNj
cmlwdFZhbHVlQW5kS2V5UGF0aChleGVjLCBvYmplY3RWYWx1ZSwgaW5kZXhNZXRhZGF0YS5rZXlQ
YXRoKTsKKworICAgIGlmICghaW5kZXhLZXkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
aW5kZXhNZXRhZGF0YS5tdWx0aUVudHJ5IHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpB
cnJheVR5cGUpIHsKKyAgICAgICAgaWYgKCFpbmRleEtleS0+aXNWYWxpZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGluZGV4S2V5cy5hcHBlbmQoSURCS2V5RGF0YShpbmRleEtl
eS5nZXQoKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleE1ldGFkYXRhLm11
bHRpRW50cnkpOworICAgICAgICBBU1NFUlQoaW5kZXhLZXktPnR5cGUoKSA9PSBJREJLZXk6OkFy
cmF5VHlwZSk7CisgICAgICAgIGluZGV4S2V5ID0gSURCS2V5OjpjcmVhdGVNdWx0aUVudHJ5QXJy
YXkoaW5kZXhLZXktPmFycmF5KCkpOworCisgICAgICAgIGZvciAoYXV0byBpIDogaW5kZXhLZXkt
PmFycmF5KCkpCisgICAgICAgICAgICBpbmRleEtleXMuYXBwZW5kKElEQktleURhdGEoaS5nZXQo
KSkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggODA0N2Y4Ny4uNGQwMDA4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMzksMTUg
KzM5LDIwIEBAIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQktleURhdGE7CisK
IElEQktleVBhdGggaWRiS2V5UGF0aEZyb21WYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSk7CiAKIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0
ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJ
REJLZXlQYXRoJik7Ci1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZh
bHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKK1Bhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJL
ZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVjdElE
QktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURC
VmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBi
b29sIGtleUlzRGVmaW5lZCk7CitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgYm9v
bCBrZXlJc0RlZmluZWQpOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgaWRiS2V5VG9TY3JpcHRW
YWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4pOwogUGFzc1JlZlB0cjxJ
REJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUmKTsKK3ZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+
JiBpbmRleEtleXMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggNTI2YzAyMy4uNmYxYTljZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTQyOCw2ICs0Mjgs
MzIgQEAgdm9pZCBTUUxpdGVTdGF0ZW1lbnQ6OmdldENvbHVtbkJsb2JBc1ZlY3RvcihpbnQgY29s
LCBWZWN0b3I8Y2hhcj4mIHJlc3VsdCkKICAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihibG9iKSlbaV07CiB9CiAKK3ZvaWQgU1FMaXRlU3RhdGVt
ZW50OjpnZXRDb2x1bW5CbG9iQXNWZWN0b3IoaW50IGNvbCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1
bHQpCit7CisgICAgQVNTRVJUKGNvbCA+PSAwKTsKKworICAgIGlmICghbV9zdGF0ZW1lbnQgJiYg
cHJlcGFyZUFuZFN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIHJlc3VsdC5jbGVhcigp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29s
KSB7CisgICAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgY29uc3Qgdm9pZCogYmxvYiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2IobV9zdGF0ZW1lbnQsIGNv
bCk7CisgICAgaWYgKCFibG9iKSB7CisgICAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5
dGVzKG1fc3RhdGVtZW50LCBjb2wpOworICAgIHJlc3VsdC5yZXNpemUoKHNpemVfdClzaXplKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0W2ldID0g
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihibG9iKSlbaV07Cit9CisKIGJvb2wgU1FMaXRl
U3RhdGVtZW50OjpyZXR1cm5UZXh0UmVzdWx0cyhpbnQgY29sLCBWZWN0b3I8U3RyaW5nPiYgdikK
IHsKICAgICBBU1NFUlQoY29sID49IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IDBmZWI1N2MuLjNjMmZmZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTgzLDYgKzgzLDcgQEAg
cHVibGljOgogICAgIGludDY0X3QgZ2V0Q29sdW1uSW50NjQoaW50IGNvbCk7CiAgICAgU3RyaW5n
IGdldENvbHVtbkJsb2JBc1N0cmluZyhpbnQgY29sKTsKICAgICB2b2lkIGdldENvbHVtbkJsb2JB
c1ZlY3RvcihpbnQgY29sLCBWZWN0b3I8Y2hhcj4mKTsKKyAgICB2b2lkIGdldENvbHVtbkJsb2JB
c1ZlY3RvcihpbnQgY29sLCBWZWN0b3I8dWludDhfdD4mKTsKIAogICAgIGJvb2wgcmV0dXJuVGV4
dFJlc3VsdHMoaW50IGNvbCwgVmVjdG9yPFN0cmluZz4mKTsKICAgICBib29sIHJldHVybkludFJl
c3VsdHMoaW50IGNvbCwgVmVjdG9yPGludD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZjdmNGZkLi40YmRi
OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAgQEAKIDIwMTQtMDItMDYgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogc3RvcmFnZS9pbmRleGVkZGIv
Y3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzE2MDAyODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyODMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9yPHVpbnQ4X3Q+IHRocm91Z2hvdXQ6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1
cnNvckluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6
OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5oOgorCisgICAgICAgIFVwZGF0ZSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9yPHVpbnQ4
X3Q+IHRocm91Z2hvdXQ6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxp
dGUvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlSURCQ3Vyc29y
OjphZHZhbmNlT25jZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxp
dGUvU1FMaXRlSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZUlEQkN1cnNvcjo6
Y3VycmVudFZhbHVlQnVmZmVyKToKKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBEYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FM
aXRlOjpjcmVhdGVJbmRleCk6IENyZWF0ZSBhIHNjcmlwdCB2YWx1ZSBmcm9tIHRoZSB2YWx1ZSBk
YXRhLCB1c2UKKyAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlIHRvIGdldCB0aGUg
aW5kZXgga2V5cywgYW5kIHRoZW4gd3JpdGUgdGhlIHJlc3VsdGluZyBpbmRleCByZWNvcmRzLgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cHV0
SW5kZXhSZWNvcmQpOiBDYWxsIHRocm91Z2ggdG8gdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQuCisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZCk6IFZlcnNpb24gb2YgcHV0SW5kZXhSZWNvcmQgdGhhdCBkb2Vz
buKAmXQKKyAgICAgICAgICB2YWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24gb3IgaXRzIG1vZGUuCisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVu
Q3Vyc29yKTogVXBkYXRlIFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4uCisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjphZHZhbmNlQ3Vy
c29yKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlOjppdGVyYXRlQ3Vyc29yKTogRGl0dG8uCisgICAgICAgICogRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUu
aDoKKworMjAxNC0wMi0wNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE2MzYxMi4KIAogICAgICAgICAqIERh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlU1FMaXRlLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggN2UxNjBiNy4u
NjhhNjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTk1MSw3ICs5NTEsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZAogICAgIGludDY0X3QgY3Vyc29ySUQgPSAwOwogICAg
IElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBWZWN0b3I8
Y2hhcj4gdmFsdWVCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOwogICAg
IGludDMyX3QgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJv
b2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJzb3JUeXBl
LCB0YXNrVHlwZSwga2V5UmFuZ2UsIGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVm
ZmVyKTsKQEAgLTk2NCw3ICs5NjQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vy
c29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZAogICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGN1cnNvcklELCBrZXks
IHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXks
IGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWVC
dWZmZXIsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNv
bnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVC
dWZmZXIsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7
CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0RhdGFiYXNlVGFz
a3MudGFrZShyZXF1ZXN0SUQpOwogICAgIEFTU0VSVChyZXF1ZXN0KTsKQEAgLTk3Niw3ICs5NzYs
NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJRAogewogICAgIElEQktleURhdGEga2V5OwogICAg
IElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBWZWN0b3I8Y2hhcj4gdmFsdWVCdWZmZXI7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOwogICAgIGludDMyX3QgZXJyb3JDb2RlID0g
MDsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2lu
Z1N0b3JlLT5hZHZhbmNlQ3Vyc29yKGN1cnNvcklkZW50aWZpZXIsIGNvdW50LCBrZXksIHByaW1h
cnlLZXksIHZhbHVlQnVmZmVyKTsKQEAgLTk4OSw3ICs5ODksNyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJRAogICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkQWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0
SUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdl
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZEFkdmFuY2VDdXJzb3JJbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3Qg
SURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZUJ1ZmZlciwg
dWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZEFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFy
eUtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciwgdWludDMyX3QgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiByZXF1ZXN0ID0gbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy50YWtlKHJlcXVlc3RJRCk7CiAg
ICAgQVNTRVJUKHJlcXVlc3QpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSUQKIHsKICAgICBJREJLZXlEYXRhIGtleTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlL
ZXk7Ci0gICAgVmVjdG9yPGNoYXI+IHZhbHVlQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiB2
YWx1ZUJ1ZmZlcjsKICAgICBpbnQzMl90IGVycm9yQ29kZSA9IDA7CiAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZTsKICAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNv
cihjdXJzb3JJZGVudGlmaWVyLCBpdGVyYXRlS2V5LCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVm
ZmVyKTsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJh
dGVDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElECiAgICAg
cG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBwcmlt
YXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAotdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3Qg
PSBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLnRha2UocmVxdWVzdElEKTsKICAgICBBU1NFUlQocmVx
dWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggZDdlMmEwNS4uZmRiNDA0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJ
REJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMTc1LDkgKzE3NSw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWREZWxldGVJbmRleCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAg
ICAgdm9pZCBkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIGRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1bHQmLCB1aW50MzJf
dCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIGRpZE9w
ZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29y
SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiwgY29uc3QgVmVjdG9yPGNoYXI+JiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYsIHVpbnQzMl90IGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNv
ckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0b3I8Y2hhcj4mLCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lk
IGRpZE9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3Qg
Y3Vyc29ySUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaWRBZHZhbmNlQ3Vyc29ySW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwg
Y29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlk
SXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKICAgICB2b2lkIGRpZENvdW50SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IGNvdW50LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKTsKICAgICB2b2lkIGRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDk2MGE2YjEuLmM2MTEwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJv
Y2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlLmgKQEAgLTc5LDkgKzc5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBn
ZXRLZXlSYW5nZVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6
SURCS2V5UmFuZ2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiYgcmVzdWx0S2V5KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNv
dW50KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYsIGludDY0X3QmIGNvdW50KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkN1cnNv
cihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBp
bnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURh
dGEmLCBWZWN0b3I8Y2hhcj4mKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGFkdmFuY2VDdXJzb3Io
Y29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIFdl
YkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVjdG9yPGNoYXI+Jikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXIm
IGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFZlY3RvcjxjaGFyPiYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJD
b3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJz
b3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRl
bnRpZmllciwgdWludDY0X3QgY291bnQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgVmVjdG9yPHVpbnQ4X3Q+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpdGVy
YXRlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFZlY3Rvcjx1aW50OF90PiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggNGY2ZTAzZC4uNmRj
YjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yODMsMTAg
KzI4MywxMCBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZU9uY2UoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGtleURhdGE7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGtleURhdGE7CiAgICAgbV9zdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigwLCBrZXlEYXRhKTsKIAotICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5zaXpl
KCksIG1fY3VycmVudEtleSkpIHsKKyAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlE
YXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIG1fY3VycmVudEtleSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGls
ZSBhZHZhbmNpbmcgY3Vyc29yIik7CiAgICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAg
ICAgbV9lcnJvcmVkID0gdHJ1ZTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBib29sIFNRTGl0ZUlEQkN1
cnNvcjo6YWR2YW5jZU9uY2UoKQogICAgIG1fY3VycmVudFZhbHVlQnVmZmVyID0ga2V5RGF0YTsK
IAogICAgIGlmIChtX2luZGV4SUQgIT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0g
ICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5zaXplKCksIG1fY3VycmVudFByaW1h
cnlLZXkpKSB7CisgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0
YSgpLCBrZXlEYXRhLnNpemUoKSwgbV9jdXJyZW50UHJpbWFyeUtleSkpIHsKICAgICAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFz
ZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CiAgICAgICAgICAgICBtX2NvbXBsZXRl
ZCA9IHRydWU7CiAgICAgICAgICAgICBtX2Vycm9yZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vy
c29yLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9T
UUxpdGVJREJDdXJzb3IuaAppbmRleCA0MTQ0MjM4Li44MWI0MzdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJz
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0
ZS9TUUxpdGVJREJDdXJzb3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBXZWJDb3JlOjpJREJLZXlEYXRhJiBjdXJyZW50S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50S2V5OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYgY3VycmVudFByaW1hcnlL
ZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9Ci0gICAgY29uc3QgVmVj
dG9yPGNoYXI+JiBjdXJyZW50VmFsdWVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRW
YWx1ZUJ1ZmZlcjsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3VycmVudFZhbHVlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWVCdWZmZXI7IH0KIAogICAgIGJvb2wg
YWR2YW5jZSh1aW50NjRfdCBjb3VudCk7CiAgICAgYm9vbCBpdGVyYXRlKGNvbnN0IFdlYkNvcmU6
OklEQktleURhdGEmIHRhcmdldEtleSk7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpJREJLZXlEYXRhIG1fY3VycmVudEtleTsKICAgICBXZWJDb3JlOjpJREJLZXlE
YXRhIG1fY3VycmVudFByaW1hcnlLZXk7Ci0gICAgVmVjdG9yPGNoYXI+IG1fY3VycmVudFZhbHVl
QnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiBtX2N1cnJlbnRWYWx1ZUJ1ZmZlcjsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3RhdGVtZW50Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3Nx
bGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZS5jcHAKaW5kZXggNTU1YzljNy4uMTU5MTllMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURC
RGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5o
IgogI2luY2x1ZGUgIlNRTGl0ZUlEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJCaW5kaW5nVXRpbGl0aWVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JREJHZXRSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KQEAgLTQz
LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MTIsNiArNjE0LDUwIEBAIGJv
b2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAg
ICAvLyBXcml0ZSBpbmRleCByZWNvcmRzIGZvciBhbnkgcmVjb3JkcyB0aGF0IGFscmVhZHkgZXhp
c3QgaW4gdGhpcyBvYmplY3Qgc3RvcmUuCisgICAgU1FMaXRlSURCQ3Vyc29yKiBjdXJzb3IgPSB0
cmFuc2FjdGlvbi0+b3BlbkN1cnNvcihvYmplY3RTdG9yZUlELCBJREJJbmRleE1ldGFkYXRhOjpJ
bnZhbGlkSWQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0LCBJbmRleGVkREI6OkN1
cnNvclR5cGU6OktleUFuZFZhbHVlLCBJREJEYXRhYmFzZUJhY2tlbmQ6Ok5vcm1hbFRhc2ssIElE
QktleVJhbmdlRGF0YSgpKTsKKworICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgIExPR19FUlJP
UigiQ2Fubm90IG9wZW4gY3Vyc29yIHRvIHBvcHVsYXRlIGluZGV4ZXMgaW4gZGF0YWJhc2UiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fY3Vyc29ycy5zZXQoY3Vyc29y
LT5pZGVudGlmaWVyKCksIGN1cnNvcik7CisKKyAgICBPd25QdHI8SlNMb2NrSG9sZGVyPiBsb2Nr
SG9sZGVyOworICAgIHdoaWxlICghY3Vyc29yLT5jdXJyZW50S2V5KCkuaXNOdWxsKSB7CisgICAg
ICAgIGNvbnN0IElEQktleURhdGEmIGtleSA9IGN1cnNvci0+Y3VycmVudEtleSgpOworICAgICAg
ICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyID0gY3Vyc29yLT5jdXJyZW50VmFs
dWVCdWZmZXIoKTsKKworICAgICAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAg
ICBBU1NFUlQoIW1fdm0pOworICAgICAgICAgICAgbV92bSA9IFZNOjpjcmVhdGUoKTsKKyAgICAg
ICAgICAgIGxvY2tIb2xkZXIgPSBhZG9wdFB0cihuZXcgSlNMb2NrSG9sZGVyKG1fdm0uZ2V0KCkp
KTsKKyAgICAgICAgICAgIG1fZ2xvYmFsT2JqZWN0ID0gYWRvcHRQdHIoSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZSgqbV92bSwgSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwganNO
dWxsKCkpKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxvY2tIb2xkZXIpCisgICAgICAg
ICAgICBsb2NrSG9sZGVyID0gYWRvcHRQdHIobmV3IEpTTG9ja0hvbGRlcihtX3ZtLmdldCgpKSk7
CisKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHZhbHVlQnVmZmVyLCB0
cnVlKTsKKyAgICAgICAgVmVjdG9yPElEQktleURhdGE+IGluZGV4S2V5czsKKyAgICAgICAgZ2Vu
ZXJhdGVJbmRleEtleXNGb3JWYWx1ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBtZXRh
ZGF0YSwgdmFsdWUsIGluZGV4S2V5cyk7CisKKyAgICAgICAgZm9yIChhdXRvIGluZGV4S2V5IDog
aW5kZXhLZXlzKSB7CisgICAgICAgICAgICBpZiAoIXVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKG9i
amVjdFN0b3JlSUQsIG1ldGFkYXRhLmlkLCBrZXksIGluZGV4S2V5KSkgeworICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHB1dCBpbmRleCByZWNvcmQgZm9yIG5ld2x5IGNyZWF0
ZWQgaW5kZXgiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWN1cnNvci0+YWR2YW5jZSgxKSkgeworICAgICAg
ICAgICAgTE9HX0VSUk9SKCJFcnJvciBhZHZhbmNpbmcgY3Vyc29yIHdoaWxlIGluZGV4aW5nIGV4
aXN0aW5nIHJlY29yZHMgZm9yIG5ldyBpbmRleC4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRyYW5zYWN0aW9uLT5jbG9zZUN1cnNvcigqY3Vy
c29yKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04MjUsNiArODcxLDExIEBAIGJvb2wg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnB1dEluZGV4UmVjb3JkKGNvbnN0
IElEQklkZW50aWZpZXImIHRyCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBy
ZXR1cm4gdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQob2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwga2V5
VmFsdWUsIGluZGV4S2V5KTsKK30KKworYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBp
bnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGtleVZhbHVlLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlEYXRhJiBpbmRleEtleSkKK3sKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAg
IGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CkBAIC0xMTM1
LDcgKzExODYsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpj
b3VudChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbgogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVuQ3Vyc29y
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1
cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5
UmFuZ2UsIGludDY0X3QmIGN1cnNvcklELCBJREJLZXlEYXRhJiBrZXksIElEQktleURhdGEmIHBy
aW1hcnlLZXksIFZlY3RvcjxjaGFyPiYgdmFsdWVCdWZmZXIpCitib29sIFVuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4
SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERC
OjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFz
a1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIGludDY0X3QmIGN1cnNvcklE
LCBJREJLZXlEYXRhJiBrZXksIElEQktleURhdGEmIHByaW1hcnlLZXksIFZlY3Rvcjx1aW50OF90
PiYgdmFsdWVCdWZmZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fc3FsaXRlREIpOwpAQCAtMTE2MCw3ICsxMjExLDcgQEAgYm9vbCBVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0
cmFuc2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZTo6YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgSURCS2V5RGF0YSYga2V5LCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVyKQorYm9vbCBVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVy
JiBjdXJzb3JJZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgSURCS2V5RGF0YSYga2V5LCBJREJL
ZXlEYXRhJiBwcmltYXJ5S2V5LCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKQEAgLTEx
ODgsNyArMTIzOSw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6
OmFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3VyCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5
RGF0YSYgdGFyZ2V0S2V5LCBJREJLZXlEYXRhJiBrZXksIElEQktleURhdGEmIHByaW1hcnlLZXks
IFZlY3RvcjxjaGFyPiYgdmFsdWVCdWZmZXIpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklk
ZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHRhcmdldEtleSwgSURCS2V5RGF0YSYga2V5LCBJ
REJLZXlEYXRhJiBwcmltYXJ5S2V5LCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZS5oCmluZGV4IDg5ZGEyOTMuLmUyNDU3YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgK
QEAgLTM0LDYgKzM0LDExIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKK2NsYXNzIFZNOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTUUxp
dGVEYXRhYmFzZTsKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwpAQCAtODIsOSArODcsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldEtleVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0
b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZSYsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiByZXN1bHQsIFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+JiByZXN1bHRL
ZXkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjb3VudChjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBp
bmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjb3VudCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRf
dCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6
SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tU
eXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwg
V2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4m
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVu
dGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJDb3Jl
OjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JU
eXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJDb3Jl
OjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgYWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6
OklEQktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6
OklEQktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdW5y
ZWdpc3RlckN1cnNvcihTUUxpdGVJREJDdXJzb3IqKTsKIApAQCAtOTYsNiArMTAxLDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4g
Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsTWV0YWRhdGEoKTsKIAogICAgIGJvb2wgZGVsZXRlUmVj
b3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlEYXRhJik7CisgICAgYm9vbCB1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURC
S2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGluZGV4S2V5KTsK
IAogICAgIGludCBpZGJLZXlDb2xsYXRlKGludCBhTGVuZ3RoLCBjb25zdCB2b2lkKiBhLCBpbnQg
Ykxlbmd0aCwgY29uc3Qgdm9pZCogYik7CiAKQEAgLTEwNiw2ICsxMTIsOSBAQCBwcml2YXRlOgog
CiAgICAgSGFzaE1hcDxJREJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJh
bnNhY3Rpb24+PiBtX3RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQklkZW50aWZpZXIsIFNR
TGl0ZUlEQkN1cnNvcio+IG1fY3Vyc29yczsKKworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOwor
ICAgIE93blB0cjxKU0M6OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223429</attachid>
            <date>2014-02-06 23:26:43 -0800</date>
            <delta_ts>2014-02-07 10:14:32 -0800</delta_ts>
            <desc>Patch v2 - Fix style  </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>47258</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YThlMWUwLi5mM2IwOTc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDIt
MDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIElEQjogc3Rv
cmFnZS9pbmRleGVkZGIvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDAyODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
OiBFbmFibGUgdGhlIHRlc3QuCisKIDIwMTQtMDItMDYgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZXN0IGNhc2UgZm9yIG5hdmlnYXRv
ci5pc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ODM0MDk2Li42MDVlOTVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC00NzQsNiArNDc0
LDcgQEAgZnVsbHNjcmVlbi9hbm9ueW1vdXMtYmxvY2stbWVyZ2UtY3Jhc2guaHRtbCBbIFBhc3Mg
XQogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9hZGQtdHdpY2UtZmFpbHVyZS5odG1sIFsgUGFz
cyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2F1dG9pbmNyZW1lbnQtaW5kZXhlcy5odG1s
IFsgUGFzcyBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLmh0bWwgWyBQYXNzIF0K
K3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY3JlYXRlLWluZGV4LXdpdGgtaW50ZWdlci1rZXlz
Lmh0bWwgWyBQYXNzIF0KIAogCiAjIyMgRU5EIE9GICg1KSBGZWF0dXJlcyB0aGF0IGFyZSBub3Qg
c3VwcG9ydGVkIGluIFdlYktpdDEsIHNvIHNraXBwZWQgaW4gbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
dGhlbiByZS1lbmFibGVkIGhlcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYTJhMmEyLi5jOTI1YzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzkgQEAKIDIwMTQtMDItMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWlu
ZGV4LXdpdGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE2MDAyODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3RlZCBieSBzdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtaW5kZXgtd2l0aC1pbnRlZ2VyLWtleXMu
aHRtbCAoYW5kIHByb2JhYmx5IHNvbWUgb3RoZXJzKQorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRl
KTogVXBkYXRlIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGggdXNhZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkpOiBVcGRhdGUgY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCB1c2FnZS4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpwdXQpOiBVcGRhdGUgdXNhZ2Ugb2YgYmluZGluZyB1dGlsaXRpZXMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6IFVwZGF0ZSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0
VmFsdWVBbmRLZXlQYXRoIHVzYWdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbENyZWF0ZUlEQktleUZy
b21TY3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6IENoYW5nZWQgdG8gdGFrZSBhbiBFeGVjU3RhdGUq
LgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6IEFkZGVkIG5l
dyB2ZXJzaW9uIHRoYXQgc3RhcnRzIHdpdGggRXhlY1N0YXRlKiBhbmQgVmVjdG9yPHVpbnQ4X3Q+
CisgICAgICAgICAgaW5zdGVhZCBvZiBSZXF1ZXN0U3RhdGUgYW5kIFNoYXJlZEJ1ZmZlci4KKyAg
ICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUpOiBNb3ZlZCBmcm9tIElE
Qk9iamVjdFN0b3JlLmNwcCBhbmQgY2hhbmdlZCB0byB0YWtlIGFuIEV4ZWNTdGF0ZSoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmg6CisKKyAgICAgICAgQWRkZWQg
bmV3IGJsb2IgZmV0Y2hlciB0aGF0IHdvcmtzIHdpdGggdWludDhfdCBidWZmZXJzOgorICAgICAg
ICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iQXNWZWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
CisyMDE0LTAyLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAg
ICBJREI6IFJlbW92ZSB0aGUgZW50aXJlbHkgdW5uZWNlc3NhcnkgIlZhbHVlIEtleSIgY29uY2Vw
dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MzYw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmlu
ZGV4IDkxYTc3ZTguLmRjOTA3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVk
OjpTY3JpCiAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCA9IG9iamVjdFN0b3JlLT5tZXRh
ZGF0YSgpLmtleVBhdGg7CiAgICAgY29uc3QgYm9vbCB1c2VzSW5MaW5lS2V5cyA9ICFrZXlQYXRo
LmlzTnVsbCgpOwogICAgIGlmICh1c2VzSW5MaW5lS2V5cykgewotICAgICAgICBSZWZQdHI8SURC
S2V5PiBrZXlQYXRoS2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCht
X3JlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLCB2YWx1ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0
cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQ
YXRoKG1fcmVxdWVzdC0+cmVxdWVzdFN0YXRlKCktPmV4ZWMoKSwgdmFsdWUsIGtleVBhdGgpOwog
ICAgICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPmlzRXF1YWwobV9jdXJyZW50
UHJpbWFyeUtleS5nZXQoKSkpIHsKICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRhdGFFcnJvcjsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KERPTVJlcXVlc3RTdGF0ZSogc3RhdGUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhCiAgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEgbWV0YWRhdGEgPSBvYmplY3RTdG9yZS0+bWV0YWRhdGEoKTsKICAgICAgICAgaWYgKG1l
dGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYgIW1ldGFkYXRhLmtleVBhdGguaXNOdWxsKCkpIHsKICNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9IGNy
ZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgobV9yZXF1ZXN0LT5yZXF1ZXN0U3Rh
dGUoKSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOworICAgICAgICAgICAgUmVmUHRyPElEQktl
eT4gZXhwZWN0ZWRLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKG1f
cmVxdWVzdC0+cmVxdWVzdFN0YXRlKCktPmV4ZWMoKSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgp
OwogICAgICAgICAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVh
bChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJvb2wg
aW5qZWN0ZWQgPSBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUobV9yZXF1ZXN0LT5yZXF1ZXN0
U3RhdGUoKSwgbV9jdXJyZW50UHJpbWFyeUtleSwgdmFsdWUsIG1ldGFkYXRhLmtleVBhdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGQzYmE1ZTguLjA4OWMwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAj
aW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklE
QktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uLmgiCkBAIC05NCwyOSArOTUsNiBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAg
IHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2UucmVsZWFzZSgpLCBlYyk7CiB9CiAKLXN0YXRp
YyB2b2lkIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0
U3RhdGUsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgSURCT2JqZWN0U3RvcmU6OkluZGV4S2V5
cyogaW5kZXhLZXlzKQotewotICAgIEFTU0VSVChpbmRleEtleXMpOwotICAgIFJlZlB0cjxJREJL
ZXk+IGluZGV4S2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1
ZXN0U3RhdGUsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBhdGgpOwotCi0gICAgaWYg
KCFpbmRleEtleSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpbmRleE1ldGFkYXRhLm11
bHRpRW50cnkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkgewotICAg
ICAgICBpZiAoIWluZGV4S2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaW5kZXhLZXlzLT5hcHBlbmQoaW5kZXhLZXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEFTU0VSVChpbmRleE1ldGFkYXRhLm11bHRpRW50cnkpOwotICAgICAgICBBU1NFUlQoaW5kZXhL
ZXktPnR5cGUoKSA9PSBJREJLZXk6OkFycmF5VHlwZSk7Ci0gICAgICAgIGluZGV4S2V5ID0gSURC
S2V5OjpjcmVhdGVNdWx0aUVudHJ5QXJyYXkoaW5kZXhLZXktPmFycmF5KCkpOwotCi0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhLZXktPmFycmF5KCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBpbmRleEtleXMtPmFwcGVuZChpbmRleEtleS0+YXJyYXkoKVtpXSk7Ci0gICAg
fQotfQotCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwpAQCAtMTk1LDcgKzE3Myw3IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJh
Y2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlm
ICh1c2VzSW5MaW5lS2V5cykgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5ID0g
Y3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCgmcmVxdWVzdFN0YXRlLCB2YWx1
ZSwga2V5UGF0aCk7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKHJlcXVlc3RTdGF0ZS5leGVjKCksIHZhbHVl
LCBrZXlQYXRoKTsKICAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXktPmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9y
OwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMjEsOSArMTk5LDE0IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChJREJEYXRhYmFzZUJhY2tlbmQ6OlB1dE1v
ZGUgcHV0TW9kZSwKICAgICBWZWN0b3I8aW50NjRfdD4gaW5kZXhJZHM7CiAgICAgVmVjdG9yPElu
ZGV4S2V5cz4gaW5kZXhLZXlzOwogICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5k
ZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmJlZ2luKCk7IGl0
ICE9IG1fbWV0YWRhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBJbmRleEtleXMg
a2V5czsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZSgmcmVxdWVzdFN0YXRlLCBp
dC0+dmFsdWUsIHZhbHVlLCAma2V5cyk7CisgICAgICAgIFZlY3RvcjxJREJLZXlEYXRhPiBrZXlE
YXRhczsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShyZXF1ZXN0U3RhdGUuZXhl
YygpLCBpdC0+dmFsdWUsIHZhbHVlLCBrZXlEYXRhcyk7CiAgICAgICAgIGluZGV4SWRzLmFwcGVu
ZChpdC0+a2V5KTsKKworICAgICAgICAvLyBGSVhNRTogTXVjaCBvZiB0aGUgSW5kZXhlZCBEQiBj
b2RlIG5lZWRzIHRvIHVzZSBJREJLZXlEYXRhIGRpcmVjdGx5IHRvIGF2b2lkIHdhc3RlZnVsIGNv
bnZlcnNpb25zIGxpa2UgdGhpcy4KKyAgICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBrZXlz
OworICAgICAgICBmb3IgKGF1dG8gaSA6IGtleURhdGFzKQorICAgICAgICAgICAga2V5cy5hcHBl
bmQoaS5tYXliZUNyZWF0ZUlEQktleSgpKTsKICAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChrZXlz
KTsKICAgICB9CiAKQEAgLTMzOCw4ICszMjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFJl
ZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBjdXJzb3ItPmlkYlByaW1hcnlLZXkoKTsKICAgICAg
ICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gY3Vyc29yLT52YWx1ZSgpOwog
Ci0gICAgICAgICAgICBJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzIGluZGV4S2V5czsKLSAgICAg
ICAgICAgIGdlbmVyYXRlSW5kZXhLZXlzRm9yVmFsdWUocmVxdWVzdC0+cmVxdWVzdFN0YXRlKCks
IG1faW5kZXhNZXRhZGF0YSwgdmFsdWUsICZpbmRleEtleXMpOworICAgICAgICAgICAgVmVjdG9y
PElEQktleURhdGE+IGluZGV4S2V5RGF0YXM7CisgICAgICAgICAgICBnZW5lcmF0ZUluZGV4S2V5
c0ZvclZhbHVlKHJlcXVlc3QtPnJlcXVlc3RTdGF0ZSgpLT5leGVjKCksIG1faW5kZXhNZXRhZGF0
YSwgdmFsdWUsIGluZGV4S2V5RGF0YXMpOworCisgICAgICAgICAgICBWZWN0b3I8UmVmUHRyPElE
QktleT4+IGluZGV4S2V5czsKKyAgICAgICAgICAgIGZvciAoYXV0byBpIDogaW5kZXhLZXlEYXRh
cykKKyAgICAgICAgICAgICAgICBpbmRleEtleXMuYXBwZW5kKGkubWF5YmVDcmVhdGVJREJLZXko
KSk7CiAKICAgICAgICAgICAgIFZlY3RvcjxJREJPYmplY3RTdG9yZTo6SW5kZXhLZXlzLCAxPiBp
bmRleEtleXNMaXN0OwogICAgICAgICAgICAgaW5kZXhLZXlzTGlzdC5hcHBlbmQoaW5kZXhLZXlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAK
aW5kZXggY2FlNzM0OS4uZGIyNWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIElEQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIsIFBhc3NS
ZWZQdHI8SURCSwogCiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlL
ZXk7CiAjaWZuZGVmIE5ERUJVRwotICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1ZXN0U3RhdGUoKSwgdmFsdWUs
IGtleVBhdGgpOworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0gY3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChyZXF1ZXN0U3RhdGUoKS0+ZXhlYygpLCB2YWx1ZSwg
a2V5UGF0aCk7CiAgICAgQVNTRVJUKCFleHBlY3RlZEtleSB8fCBleHBlY3RlZEtleS0+aXNFcXVh
bChwcmltYXJ5S2V5LmdldCgpKSk7CiAjZW5kaWYKICAgICBib29sIGluamVjdGVkID0gaW5qZWN0
SURCS2V5SW50b1NjcmlwdFZhbHVlKHJlcXVlc3RTdGF0ZSgpLCBwcmltYXJ5S2V5LCB2YWx1ZSwg
a2V5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGE5YTNiYzguLmQ1YWQ0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC04NCw2ICs4NCw3IEBAIF9fWk43V2ViQ29yZTEwUmVuZGVyVmll
dzEwY29tcG9zaXRvckV2CiBfX1pON1dlYkNvcmUxMFJlbmRlclZpZXc3aGl0VGVzdEVSS05TXzE0
SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk43V2ViQ29yZTE1U1FMaXRl
U3RhdGVtZW50MTRnZXRDb2x1bW5JbnQ2NEVpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVu
dDIxZ2V0Q29sdW1uQmxvYkFzVmVjdG9yRWlSTjNXVEY2VmVjdG9ySWNMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDIxZ2V0Q29sdW1uQmxv
YkFzVmVjdG9yRWlSTjNXVEY2VmVjdG9ySWhMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBf
X1pON1dlYkNvcmUxMFNjcm9sbFZpZXcxNnNldFBhcmVudFZpc2libGVFYgogX19aTjdXZWJDb3Jl
MTBTY3JvbGxWaWV3MTdzZXRVc2VGaXhlZExheW91dEViCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcxOHNldEZpeGVkTGF5b3V0U2l6ZUVSS05TXzdJbnRTaXplRQpAQCAtMzE1NSw1ICszMTU2LDcg
QEAgX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIwRUxiMEVOU18yMklEQk9i
amVjdFN0b3JlTWV0YWRhdGFFRTRjb3B5RVIKIF9fWk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlSUxiMEVMYjBFTlNfOUluZGV4ZWREQjEwQ3Vyc29yVHlwZUVFNGNvcHlFUktTMl8KIF9f
Wk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlSUxiMEVMYjBFTlNfOUluZGV4ZWREQjE1
Q3Vyc29yRGlyZWN0aW9uRUU0Y29weUVSS1MyXwogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENv
cGllckJhc2VJTGIwRUxiMEVOU185SW5kZXhlZERCMTVUcmFuc2FjdGlvbk1vZGVFRTRjb3B5RVJL
UzJfCitfX1pON1dlYkNvcmUyNWRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXJFUE4zSlNDOUV4ZWNT
dGF0ZUVSS04zV1RGNlZlY3RvckloTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRWIKK19fWk43
V2ViQ29yZTI1Z2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZUVQTjNKU0M5RXhlY1N0YXRlRVJLTlNf
MTZJREJJbmRleE1ldGFkYXRhRVJLTjEwRGVwcmVjYXRlZDExU2NyaXB0VmFsdWVFUk4zV1RGNlZl
Y3RvcklOU18xMElEQktleURhdGFFTG0wRU5TQV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlNklEQktleUQxRXYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyNWM2MjkuLjRmYzI3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
NDksMTAgKzE0NDksMTAgQEAKIAkJNDM5MDQ2RTYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOTA0NkQyMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTcXVhcmVSb290
LmggKi87IH07CiAJCTQzOTA0NkU3MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
OTA0NkQzMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmNwcCAqLzsgfTsK
IAkJNDM5MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNjcmlwdHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ0MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggKi87IH07Ci0JCTQzOTA0NkVCMTJE
QTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyog
UmVuZGVyTWF0aE1MVG9rZW4uY3BwICovOyB9OwotCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkg
LyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tl
bi5oICovOyB9OwogCQk0MzkwNDZFOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTA0NkQ1MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwICov
OyB9OwogCQk0MzkwNDZFQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZE
NjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmggKi87IH07CisJCTQz
OTA0NkVCMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBB
RjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwICovOyB9OworCQk0MzkwNDZFQzEyREEyNUU4
MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJN
YXRoTUxUb2tlbi5oICovOyB9OwogCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5p
bWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87IH07CiAJ
CTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDExM0E2
OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07CiAJCTQzOUQz
MzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKQEAgLTUzODksNyArNTM4OSw3IEBACiAJ
CUM1ODM2MUE5MTc0NDUyM0YwMDE3MzUxMSAvKiBGb250U2VydmljZXNJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1ODM2MUE3MTc0NDUyM0YwMDE3
MzUxMSAvKiBGb250U2VydmljZXNJT1MuaCAqLzsgfTsKIAkJQzU4MzYxQUExNzQ0NTIzRjAwMTcz
NTExIC8qIEZvbnRTZXJ2aWNlc0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM1ODM2MUE4MTc0NDUyM0YwMDE3MzUxMSAvKiBGb250U2VydmljZXNJ
T1MubW0gKi87IH07CiAJCUM1ODVBNjYyMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRp
bGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1ODVBNjYwMTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmNwcCAqLzsg
fTsKLQkJQzU4NUE2NjMxMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1ODVBNjYxMTFE
NEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggKi87IH07CisJCUM1ODVBNjYz
MTFENEZBQzUwMDRDM0U0QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY2MTExRDRGQUM1MDA0QzNFNEIg
LyogSURCQmluZGluZ1V0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUM1ODVBNjdEMTFENEZCMDgwMDRDM0U0QiAvKiBKU0lEQkFueS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NjUx
MUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCQW55LmggKi87IH07CiAJCUM1ODVBNjgzMTFENEZCMDgw
MDRDM0U0QiAvKiBKU0lEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTg1QTY2QjExRDRGQjA3MDA0QzNFNEIgLyogSlNJREJEYXRhYmFz
ZS5oICovOyB9OwogCQlDNTg1QTY4RDExRDRGQjA4MDA0QzNFNEIgLyogSlNJREJLZXlSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzU4NUE2NzUx
MUQ0RkIwNzAwNEMzRTRCIC8qIEpTSURCS2V5UmFuZ2UuaCAqLzsgfTsKQEAgLTgzMDIsMTAgKzgz
MDIsMTAgQEAKIAkJNDM5MDQ2RDIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdC5oOyBwYXRoID0gbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2RDMxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmVuZGVyTWF0aE1MU2NyaXB0cy5jcHA7IHBhdGggPSBtYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkQ0MTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxTY3JpcHRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFJlbmRlck1hdGhNTFNjcmlwdHMuaDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzOTA0NkQ3MTJEQTI1RTgw
MEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBSZW5kZXJNYXRoTUxUb2tlbi5jcHA7IHBhdGggPSBtYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkwNDZEODEy
REEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUmVuZGVyTWF0aE1MVG9rZW4uaDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJN
YXRoTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZENTEyREEy
NUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHA7IHBhdGggPSBt
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDM5MDQ2RDYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW5kZXJNYXRoTUxVbmRlck92ZXIu
aDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDM5MDQ2RDcxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRv
a2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlck1hdGhN
TFRva2VuLmNwcDsgcGF0aCA9IG1hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJN
YXRoTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW5kZXJNYXRo
TUxUb2tlbi5oOyBwYXRoID0gbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBjMjlkMzY4Li5lM2IwOTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cApAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKIAog
I2luY2x1ZGUgIkRPTVJlcXVlc3RTdGF0ZS5oIgorI2luY2x1ZGUgIklEQkluZGV4TWV0YWRhdGEu
aCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKQEAgLTE3OCw3ICsxODAsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXROdGhWYWx1ZU9u
S2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcm9vdFZhbHVlLCBjb25zdCBWZQogICAg
IHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQor
c3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRW
YWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYgdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7CkBAIC0y
NTQsMTggKzI1NiwxNiBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1
ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgUGFzc1JlZlB0cjxJREJLZQogICAgIHJldHVybiB0cnVl
OwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHJlcXVlc3RTdGF0ZSwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQorUGFzc1JlZlB0
cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJjcmVhdGVJREJLZXlGcm9t
U2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAgICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsK
IAotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotCiAgICAgaWYg
KGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OkFycmF5VHlwZSkgewogICAgICAgICBJREJL
ZXk6OktleUFycmF5IHJlc3VsdDsKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFycmF5
ID0ga2V5UGF0aC5hcnJheSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBjcmVhdGVJ
REJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBhcnJheVtpXSk7Cisg
ICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgoZXhlYywgdmFsdWUsIGFycmF5W2ldKTsKICAgICAgICAgICAg
IGlmICgha2V5KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChrZXkpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVz
CiAgICAgfQogCiAgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElEQktleVBhdGg6OlN0cmlu
Z1R5cGUpOwotICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0cmluZygpKTsKKyAgICByZXR1cm4gaW50ZXJuYWxDcmVh
dGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIHZhbHVlLCBrZXlQYXRoLnN0
cmluZygpKTsKIH0KIAogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVx
dWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBz
Y3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTMwNSwyMSArMzA1LDI2
IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUoRE9NUmVxdWVz
dFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NSCiAKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIsIGJvb2wga2V5SXNEZWZpbmVkKQogewot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHJlcXVlc3RTdGF0ZS0+ZXhlYygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKKyAgICBpZiAocHJwQnVmZmVyKSB7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKKyAgICAgICAgdmFsdWUuYXBwZW5kKHBycEJ1
ZmZlci0+ZGF0YSgpLCBwcnBCdWZmZXItPnNpemUoKSk7CisgICAgICAgIHJldHVybiBkZXNlcmlh
bGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZS0+ZXhlYygpLCB2YWx1ZSwga2V5SXNEZWZp
bmVkKTsKKyAgICB9CiAKKyAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUocmVxdWVz
dFN0YXRlLT5leGVjKCktPnZtKCksIGpzTnVsbCgpKTsKK30KKworRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGJvb2wga2V5SXNEZWZpbmVkKQorewogICAgIC8v
IElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgdGhlbiB0aGUgdmFsdWUgbXVzdCBiZSB1bmRlZmlu
ZWQgKGFzIG9wcG9zZWQgdG8gbnVsbCkuCiAgICAgaWYgKCFrZXlJc0RlZmluZWQpIHsKICAgICAg
ICAgLy8gV2UgZWl0aGVyIHNob3VsZG4ndCBoYXZlIGEgYnVmZmVyIG9yIGl0IHNob3VsZCBiZSBv
ZiBzaXplIDAuCi0gICAgICAgIEFTU0VSVCghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIEFTU0VSVCghYnVmZmVyLnNpemUoKSk7CiAgICAgICAgIHJldHVybiBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZShleGVjLT52bSgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBp
ZiAoYnVmZmVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgZXh0cmEgY29weSBoZXJlIGNhbiBi
ZSBlbGltaW5hdGVkIGJ5IGFsbG93aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSB0byB0YWtlIGEg
cmF3IGNvbnN0IGNoYXIqIG9yIGNvbnN0IHVpbnQ4X3QqLgotICAgICAgICBWZWN0b3I8dWludDhf
dD4gdmFsdWU7Ci0gICAgICAgIHZhbHVlLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwotICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVk
VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUp
OworICAgIGlmIChidWZmZXIuc2l6ZSgpKSB7CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
RnJvbVdpcmVCeXRlcyhidWZmZXIpOwogICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpkZXNlcmlhbGl6ZShleGVjLCBzZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5n
KTsKICAgICB9CiAKQEAgLTMzOCw2ICszNDMsMjggQEAgUGFzc1JlZlB0cjxJREJLZXk+IHNjcmlw
dFZhbHVlVG9JREJLZXkoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIGNvbnN0IERlcHIK
ICAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIHNjcmlwdFZhbHVlLmpzVmFs
dWUoKSk7CiB9CiAKK3ZvaWQgZ2VuZXJhdGVJbmRleEtleXNGb3JWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+JiBpbmRleEtl
eXMpCit7CisgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBjcmVhdGVJREJLZXlGcm9tU2Ny
aXB0VmFsdWVBbmRLZXlQYXRoKGV4ZWMsIG9iamVjdFZhbHVlLCBpbmRleE1ldGFkYXRhLmtleVBh
dGgpOworCisgICAgaWYgKCFpbmRleEtleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFp
bmRleE1ldGFkYXRhLm11bHRpRW50cnkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFy
cmF5VHlwZSkgeworICAgICAgICBpZiAoIWluZGV4S2V5LT5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChJREJLZXlEYXRhKGluZGV4S2V5
LmdldCgpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGluZGV4TWV0YWRhdGEubXVs
dGlFbnRyeSk7CisgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IElEQktleTo6QXJy
YXlUeXBlKTsKKyAgICAgICAgaW5kZXhLZXkgPSBJREJLZXk6OmNyZWF0ZU11bHRpRW50cnlBcnJh
eShpbmRleEtleS0+YXJyYXkoKSk7CisKKyAgICAgICAgZm9yIChhdXRvIGkgOiBpbmRleEtleS0+
YXJyYXkoKSkKKyAgICAgICAgICAgIGluZGV4S2V5cy5hcHBlbmQoSURCS2V5RGF0YShpLmdldCgp
KSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA4MDQ3Zjg3Li5iMjcwYzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0zOSwxNSAr
MzksMjAgQEAgY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAorc3RydWN0IElEQkluZGV4TWV0YWRhdGE7CitzdHJ1Y3QgSURCS2V5RGF0YTsKKwog
SURCS2V5UGF0aCBpZGJLZXlQYXRoRnJvbVZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlKTsKIAogYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRl
KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElE
QktleVBhdGgmKTsKLVBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOworUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUg
ZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4pOwogRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZGVzZXJpYWxpemVJREJW
YWx1ZUJ1ZmZlcihET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGJv
b2wga2V5SXNEZWZpbmVkKTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURC
VmFsdWVCdWZmZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBib29s
IGtleUlzRGVmaW5lZCk7CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBpZGJLZXlUb1NjcmlwdFZh
bHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5Pik7CiBQYXNzUmVmUHRyPElE
QktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYpOwordm9pZCBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBvYmplY3RWYWx1ZSwgVmVjdG9yPElEQktleURhdGE+JiBpbmRleEtleXMpOwog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggNTI2YzAyMy4uNmYxYTljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTQyOCw2ICs0MjgsMzIgQEAgdm9pZCBTUUxp
dGVTdGF0ZW1lbnQ6OmdldENvbHVtbkJsb2JBc1ZlY3RvcihpbnQgY29sLCBWZWN0b3I8Y2hhcj4m
IHJlc3VsdCkKICAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihibG9iKSlbaV07CiB9CiAKK3ZvaWQgU1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5C
bG9iQXNWZWN0b3IoaW50IGNvbCwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCit7CisgICAgQVNT
RVJUKGNvbCA+PSAwKTsKKworICAgIGlmICghbV9zdGF0ZW1lbnQgJiYgcHJlcGFyZUFuZFN0ZXAo
KSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKGNvbHVtbkNvdW50KCkgPD0gY29sKSB7CisgICAgICAgIHJl
c3VsdC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgdm9pZCog
YmxvYiA9IHNxbGl0ZTNfY29sdW1uX2Jsb2IobV9zdGF0ZW1lbnQsIGNvbCk7CisgICAgaWYgKCFi
bG9iKSB7CisgICAgICAgIHJlc3VsdC5jbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgICAgICAKKyAgICBpbnQgc2l6ZSA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKG1fc3RhdGVtZW50
LCBjb2wpOworICAgIHJlc3VsdC5yZXNpemUoKHNpemVfdClzaXplKTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0W2ldID0gKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihibG9iKSlbaV07Cit9CisKIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpyZXR1
cm5UZXh0UmVzdWx0cyhpbnQgY29sLCBWZWN0b3I8U3RyaW5nPiYgdikKIHsKICAgICBBU1NFUlQo
Y29sID49IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5oCmluZGV4IDBmZWI1N2MuLjNjMmZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIGlu
dDY0X3QgZ2V0Q29sdW1uSW50NjQoaW50IGNvbCk7CiAgICAgU3RyaW5nIGdldENvbHVtbkJsb2JB
c1N0cmluZyhpbnQgY29sKTsKICAgICB2b2lkIGdldENvbHVtbkJsb2JBc1ZlY3RvcihpbnQgY29s
LCBWZWN0b3I8Y2hhcj4mKTsKKyAgICB2b2lkIGdldENvbHVtbkJsb2JBc1ZlY3RvcihpbnQgY29s
LCBWZWN0b3I8dWludDhfdD4mKTsKIAogICAgIGJvb2wgcmV0dXJuVGV4dFJlc3VsdHMoaW50IGNv
bCwgVmVjdG9yPFN0cmluZz4mKTsKICAgICBib29sIHJldHVybkludFJlc3VsdHMoaW50IGNvbCwg
VmVjdG9yPGludD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZjdmNGZkLi40YmRiOWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsNDAgQEAKIDIwMTQtMDItMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCisgICAgICAgIElEQjogc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLWluZGV4LXdp
dGgtaW50ZWdlci1rZXlzLmh0bWwgZmFpbHMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MDAy
ODU3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODMxNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBW
ZWN0b3I8Y2hhcj4gdG8gVmVjdG9yPHVpbnQ4X3Q+IHRocm91Z2hvdXQ6CisgICAgICAgICogRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJ
bkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRB
ZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJE
YXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OmRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorCisg
ICAgICAgIFVwZGF0ZSBWZWN0b3I8Y2hhcj4gdG8gVmVjdG9yPHVpbnQ4X3Q+IHRocm91Z2hvdXQ6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U1FMaXRlSURCQ3Vyc29yOjphZHZhbmNlT25jZSk6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vy
c29yLmg6CisgICAgICAgIChXZWJLaXQ6OlNRTGl0ZUlEQkN1cnNvcjo6Y3VycmVudFZhbHVlQnVm
ZmVyKToKKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGVJbmRl
eCk6IENyZWF0ZSBhIHNjcmlwdCB2YWx1ZSBmcm9tIHRoZSB2YWx1ZSBkYXRhLCB1c2UKKyAgICAg
ICAgICBnZW5lcmF0ZUluZGV4S2V5c0ZvclZhbHVlIHRvIGdldCB0aGUgaW5kZXgga2V5cywgYW5k
IHRoZW4gd3JpdGUgdGhlIHJlc3VsdGluZyBpbmRleCByZWNvcmRzLgorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cHV0SW5kZXhSZWNvcmQpOiBD
YWxsIHRocm91Z2ggdG8gdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQuCisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjp1bmNoZWNrZWRQdXRJbmRleFJl
Y29yZCk6IFZlcnNpb24gb2YgcHV0SW5kZXhSZWNvcmQgdGhhdCBkb2VzbuKAmXQKKyAgICAgICAg
ICB2YWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24gb3IgaXRzIG1vZGUuCisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVuQ3Vyc29yKTogVXBkYXRl
IFZlY3RvcjxjaGFyPiB0byBWZWN0b3I8dWludDhfdD4uCisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjphZHZhbmNlQ3Vyc29yKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjppdGVy
YXRlQ3Vyc29yKTogRGl0dG8uCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaDoKKworMjAxNC0wMi0w
NiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXggYWZ0ZXIgcjE2MzYxMi4KIAogICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggN2UxNjBiNy4uNjhhNjg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTk1MSw3ICs5NTEsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJREJJZAogICAgIGludDY0X3QgY3Vyc29ySUQgPSAwOwogICAgIElEQktleURhdGEga2V5
OwogICAgIElEQktleURhdGEgcHJpbWFyeUtleTsKLSAgICBWZWN0b3I8Y2hhcj4gdmFsdWVCdWZm
ZXI7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlQnVmZmVyOwogICAgIGludDMyX3QgZXJyb3JD
b2RlID0gMDsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgc3VjY2VzcyA9IG1f
YmFja2luZ1N0b3JlLT5vcGVuQ3Vyc29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3Rv
cmVJRCwgaW5kZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwga2V5
UmFuZ2UsIGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyKTsKQEAgLTk2NCw3
ICs5NjQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29ySW5CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZAogICAgIHBvc3RNYWluVGhyZWFkVGFz
ayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1cnNv
ckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZh
bHVlQnVmZmVyLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogfQogCi12b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURh
dGEmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRPcGVuQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEm
IHByaW1hcnlLZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIsIHVpbnQzMl90
IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0RhdGFiYXNlVGFza3MudGFrZShyZXF1ZXN0
SUQpOwogICAgIEFTU0VSVChyZXF1ZXN0KTsKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBJRAogewogICAgIElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJp
bWFyeUtleTsKLSAgICBWZWN0b3I8Y2hhcj4gdmFsdWVCdWZmZXI7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZhbHVlQnVmZmVyOwogICAgIGludDMyX3QgZXJyb3JDb2RlID0gMDsKICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlOwogICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5hZHZhbmNl
Q3Vyc29yKGN1cnNvcklkZW50aWZpZXIsIGNvdW50LCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVm
ZmVyKTsKQEAgLTk4OSw3ICs5ODksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNl
Q3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJRAogICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkQWR2YW5jZUN1cnNvckluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGtleSwgcHJpbWFy
eUtleSwgdmFsdWVCdWZmZXIsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZEFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJp
bWFyeUtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZUJ1ZmZlciwgdWludDMyX3QgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRpZEFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB2YWx1ZUJ1ZmZlciwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0g
bV9wZW5kaW5nRGF0YWJhc2VUYXNrcy50YWtlKHJlcXVlc3RJRCk7CiAgICAgQVNTRVJUKHJlcXVl
c3QpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0
ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSUQKIHsKICAg
ICBJREJLZXlEYXRhIGtleTsKICAgICBJREJLZXlEYXRhIHByaW1hcnlLZXk7Ci0gICAgVmVjdG9y
PGNoYXI+IHZhbHVlQnVmZmVyOworICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZUJ1ZmZlcjsKICAg
ICBpbnQzMl90IGVycm9yQ29kZSA9IDA7CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICBi
b29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNvcihjdXJzb3JJZGVudGlm
aWVyLCBpdGVyYXRlS2V5LCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyKTsKQEAgLTEwMTQs
NyArMTAxNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3JJbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElECiAgICAgcG9zdE1haW5UaHJlYWRU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRl
Q3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1
ZmZlciwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1
cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYg
a2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHZhbHVlQnVmZmVyLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQogewogICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBtX3BlbmRpbmdEYXRh
YmFzZVRhc2tzLnRha2UocmVxdWVzdElEKTsKICAgICBBU1NFUlQocmVxdWVzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1
ZUlEQkRhdGFiYXNlLmgKaW5kZXggZDdlMmEwNS4uZmRiNDA0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2UuaApAQCAtMTc1LDkgKzE3NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZWxldGVJ
bmRleCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAgICAgdm9pZCBkaWRQdXRS
ZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OklE
QktleURhdGEmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKICAgICB2b2lkIGRpZEdldFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1bHQmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIGRpZE9wZW5DdXJzb3JJbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IFdlYkNv
cmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgVmVjdG9y
PGNoYXI+JiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
Ci0gICAgdm9pZCBkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3Jl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0b3I8Y2hhcj4mLCB1aW50MzJfdCBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3JJ
bkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsIGNvbnN0
IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CisgICAgdm9pZCBkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5RGF0YSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIHVpbnQzMl90IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcklu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lk
IGRpZENvdW50SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGNvdW50
LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2
b2lkIGRpZERlbGV0ZVJhbmdlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCB1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCmluZGV4IDk2MGE2YjEuLmM2MTEw
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKQEAg
LTc5LDkgKzc5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRLZXlSYW5nZVJlY29y
ZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQdHI8V2ViQ29yZTo6SURC
S2V5PiYgcmVzdWx0S2V5KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNvdW50KGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBp
bnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYsIGludDY0X3Qm
IGNvdW50KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlbkN1cnNvcihjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29y
ZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRh
c2tUeXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJ
RCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hh
cj4mKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRp
ZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIFdlYkNvcmU6OklEQktleURh
dGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVjdG9yPGNoYXI+JikgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2Vi
Q29yZTo6SURCS2V5RGF0YSYsIFZlY3RvcjxjaGFyPiYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5n
ZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6
OklEQktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFk
dmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0
X3QgY291bnQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVj
dG9yPHVpbnQ4X3Q+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQktleURh
dGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFZlY3Rvcjx1
aW50OF90PiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3Fs
aXRlL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggNGY2ZTAzZC4uNmRjYjgzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRl
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yODMsMTAgKzI4MywxMCBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZU9uY2UoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGtleURhdGE7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGtl
eURhdGE7CiAgICAgbV9zdGF0ZW1lbnQtPmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRh
KTsKIAotICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5zaXplKCksIG1fY3VycmVudEtl
eSkpIHsKKyAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5
RGF0YS5zaXplKCksIG1fY3VycmVudEtleSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgY3Vy
c29yIik7CiAgICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAgICAgbV9lcnJvcmVkID0g
dHJ1ZTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZU9u
Y2UoKQogICAgIG1fY3VycmVudFZhbHVlQnVmZmVyID0ga2V5RGF0YTsKIAogICAgIGlmIChtX2lu
ZGV4SUQgIT0gSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKSB7Ci0gICAgICAgIGlmICghZGVz
ZXJpYWxpemVJREJLZXlEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleURh
dGEuZGF0YSgpKSwga2V5RGF0YS5zaXplKCksIG1fY3VycmVudFByaW1hcnlLZXkpKSB7CisgICAg
ICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNp
emUoKSwgbV9jdXJyZW50UHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNp
bmcgaW5kZXggY3Vyc29yIik7CiAgICAgICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAg
ICAgICAgICBtX2Vycm9yZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3Iu
aAppbmRleCA0MTQ0MjM4Li44MWI0MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJzb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJDdXJz
b3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiBjdXJyZW50S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAg
Y29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYgY3VycmVudFByaW1hcnlLZXkoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+JiBjdXJy
ZW50VmFsdWVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZUJ1ZmZlcjsgfQor
ICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY3VycmVudFZhbHVlQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50VmFsdWVCdWZmZXI7IH0KIAogICAgIGJvb2wgYWR2YW5jZSh1aW50NjRf
dCBjb3VudCk7CiAgICAgYm9vbCBpdGVyYXRlKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIHRh
cmdldEtleSk7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJREJL
ZXlEYXRhIG1fY3VycmVudEtleTsKICAgICBXZWJDb3JlOjpJREJLZXlEYXRhIG1fY3VycmVudFBy
aW1hcnlLZXk7Ci0gICAgVmVjdG9yPGNoYXI+IG1fY3VycmVudFZhbHVlQnVmZmVyOworICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2N1cnJlbnRWYWx1ZUJ1ZmZlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fc3RhdGVtZW50OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZS5jcHAKaW5kZXggNTU1YzljNy4uMTU5MTllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1cnNvci5oIgogI2luY2x1ZGUgIlNR
TGl0ZUlEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JREJCaW5kaW5nVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJHZXRSZXN1bHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KQEAgLTQzLDYgKzQ0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MTIsNiArNjE0LDUwIEBAIGJvb2wgVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBXcml0ZSBpbmRl
eCByZWNvcmRzIGZvciBhbnkgcmVjb3JkcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhpcyBvYmpl
Y3Qgc3RvcmUuCisgICAgU1FMaXRlSURCQ3Vyc29yKiBjdXJzb3IgPSB0cmFuc2FjdGlvbi0+b3Bl
bkN1cnNvcihvYmplY3RTdG9yZUlELCBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQsIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0LCBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFu
ZFZhbHVlLCBJREJEYXRhYmFzZUJhY2tlbmQ6Ok5vcm1hbFRhc2ssIElEQktleVJhbmdlRGF0YSgp
KTsKKworICAgIGlmICghY3Vyc29yKSB7CisgICAgICAgIExPR19FUlJPUigiQ2Fubm90IG9wZW4g
Y3Vyc29yIHRvIHBvcHVsYXRlIGluZGV4ZXMgaW4gZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIG1fY3Vyc29ycy5zZXQoY3Vyc29yLT5pZGVudGlmaWVyKCks
IGN1cnNvcik7CisKKyAgICBPd25QdHI8SlNMb2NrSG9sZGVyPiBsb2NrSG9sZGVyOworICAgIHdo
aWxlICghY3Vyc29yLT5jdXJyZW50S2V5KCkuaXNOdWxsKSB7CisgICAgICAgIGNvbnN0IElEQktl
eURhdGEmIGtleSA9IGN1cnNvci0+Y3VycmVudEtleSgpOworICAgICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHZhbHVlQnVmZmVyID0gY3Vyc29yLT5jdXJyZW50VmFsdWVCdWZmZXIoKTsKKwor
ICAgICAgICBpZiAoIW1fZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fdm0p
OworICAgICAgICAgICAgbV92bSA9IFZNOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGxvY2tIb2xk
ZXIgPSBhZG9wdFB0cihuZXcgSlNMb2NrSG9sZGVyKG1fdm0uZ2V0KCkpKTsKKyAgICAgICAgICAg
IG1fZ2xvYmFsT2JqZWN0ID0gYWRvcHRQdHIoSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqbV92bSwg
SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwganNOdWxsKCkpKSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWxvY2tIb2xkZXIpCisgICAgICAgICAgICBsb2NrSG9sZGVy
ID0gYWRvcHRQdHIobmV3IEpTTG9ja0hvbGRlcihtX3ZtLmdldCgpKSk7CisKKyAgICAgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHZhbHVlQnVmZmVyLCB0cnVlKTsKKyAgICAgICAg
VmVjdG9yPElEQktleURhdGE+IGluZGV4S2V5czsKKyAgICAgICAgZ2VuZXJhdGVJbmRleEtleXNG
b3JWYWx1ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBtZXRhZGF0YSwgdmFsdWUsIGlu
ZGV4S2V5cyk7CisKKyAgICAgICAgZm9yIChhdXRvIGluZGV4S2V5IDogaW5kZXhLZXlzKSB7Cisg
ICAgICAgICAgICBpZiAoIXVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKG9iamVjdFN0b3JlSUQsIG1l
dGFkYXRhLmlkLCBrZXksIGluZGV4S2V5KSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHB1dCBpbmRleCByZWNvcmQgZm9yIG5ld2x5IGNyZWF0ZWQgaW5kZXgiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIWN1cnNvci0+YWR2YW5jZSgxKSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJFcnJvciBhZHZhbmNpbmcgY3Vyc29yIHdoaWxlIGluZGV4aW5nIGV4aXN0aW5nIHJlY29yZHMg
Zm9yIG5ldyBpbmRleC4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHRyYW5zYWN0aW9uLT5jbG9zZUN1cnNvcigqY3Vyc29yKTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC04MjUsNiArODcxLDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGU6OnB1dEluZGV4UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXIm
IHRyCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICByZXR1cm4gdW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQob2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwga2V5VmFsdWUsIGluZGV4S2V5
KTsKK30KKworYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6dW5jaGVj
a2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQs
IGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGtleVZhbHVlLCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiBpbmRleEtleSkKK3sKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CkBAIC0xMTM1LDcgKzExODYsNyBAQCBi
b29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjb3VudChjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2
NF90IGluZGV4SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwg
SW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFz
a1R5cGUgdGFza1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIGludDY0X3Qm
IGN1cnNvcklELCBJREJLZXlEYXRhJiBrZXksIElEQktleURhdGEmIHByaW1hcnlLZXksIFZlY3Rv
cjxjaGFyPiYgdmFsdWVCdWZmZXIpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1
cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UsIGludDY0X3QmIGN1cnNvcklELCBJREJLZXlEYXRhJiBr
ZXksIElEQktleURhdGEmIHByaW1hcnlLZXksIFZlY3Rvcjx1aW50OF90PiYgdmFsdWVCdWZmZXIp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIp
OwpAQCAtMTE2MCw3ICsxMjExLDcgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2EKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6
YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50
NjRfdCBjb3VudCwgSURCS2V5RGF0YSYga2V5LCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBWZWN0
b3I8Y2hhcj4mIHZhbHVlQnVmZmVyKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlm
aWVyLCB1aW50NjRfdCBjb3VudCwgSURCS2V5RGF0YSYga2V5LCBJREJLZXlEYXRhJiBwcmltYXJ5
S2V5LCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKQEAgLTExODgsNyArMTIzOSw3IEBA
IGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmFkdmFuY2VDdXJzb3Io
Y29uc3QgSURCSWRlbnRpZmllciYgY3VyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURC
SWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0S2V5
LCBJREJLZXlEYXRhJiBrZXksIElEQktleURhdGEmIHByaW1hcnlLZXksIFZlY3RvcjxjaGFyPiYg
dmFsdWVCdWZmZXIpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpp
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmIHRhcmdldEtleSwgSURCS2V5RGF0YSYga2V5LCBJREJLZXlEYXRhJiBwcmlt
YXJ5S2V5LCBWZWN0b3I8dWludDhfdD4mIHZhbHVlQnVmZmVyKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCmlu
ZGV4IDg5ZGEyOTMuLmUyNDU3YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNR
TGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3Fs
aXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKQEAgLTM0LDYgKzM0LDEx
IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNz
IFZNOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKIHN0
cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwpAQCAtODIsOSArODcsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGdldEtleVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBj
b25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiByZXN1bHQsIFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+JiByZXN1bHRLZXkpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBjb3VudChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjb3VudCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgb3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJD
b3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJz
b3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJD
b3JlOjpJREJLZXlSYW5nZURhdGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6
OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXRlcmF0ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklE
QktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
bkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0
X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURh
dGEmLCBpbnQ2NF90JiBjdXJzb3JJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklE
QktleURhdGEmLCBWZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50
NjRfdCBjb3VudCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBW
ZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXRlcmF0ZUN1cnNv
cihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBW
ZWN0b3I8dWludDhfdD4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdW5yZWdpc3RlckN1cnNvcihT
UUxpdGVJREJDdXJzb3IqKTsKIApAQCAtOTYsNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4gY3JlYXRlQW5kUG9wdWxh
dGVJbml0aWFsTWV0YWRhdGEoKTsKIAogICAgIGJvb2wgZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRy
YW5zYWN0aW9uJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlE
YXRhJik7CisgICAgYm9vbCB1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5VmFs
dWUsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGluZGV4S2V5KTsKIAogICAgIGludCBpZGJL
ZXlDb2xsYXRlKGludCBhTGVuZ3RoLCBjb25zdCB2b2lkKiBhLCBpbnQgYkxlbmd0aCwgY29uc3Qg
dm9pZCogYik7CiAKQEAgLTEwNiw2ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxJ
REJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3Ry
YW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQklkZW50aWZpZXIsIFNRTGl0ZUlEQkN1cnNvcio+
IG1fY3Vyc29yczsKKworICAgIFJlZlB0cjxKU0M6OlZNPiBtX3ZtOworICAgIE93blB0cjxKU0M6
OkpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>
<flag name="review"
          id="247448"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="247449"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>