<?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>121827</bug_id>
          
          <creation_ts>2013-09-24 01:13:27 -0700</creation_ts>
          <short_desc>[WIN] Reduce usage of CFSTR() in WebPreferences</short_desc>
          <delta_ts>2013-11-01 07:07:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932458</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-09-24 01:13:27 -0700</bug_when>
    <thetext>[WIN] Reduce usage of CFSTR() in WebPreferences</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932461</commentid>
    <comment_count>1</comment_count>
      <attachid>212437</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-09-24 01:16:54 -0700</bug_when>
    <thetext>Created attachment 212437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945571</commentid>
    <comment_count>2</comment_count>
      <attachid>212437</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-31 10:26:33 -0700</bug_when>
    <thetext>Comment on attachment 212437
Patch

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

This seems reasonable, since it doesn&apos;t change any of the interfaces we are working with

Be careful with changes here: we want to make sure that we don&apos;t break any existing functionality -- there are existing serialized preference databases that rely on the CF infrastructure to read and modify.

This change will not affect any of those targets, but when  you start modifying &quot;migrateWebKitPreferencesToCFPreferences&quot; or &quot;copyWebKitPreferencesToCFPreferences&quot; and especially &quot;load&quot; and &quot;save&quot; you have to be very careful.

&gt; Source/WebKit/win/WebPreferences.cpp:320
&gt; +BSTR WebPreferences::stringValueForKey(const char* key)

Note (for your future modifications): This routine (and several others) could greatly benefit from using _bstr_t instead of all of this manual SysAllocStringLen stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945572</commentid>
    <comment_count>3</comment_count>
      <attachid>212437</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 10:27:46 -0700</bug_when>
    <thetext>Comment on attachment 212437
Patch

Rejecting attachment 212437 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 212437, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
729 (offset 4 lines).
Hunk #33 succeeded at 1739 (offset 4 lines).
Hunk #34 succeeded at 1752 (offset 4 lines).
Hunk #35 succeeded at 1762 (offset 4 lines).
Hunk #36 succeeded at 1771 (offset 4 lines).
1 out of 36 hunks FAILED -- saving rejects to file Source/WebKit/win/WebPreferences.cpp.rej
patching file Source/WebKit/win/WebPreferences.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Brent Fulgham&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/18688008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945574</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-31 10:29:57 -0700</bug_when>
    <thetext>Looks like this needs to be rebased. Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945895</commentid>
    <comment_count>5</comment_count>
      <attachid>215731</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-11-01 05:57:33 -0700</bug_when>
    <thetext>Created attachment 215731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945896</commentid>
    <comment_count>6</comment_count>
      <attachid>215731</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-01 06:08:52 -0700</bug_when>
    <thetext>Comment on attachment 215731
Patch

Attachment 215731 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/19278113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945897</commentid>
    <comment_count>7</comment_count>
      <attachid>215731</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 07:07:16 -0700</bug_when>
    <thetext>Comment on attachment 215731
Patch

Clearing flags on attachment: 215731

Committed r158434: &lt;http://trac.webkit.org/changeset/158434&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945898</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 07:07:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212437</attachid>
            <date>2013-09-24 01:16:54 -0700</date>
            <delta_ts>2013-11-01 05:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121827.patch</filename>
            <type>text/plain</type>
            <size>50268</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCAxYTAzNTQ1Li4wYjc0MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTMtMDktMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1dJTl0gUmVkdWNlIHVzYWdlIG9mIENGU1RSKCkgaW4gV2Vi
UHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gQ0YgdG8gYSBmZXcgZnVuY3Rpb25zIG9u
bHkKKyAgICAgICAgYW5kIGlzIGEgZmlyc3Qgc3RlcCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aG91
dCBDRi4KKworICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJQcmVm
ZXJlbmNlcy5oOgorCiAyMDEzLTA5LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgd2luZG93cyBidWlsZCAodGFrZSAyKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA5Y2U4NDY5Li4xMzQ3NTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0zMDUsNyArMzA1LDE5IEBAIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6OnNldFZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RS
ZWYgdmFsdWUpCiAgICAgfQogfQogCi1CU1RSIFdlYlByZWZlcmVuY2VzOjpzdHJpbmdWYWx1ZUZv
cktleShDRlN0cmluZ1JlZiBrZXkpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktl
eShjb25zdCBjaGFyKiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQoreworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJp
bmcoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgc2V0VmFsdWVGb3JLZXko
Y2ZLZXkuZ2V0KCksIHZhbHVlKTsKK30KKworUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBX
ZWJQcmVmZXJlbmNlczo6dmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KQoreworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJp
bmcoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgcmV0dXJuIHZhbHVlRm9y
S2V5KGNmS2V5LmdldCgpKTsKK30KKworQlNUUiBXZWJQcmVmZXJlbmNlczo6c3RyaW5nVmFsdWVG
b3JLZXkoY29uc3QgY2hhcioga2V5KQogewogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJl
Zj4gdmFsdWUgPSB2YWx1ZUZvcktleShrZXkpOwogICAgIApAQCAtMzMyLDI3ICszNDQsMjcgQEAg
QlNUUiBXZWJQcmVmZXJlbmNlczo6c3RyaW5nVmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQog
ICAgIHJldHVybiBic3RyOwogfQogCi1pbnQgV2ViUHJlZmVyZW5jZXM6OmludGVnZXJWYWx1ZUZv
cktleShDRlN0cmluZ1JlZiBrZXkpCitpbnQgV2ViUHJlZmVyZW5jZXM6OmludGVnZXJWYWx1ZUZv
cktleShjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIG51bWJlclZhbHVlRm9yUHJlZmVy
ZW5jZXNWYWx1ZTxpbnQ+KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOwogfQogCi1CT09MIFdlYlBy
ZWZlcmVuY2VzOjpib29sVmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQorQk9PTCBXZWJQcmVm
ZXJlbmNlczo6Ym9vbFZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSkKIHsKICAgICByZXR1cm4g
Ym9vbGVhblZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZSh2YWx1ZUZvcktleShrZXkpLmdldCgpKTsK
IH0KIAotZmxvYXQgV2ViUHJlZmVyZW5jZXM6OmZsb2F0VmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYg
a2V5KQorZmxvYXQgV2ViUHJlZmVyZW5jZXM6OmZsb2F0VmFsdWVGb3JLZXkoY29uc3QgY2hhciog
a2V5KQogewogICAgIHJldHVybiBudW1iZXJWYWx1ZUZvclByZWZlcmVuY2VzVmFsdWU8ZmxvYXQ+
KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOwogfQogCi1MT05HTE9ORyBXZWJQcmVmZXJlbmNlczo6
bG9uZ2xvbmdWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpCitMT05HTE9ORyBXZWJQcmVmZXJl
bmNlczo6bG9uZ2xvbmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJu
IG51bWJlclZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZTxMT05HTE9ORz4odmFsdWVGb3JLZXkoa2V5
KS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKENGU3Ry
aW5nUmVmIGtleSwgTFBDVFNUUiB2YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmlu
Z1ZhbHVlKGNvbnN0IGNoYXIqIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBCU3RyaW5nIHZhbDsK
ICAgICB2YWwuYWRvcHRCU1RSKHN0cmluZ1ZhbHVlRm9yS2V5KGtleSkpOwpAQCAtMzY1LDcgKzM3
Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKENGU3RyaW5nUmVmIGtl
eSwgTFBDVFNUUiB2YWx1ZSkKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9u
KCk7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVnZXJWYWx1ZShDRlN0cmluZ1Jl
ZiBrZXksIGludCB2YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVnZXJWYWx1ZShj
b25zdCBjaGFyKiBrZXksIGludCB2YWx1ZSkKIHsKICAgICBpZiAoaW50ZWdlclZhbHVlRm9yS2V5
KGtleSkgPT0gdmFsdWUpCiAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszODcsNyBAQCB2b2lk
IFdlYlByZWZlcmVuY2VzOjpzZXRJbnRlZ2VyVmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBpbnQgdmFs
dWUpCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogfQogCi12b2lk
IFdlYlByZWZlcmVuY2VzOjpzZXRGbG9hdFZhbHVlKENGU3RyaW5nUmVmIGtleSwgZmxvYXQgdmFs
dWUpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRGbG9hdFZhbHVlKGNvbnN0IGNoYXIqIGtleSwg
ZmxvYXQgdmFsdWUpCiB7CiAgICAgaWYgKGZsb2F0VmFsdWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzg1LDcgKzM5Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldEZsb2F0VmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBmbG9hdCB2YWx1ZSkKICAgICBwb3N0UHJl
ZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldEJvb2xWYWx1ZShDRlN0cmluZ1JlZiBrZXksIEJPT0wgdmFsdWUpCit2b2lkIFdlYlByZWZl
cmVuY2VzOjpzZXRCb29sVmFsdWUoY29uc3QgY2hhcioga2V5LCBCT09MIHZhbHVlKQogewogICAg
IGlmIChib29sVmFsdWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
Mzk1LDcgKzQwNyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEJvb2xWYWx1ZShDRlN0cmlu
Z1JlZiBrZXksIEJPT0wgdmFsdWUpCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNh
dGlvbigpOwogfQogCi12b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRMb25nTG9uZ1ZhbHVlKENGU3Ry
aW5nUmVmIGtleSwgTE9OR0xPTkcgdmFsdWUpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRMb25n
TG9uZ1ZhbHVlKGNvbnN0IGNoYXIqIGtleSwgTE9OR0xPTkcgdmFsdWUpCiB7CiAgICAgaWYgKGxv
bmdsb25nVmFsdWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMz
LDEyICs0NDUsMTEgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6bG9hZCgpCiAKIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiB7Ci0g
ICAgQ0ZTdHJpbmdSZWYgZGlkTWlncmF0ZUtleSA9IENGU1RSKFdlYktpdERpZE1pZ3JhdGVXZWJL
aXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlc1ByZWZlcmVuY2VLZXkpOwotICAgIGlmIChib29s
VmFsdWVGb3JLZXkoZGlkTWlncmF0ZUtleSkpCisgICAgaWYgKGJvb2xWYWx1ZUZvcktleShXZWJL
aXREaWRNaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXNQcmVmZXJlbmNlS2V5
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgb2xkVmFsdWUgPSBtX2F1dG9TYXZlczsKICAg
ICBtX2F1dG9TYXZlcyA9IHRydWU7Ci0gICAgc2V0Qm9vbFZhbHVlKGRpZE1pZ3JhdGVLZXksIFRS
VUUpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXREaWRNaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNU
b0NGUHJlZmVyZW5jZXNQcmVmZXJlbmNlS2V5LCBUUlVFKTsKICAgICBtX2F1dG9TYXZlcyA9IG9s
ZFZhbHVlOwogCiAgICAgV1RGOjpDU3RyaW5nIHBhdGggPSBvbGRQcmVmZXJlbmNlc1BhdGgoKS51
dGY4KCk7CkBAIC01NzksNDA2ICs1OTAsNDA2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OmlkZW50aWZpZXIoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzdGFuZGFyZEZvbnRGYW1pbHkoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogZmFtaWx5KQogewotICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRTdGFuZGFyZEZvbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZhbWlseSA9IHN0cmlu
Z1ZhbHVlRm9yS2V5KFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVy
biAoKmZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlByZWZlcmVuY2VzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0g
Ki8gQlNUUiBmYW1pbHkpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0U3RhbmRh
cmRGb250UHJlZmVyZW5jZUtleSksIGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0
U3RhbmRhcmRGb250UHJlZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Zml4ZWRGb250RmFt
aWx5KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkKIHsKLSAgICAqZmFt
aWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0Rml4ZWRGb250UHJlZmVyZW5jZUtl
eSkpOworICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRGaXhlZEZvbnRQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpmYW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Rml4ZWRGb250RmFt
aWx5KCAKICAgICAvKiBbaW5dICovIEJTVFIgZmFtaWx5KQogewotICAgIHNldFN0cmluZ1ZhbHVl
KENGU1RSKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBmYW1pbHkpOworICAgIHNldFN0
cmluZ1ZhbHVlKFdlYktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXksIGZhbWlseSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OnNlcmlmRm9udEZhbWlseSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmb250RmFt
aWx5KQogewotICAgICpmb250RmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0
U2VyaWZGb250UHJlZmVyZW5jZUtleSkpOworICAgICpmb250RmFtaWx5ID0gc3RyaW5nVmFsdWVG
b3JLZXkoV2ViS2l0U2VyaWZGb250UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgqZm9udEZh
bWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXRTZXJpZkZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0gKi8gQlNUUiBm
YW1pbHkpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0U2VyaWZGb250UHJlZmVy
ZW5jZUtleSksIGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0U2VyaWZGb250UHJl
ZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2Fuc1NlcmlmRm9udEZhbWlseSggCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpCiB7Ci0gICAgKmZhbWlseSA9IHN0cmlu
Z1ZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSk7Cisg
ICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVlRm9yS2V5KFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJl
bmNlS2V5KTsKICAgICByZXR1cm4gKCpmYW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0U2Fuc1NlcmlmRm9udEZh
bWlseSggCiAgICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSkKIHsKLSAgICBzZXRTdHJpbmdWYWx1
ZShDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIGZhbWlseSk7CisgICAg
c2V0U3RyaW5nVmFsdWUoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXksIGZhbWlseSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6OmN1cnNpdmVGb250RmFtaWx5KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIGZhbWlseSkKIHsKLSAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZTVFIoV2Vi
S2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVl
Rm9yS2V5KFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgqZmFt
aWx5KSA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OnNldEN1cnNpdmVGb250RmFtaWx5KCAKICAgICAvKiBbaW5dICovIEJTVFIg
ZmFtaWx5KQogewotICAgIHNldFN0cmluZ1ZhbHVlKENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJl
ZmVyZW5jZUtleSksIGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0Q3Vyc2l2ZUZv
bnRQcmVmZXJlbmNlS2V5LCBmYW1pbHkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpmYW50YXN5Rm9udEZhbWlseSggCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpCiB7Ci0gICAgKmZhbWlseSA9IHN0
cmluZ1ZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSkpOwor
ICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiAoKmZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRGYW50YXN5Rm9udEZhbWls
eSggCiAgICAgLyogW2luXSAqLyBCU1RSIGZhbWlseSkKIHsKLSAgICBzZXRTdHJpbmdWYWx1ZShD
RlNUUihXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBmYW1pbHkpOworICAgIHNldFN0
cmluZ1ZhbHVlKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6cGljdG9ncmFwaEZvbnRGYW1pbHkoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiog
ZmFtaWx5KQogewotICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNUUihXZWJLaXRQ
aWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVG
b3JLZXkoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpm
YW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0gKi8g
QlNUUiBmYW1pbHkpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0UGljdG9ncmFw
aEZvbnRQcmVmZXJlbmNlS2V5KSwgZmFtaWx5KTsKKyAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXRQ
aWN0b2dyYXBoRm9udFByZWZlcmVuY2VLZXksIGZhbWlseSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmRlZmF1bHRGb250
U2l6ZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIGZvbnRTaXplKQogewotICAgICpm
b250U2l6ZSA9IGludGVnZXJWYWx1ZUZvcktleShDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQ
cmVmZXJlbmNlS2V5KSk7CisgICAgKmZvbnRTaXplID0gaW50ZWdlclZhbHVlRm9yS2V5KFdlYktp
dERlZmF1bHRGb250U2l6ZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0Rm9udFNp
emUoIAogICAgIC8qIFtpbl0gKi8gaW50IGZvbnRTaXplKQogewotICAgIHNldEludGVnZXJWYWx1
ZShDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgZm9udFNpemUpOwor
ICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5LCBm
b250U2l6ZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OmRlZmF1bHRGaXhlZEZvbnRTaXplKCAKICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIGludCogZm9udFNpemUpCiB7Ci0gICAgKmZvbnRTaXplID0gaW50ZWdlclZhbHVl
Rm9yS2V5KENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSkpOwor
ICAgICpmb250U2l6ZSA9IGludGVnZXJWYWx1ZUZvcktleShXZWJLaXREZWZhdWx0Rml4ZWRGb250
U2l6ZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSggCiAg
ICAgLyogW2luXSAqLyBpbnQgZm9udFNpemUpCiB7Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RS
KFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIGZvbnRTaXplKTsKKyAg
ICBzZXRJbnRlZ2VyVmFsdWUoV2ViS2l0RGVmYXVsdEZpeGVkRm9udFNpemVQcmVmZXJlbmNlS2V5
LCBmb250U2l6ZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6Om1pbmltdW1Gb250U2l6ZSggCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBpbnQqIGZvbnRTaXplKQogewotICAgICpmb250U2l6ZSA9IGludGVnZXJWYWx1ZUZv
cktleShDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZv
bnRTaXplID0gaW50ZWdlclZhbHVlRm9yS2V5KFdlYktpdE1pbmltdW1Gb250U2l6ZVByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpzZXRNaW5pbXVtRm9udFNpemUoIAogICAgIC8qIFtpbl0gKi8gaW50
IGZvbnRTaXplKQogewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRNaW5pbXVtRm9u
dFNpemVQcmVmZXJlbmNlS2V5KSwgZm9udFNpemUpOworICAgIHNldEludGVnZXJWYWx1ZShXZWJL
aXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Om1pbmlt
dW1Mb2dpY2FsRm9udFNpemUoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBmb250U2l6
ZSkKIHsKLSAgICAqZm9udFNpemUgPSBpbnRlZ2VyVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0TWlu
aW11bUxvZ2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqZm9udFNpemUgPSBpbnRl
Z2VyVmFsdWVGb3JLZXkoV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXkp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKCAKICAgICAvKiBbaW5dICovIGlu
dCBmb250U2l6ZSkKIHsKLSAgICBzZXRJbnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0TWluaW11bUxv
Z2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBmb250U2l6ZSk7CisgICAgc2V0SW50ZWdlclZh
bHVlKFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6OmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIG5hbWUpCiB7Ci0gICAgKm5hbWUgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNUUihX
ZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqbmFtZSA9
IHN0cmluZ1ZhbHVlRm9yS2V5KFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5j
ZUtleSk7CiAgICAgcmV0dXJuICgqbmFtZSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZSggCiAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUo
Q0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgbmFtZSk7
CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJl
bmNlS2V5LCBuYW1lKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6dXNlclN0eWxlU2hlZXRFbmFibGVkKCAKICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSkp
OworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFVzZXJTdHlsZVNoZWV0RW5h
YmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoIAog
ICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihX
ZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXksIGVu
YWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uKCAKICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIGxvY2F0aW9uKQogewotICAgICpsb2NhdGlvbiA9IHN0cmluZ1ZhbHVl
Rm9yS2V5KENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSk7
CisgICAgKmxvY2F0aW9uID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0VXNlclN0eWxlU2hlZXRM
b2NhdGlvblByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiAoKmxvY2F0aW9uKSA/IFNfT0sgOiBF
X0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oIAogICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhdGlvbikK
IHsKLSAgICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
UHJlZmVyZW5jZUtleSksIGxvY2F0aW9uKTsKKyAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSwgbG9jYXRpb24pOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjppc0ph
dmFFbmFibGVkKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0g
ICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVm
ZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SmF2YUVu
YWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0SmF2YUVuYWJsZWQoIAogICAgIC8qIFtp
bl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRKYXZh
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0
SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aXNKYXZhU2NyaXB0
RW5hYmxlZCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAg
ICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVk
UHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEph
dmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEphdmFTY3JpcHRFbmFi
bGVkKCAKICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUo
Q0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7Cisg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5h
YmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OmlzV2ViU2VjdXJpdHlFbmFibGVkKCAKICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
Q0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VL
ZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXRXZWJTZWN1cml0eUVuYWJsZWQoIAogICAgIC8qIFtpbl0gKi8gQk9P
TCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFdl
YlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09L
OwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IGFsbG93QWNjZXNzKQogewotICAgICphbGxvd0FjY2VzcyA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpKTsK
KyAgICAqYWxsb3dBY2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKQog
ewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBhbGxvd0FjY2Vzcyk7CisgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dB
Y2Nlc3MpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjphbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MKiBhbGxvd0FjY2VzcykKIHsKLSAgICAqYWxsb3dBY2Nlc3MgPSBi
b29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJl
ZmVyZW5jZUtleSkpOworICAgICphbGxvd0FjY2VzcyA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKAogICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vz
cykKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzUHJlZmVyZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICBzZXRCb29sVmFsdWUoV2Vi
S2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3Mp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKAogICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktl
eShDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtleSkp
OworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEphdmFTY3JpcHRDYW5BY2Nl
c3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCgKICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29s
VmFsdWUoQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VL
ZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjppc1hTU0F1ZGl0b3JF
bmFibGVkKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAq
ZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRYU1NB
dWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdG9yRW5hYmxl
ZCgKICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZT
VFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxl
ZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OmlzRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgKICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
Q0ZTVFIoV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAq
ZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoCiAgICAgLyog
W2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9v
bFZhbHVlKFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSggCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9v
bFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHlQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2Vi
S2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpOwog
ICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCAKICAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBlbmFi
bGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseVByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphcmVQbHVnSW5zRW5h
YmxlZCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICpl
bmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVy
ZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFBsdWdpbnNF
bmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFBsdWdJbnNFbmFibGVkKCAKICAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0
UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVl
KFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Omlz
Q1NTUmVnaW9uc0VuYWJsZWQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVk
KQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdENTU1JlZ2lv
bnNFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5
KFdlYktpdENTU1JlZ2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldENTU1Jl
Z2lvbnNFbmFibGVkKAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJv
b2xWYWx1ZShDRlNUUihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFi
bGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNl
S2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dzQW5pbWF0ZWRJbWFnZXMoIAogICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQ
cmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoIAogICAgIC8q
IFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRB
bGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xW
YWx1ZShXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OmFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmcoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSkpOworICAgICpl
bmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQ
cmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZyggCiAg
ICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdl
YktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7Cisg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNl
S2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCAKICAg
ICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0RGlzcGxheUltYWdlc0tleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRE
aXNwbGF5SW1hZ2VzS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RGlzcGxheUltYWdlc0tleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdERpc3BsYXlJbWFnZXNLZXkpOwog
ICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZSgK
ICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIo
V2ViS2l0TG9hZFNpdGVJY29uc0tleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRMb2FkU2l0ZUljb25zS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9hZHNTaXRlSWNvbnNJZ25v
cmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2UoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktp
dExvYWRTaXRlSWNvbnNLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJL
aXRMb2FkU2l0ZUljb25zS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTk4LDI4ICsx
MDA5LDI4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmhpeGll
NzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgKICAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7
CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
UHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Om1lZGlhUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAg
ICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VL
ZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKAogICAgIC8qIFtpbl0g
Ki8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRNZWRpYVBs
YXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xW
YWx1ZShXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSwgZW5hYmxl
ZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6Om1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5KSk7Cisg
ICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0lu
bGluZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMDQwLDk0ICsx
MDUxLDk0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmF1dG9z
YXZlcygKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFNob3Vs
ZFByaW50QmFja2dyb3VuZHMoIAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAg
IHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5j
ZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRTaG91bGRQcmludEJhY2tn
cm91bmRzUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNob3VsZFByaW50QmFja2dy
b3VuZHMoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAq
ZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91
bmRzUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktp
dFNob3VsZFByaW50QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCggCiAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAg
c2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFByaXZhdGVCcm93c2luZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICpl
bmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRUYWJzVG9M
aW5rcyggCiAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVl
KENGU1RSKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0
Qm9vbFZhbHVlKFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6dGFic1RvTGlua3MoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkK
IHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRUYWJUb0xpbmtz
UHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFRh
YlRvTGlua3NQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0VXNlc1BhZ2VDYWNoZSggCiAgICAg
ICAgIC8qIFtpbl0gKi8gQk9PTCB1c2VzUGFnZUNhY2hlKQogewotICAgIHNldEJvb2xWYWx1ZShD
RlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSksIHVzZXNQYWdlQ2FjaGUpOwor
ICAgIHNldEJvb2xWYWx1ZShXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSwgdXNlc1Bh
Z2VDYWNoZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OnVzZXNQYWdlQ2FjaGUoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogdXNlc1BhZ2VDYWNoZSkKIHsKLSAgICAqdXNlc1BhZ2VDYWNoZSA9IGJvb2xWYWx1
ZUZvcktleShDRlNUUihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSkpOworICAgICp1
c2VzUGFnZUNhY2hlID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJQcmVmZXJlbmNlczo6dGV4dEFyZWFzQXJlUmVzaXphYmxlKCAKICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JL
ZXkoQ0ZTVFIoV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSkpOworICAg
ICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVBy
ZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoIAogICAgIC8q
IFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRU
ZXh0QXJlYXNBcmVSZXNpemFibGVQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9v
bFZhbHVlKFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXksIGVuYWJsZWQp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpoaXN0b3J5
SXRlbUxpbWl0KGludCogbGltaXQpCiB7Ci0gICAgKmxpbWl0ID0gaW50ZWdlclZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdEhpc3RvcnlJdGVtTGltaXRLZXkpKTsKKyAgICAqbGltaXQgPSBpbnRlZ2Vy
VmFsdWVGb3JLZXkoV2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEhpc3RvcnlJdGVtTGltaXQoaW50IGxp
bWl0KQogewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0
S2V5KSwgbGltaXQpOworICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXRIaXN0b3J5SXRlbUxpbWl0
S2V5LCBsaW1pdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6Omhpc3RvcnlBZ2VJbkRheXNMaW1pdChpbnQqIGxpbWl0KQogewotICAgICpsaW1pdCA9IGlu
dGVnZXJWYWx1ZUZvcktleShDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpKTsK
KyAgICAqbGltaXQgPSBpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xp
bWl0S2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6
c2V0SGlzdG9yeUFnZUluRGF5c0xpbWl0KGludCBsaW1pdCkKIHsKLSAgICBzZXRJbnRlZ2VyVmFs
dWUoQ0ZTVFIoV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgbGltaXQpOworICAgIHNl
dEludGVnZXJWYWx1ZShXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXksIGxpbWl0KTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTE0Niw0MCArMTE1Nyw0MCBAQCBIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjp1bnVzZWQyKCkKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Omljb25EYXRhYmFz
ZUxvY2F0aW9uKAogICAgIC8qIFtvdXRdICovIEJTVFIqIGxvY2F0aW9uKQogewotICAgICpsb2Nh
dGlvbiA9IHN0cmluZ1ZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxvY2F0aW9u
S2V5KSk7CisgICAgKmxvY2F0aW9uID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0SWNvbkRhdGFi
YXNlTG9jYXRpb25LZXkpOwogICAgIHJldHVybiAoKmxvY2F0aW9uKSA/IFNfT0sgOiBFX0ZBSUw7
CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEljb25EYXRhYmFzZUxvY2F0aW9uKAog
ICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhdGlvbikKIHsKLSAgICBzZXRTdHJpbmdWYWx1ZShDRlNU
UihXZWJLaXRJY29uRGF0YWJhc2VMb2NhdGlvbktleSksIGxvY2F0aW9uKTsKKyAgICBzZXRTdHJp
bmdWYWx1ZShXZWJLaXRJY29uRGF0YWJhc2VMb2NhdGlvbktleSwgbG9jYXRpb24pOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjppY29uRGF0YWJhc2VFbmFi
bGVkKEJPT0wqIGVuYWJsZWQpLy9sb2NhdGlvbikKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShDRlNUUihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQ
cmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChCT09MIGVuYWJsZWQgKS8vbG9jYXRpb24pCiB7
Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEljb25EYXRhYmFzZUVu
YWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Zm9udFNtb290aGluZyggCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBGb250U21vb3RoaW5nVHlwZSogc21vb3RoaW5nVHlwZSkK
IHsKLSAgICAqc21vb3RoaW5nVHlwZSA9IChGb250U21vb3RoaW5nVHlwZSkgaW50ZWdlclZhbHVl
Rm9yS2V5KENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSkpOworICAg
ICpzbW9vdGhpbmdUeXBlID0gc3RhdGljX2Nhc3Q8Rm9udFNtb290aGluZ1R5cGU+KGludGVnZXJW
YWx1ZUZvcktleShXZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6c2V0Rm9udFNtb290aGluZyggCiAgICAgLyogW2luXSAqLyBGb250U21vb3RoaW5nVHlwZSBz
bW9vdGhpbmdUeXBlKQogewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRGb250U21v
b3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdUeXBlKTsKKyAgICBzZXRJbnRlZ2Vy
VmFsdWUoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5LCBzbW9vdGhpbmdUeXBl
KTsKICAgICBpZiAoc21vb3RoaW5nVHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3MpCiAg
ICAgICAgIHNtb290aGluZ1R5cGUgPSBGb250U21vb3RoaW5nVHlwZU1lZGl1bTsKICNpZiBVU0Uo
Q0cpCkBAIC0xMTkxLDE0ICsxMjAyLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OnNldEZvbnRTbW9vdGhpbmcoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpmb250U21vb3RoaW5nQ29udHJhc3QoIAogICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gZmxvYXQqIGNvbnRyYXN0KQogewotICAgICpjb250cmFzdCA9IGZsb2F0VmFsdWVG
b3JLZXkoQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSkpOwor
ICAgICpjb250cmFzdCA9IGZsb2F0VmFsdWVGb3JLZXkoV2ViS2l0Rm9udFNtb290aGluZ0NvbnRy
YXN0UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEZvbnRTbW9vdGhpbmdDb250cmFzdCggCiAg
ICAgLyogW2luXSAqLyBmbG9hdCBjb250cmFzdCkKIHsKLSAgICBzZXRGbG9hdFZhbHVlKENGU1RS
KFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBjb250cmFzdCk7Cisg
ICAgc2V0RmxvYXRWYWx1ZShXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQcmVmZXJlbmNlS2V5
LCBjb250cmFzdCk7CiAjaWYgVVNFKENHKQogICAgIHdrU2V0Rm9udFNtb290aGluZ0NvbnRyYXN0
KGNvbnRyYXN0KTsKICNlbmRpZgpAQCAtMTIwOCw3ICsxMjE5LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Rm9udFNtb290aGluZ0NvbnRyYXN0KAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZWRpdGFibGVMaW5rQmVoYXZp
b3IoCiAgICAgLyogW291dCwgcmV0dmFsXSAqLyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvciog
ZWRpdGFibGVMaW5rQmVoYXZpb3IpCiB7Ci0gICAgV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3Ig
dmFsdWUgPSAoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3IpIGludGVnZXJWYWx1ZUZvcktleShD
RlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXkpKTsKKyAgICBXZWJL
aXRFZGl0YWJsZUxpbmtCZWhhdmlvciB2YWx1ZSA9IHN0YXRpY19jYXN0PFdlYktpdEVkaXRhYmxl
TGlua0JlaGF2aW9yPihpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZp
b3JQcmVmZXJlbmNlS2V5KSk7CiAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgICAgICBjYXNlIFdl
YktpdEVkaXRhYmxlTGlua0RlZmF1bHRCZWhhdmlvcjoKICAgICAgICAgY2FzZSBXZWJLaXRFZGl0
YWJsZUxpbmtBbHdheXNMaXZlOgpAQCAtMTIyNyw3ICsxMjM4LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZWRpdGFibGVMaW5rQmVoYXZpb3IoCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRFZGl0YWJsZUxpbmtCZWhhdmlv
cigKICAgICAvKiBbaW5dICovIFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yIGJlaGF2aW9yKQog
ewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclBy
ZWZlcmVuY2VLZXkpLCBiZWhhdmlvcik7CisgICAgc2V0SW50ZWdlclZhbHVlKFdlYktpdEVkaXRh
YmxlTGlua0JlaGF2aW9yUHJlZmVyZW5jZUtleSwgYmVoYXZpb3IpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC0xMjQ2LDE0ICsxMjU3LDE0IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVu
dXNlZDYoKQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkKAogICAgIC8qIFtpbl0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAg
ICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXko
V2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNl
dEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
ZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRp
bmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApAQCAtMTI2Myw3NSArMTI3NCw3NSBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpjb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KAogICAg
IGlmICghYWNjZXB0UG9saWN5KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmFj
Y2VwdFBvbGljeSA9IChXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KWludGVnZXJWYWx1
ZUZvcktleShDRlNUUihXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5UHJlZmVyZW5jZUtl
eSkpOworICAgICphY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5PihpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0Q29va2llU3RvcmFnZUFjY2Vw
dFBvbGljeVByZWZlcmVuY2VLZXkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Q29va2llU3RvcmFnZUFjY2VwdFBv
bGljeSggCiAgICAgICAgIC8qIFtpbl0gKi8gV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGlj
eSBhY2NlcHRQb2xpY3kpCiB7Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3lQcmVmZXJlbmNlS2V5KSwgYWNjZXB0UG9saWN5KTsKKyAgICBz
ZXRJbnRlZ2VyVmFsdWUoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VL
ZXksIGFjY2VwdFBvbGljeSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIAogSFJFU1VMVCBXZWJQ
cmVmZXJlbmNlczo6Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQp
CiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZh
bHVlRm9yS2V5KFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xW
YWx1ZShDRlNUUihXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkKEJPT0wqIGVuYWJs
ZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViR3JhbW1hckNo
ZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZv
cktleShXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1
ZShXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFsbG93Q29udGludW91
c1NwZWxsQ2hlY2tpbmcoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShDRlNUUihBbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nUHJlZmVyZW5jZUtleSkp
OworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KEFsbG93Q29udGludW91c1NwZWxsQ2hl
Y2tpbmdQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQ
cmVmZXJlbmNlczo6c2V0QWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZyhCT09MIGVuYWJsZWQp
CiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmdQ
cmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKEFsbG93Q29udGludW91
c1NwZWxsQ2hlY2tpbmdQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZChC
T09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFNl
YW1sZXNzSUZyYW1lc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZv
cktleShTZWFtbGVzc0lGcmFtZXNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChCT09M
IGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFNlYW1sZXNzSUZyYW1lc1ByZWZl
cmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoU2VhbWxlc3NJRnJhbWVzUHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OmlzRE9NUGFzdGVBbGxvd2VkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVy
ZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdERPTVBhc3Rl
QWxsb3dlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VM
VCBXZWJQcmVmZXJlbmNlczo6c2V0RE9NUGFzdGVBbGxvd2VkKEJPT0wgZW5hYmxlZCkKIHsKLSAg
ICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleSks
IGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJl
bmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTM0MCwxMyArMTM1
MSwxMyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpjYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwq
IGNhY2hlTW9kZWwpCiAgICAgaWYgKCFjYWNoZU1vZGVsKQogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogCi0gICAgKmNhY2hlTW9kZWwgPSAoV2ViQ2FjaGVNb2RlbClpbnRlZ2VyVmFsdWVGb3JL
ZXkoQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpKTsKKyAgICAqY2FjaGVNb2Rl
bCA9IHN0YXRpY19jYXN0PFdlYkNhY2hlTW9kZWw+KGludGVnZXJWYWx1ZUZvcktleShXZWJLaXRD
YWNoZU1vZGVsUHJlZmVyZW5jZUtleSkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkK
IHsKLSAgICBzZXRJbnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VL
ZXkpLCBjYWNoZU1vZGVsKTsKKyAgICBzZXRJbnRlZ2VyVmFsdWUoV2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXksIGNhY2hlTW9kZWwpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMzY0
LDE5ICsxMzc1LDE5IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVudXNlZDQoKQogCiBIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKEJPT0wqIHNob3Vs
ZFBhaW50KQogewotICAgICpzaG91bGRQYWludCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJL
aXRQYWludE5hdGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSkpOworICAgICpzaG91bGRQYWludCA9
IGJvb2xWYWx1ZUZvcktleShXZWJLaXRQYWludE5hdGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3Vs
ZFBhaW50TmF0aXZlQ29udHJvbHMoQk9PTCBzaG91bGRQYWludCkKIHsKLSAgICBzZXRCb29sVmFs
dWUoQ0ZTVFIoV2ViS2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBzaG91bGRQ
YWludCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJl
bmNlS2V5LCBzaG91bGRQYWludCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewot
ICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
QEAgLTEzODUsMTMgKzEzOTYsMTMgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6ZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZChCT09MKiBlbmFibGVkKQogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RS
KFdlYktpdERldmVsb3BlckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJs
ZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBib29sIFdlYlByZWZlcmVuY2VzOjpkZXZl
bG9wZXJFeHRyYXNEaXNhYmxlZEJ5T3ZlcnJpZGUoKQogewotICAgIHJldHVybiAhIWJvb2xWYWx1
ZUZvcktleShDRlNUUihEaXNhYmxlV2ViS2l0RGV2ZWxvcGVyRXh0cmFzUHJlZmVyZW5jZUtleSkp
OworICAgIHJldHVybiAhIWJvb2xWYWx1ZUZvcktleShEaXNhYmxlV2ViS2l0RGV2ZWxvcGVyRXh0
cmFzUHJlZmVyZW5jZUtleSk7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEF1dG9t
YXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbChCT09MIGF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVN
b2RlbCkKQEAgLTE0MTEsNyArMTQyMiw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmF1dG9t
YXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbChCT09MKiBhdXRvbWF0aWNhbGx5RGV0ZWN0CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEF1dGhvckFuZFVzZXJT
dHlsZXNFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7Cisg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5j
ZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE0MjAsMTAzICsxNDMx
LDEwMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChCT09MKiBlbmFibAogICAgIGlmICghZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENG
U1RSKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAg
ICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJl
ZmVyZW5jZXM6OmluQXBwbGljYXRpb25DaHJvbWVNb2RlKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAg
KmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QXBwbGljYXRpb25DaHJvbWVN
b2RlUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktp
dEFwcGxpY2F0aW9uQ2hyb21lTW9kZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwog
fQogICAgIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBwbGljYXRpb25DaHJvbWVNb2Rl
KEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0QXBwbGljYXRp
b25DaHJvbWVNb2RlUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRBcHBsaWNhdGlvbkNocm9tZU1vZGVQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsK
LSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVm
ZXJlbmNlczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKEJPT0wqIGVuYWJsZWQp
CiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0g
Ym9vbFZhbHVlRm9yS2V5KFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREYXRhYmFzZXNFbmFibGVkKEJPT0wgZW5hYmxlZCkK
IHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0RGF0YWJhc2VzRW5hYmxl
ZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpkYXRhYmFzZXNFbmFibGVkKEJPT0wq
IGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0
RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNl
dExvY2FsU3RvcmFnZUVuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShD
RlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOwor
ICAgIHNldEJvb2xWYWx1ZShXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSwg
ZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OmxvY2FsU3RvcmFnZUVuYWJsZWQoQk9PTCogZW5hYmxlZCkKIHsK
LSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VF
bmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdl
YktpdExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKEJTVFIqIGxvY2F0aW9uKQogewotICAgICpsb2NhdGlvbiA9IHN0cmlu
Z1ZhbHVlRm9yS2V5KENGU1RSKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVu
Y2VLZXkpKTsKKyAgICAqbG9jYXRpb24gPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRMb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpsb2NhdGlvbikg
PyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoQlNUUiBsb2NhdGlvbikKIHsKLSAg
ICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVm
ZXJlbmNlS2V5KSwgbG9jYXRpb24pOworICAgIHNldFN0cmluZ1ZhbHVlKFdlYktpdExvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXksIGxvY2F0aW9uKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJv
b2xWYWx1ZShDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0RXhwZXJpbWVudGFs
Tm90aWZpY2F0aW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5h
YmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRp
b25zRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktl
eShXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpOwog
ICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRab29tc1Rl
eHRPbmx5KEJPT0wgem9vbXNUZXh0T25seSkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkpLCB6b29tc1RleHRPbmx5KTsKKyAgICBzZXRC
b29sVmFsdWUoV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXksIHpvb21zVGV4dE9ubHkp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjp6b29tc1Rl
eHRPbmx5KEJPT0wqIHpvb21zVGV4dE9ubHkpCiB7Ci0gICAgKnpvb21zVGV4dE9ubHkgPSBib29s
VmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkpKTsKKyAg
ICAqem9vbXNUZXh0T25seSA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRab29tc1RleHRPbmx5UHJl
ZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKEJP
T0wgdXNlSGlnaFJlc29sdXRpb25UaW1lcnMpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdl
YktpdFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIHVzZUhpZ2hSZXNvbHV0
aW9uVGltZXJzKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1l
cnNQcmVmZXJlbmNlS2V5LCB1c2VIaWdoUmVzb2x1dGlvblRpbWVycyk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNob3Vs
ZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKEJPT0wqIHVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKQog
ewotICAgICp1c2VIaWdoUmVzb2x1dGlvblRpbWVycyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihX
ZWJLaXRVc2VIaWdoUmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqdXNlSGln
aFJlc29sdXRpb25UaW1lcnMgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0VXNlSGlnaFJlc29sdXRp
b25UaW1lcnNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTUzMywx
NCArMTU0NCwxNCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVz
dChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xW
YWx1ZShDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
Qk9PTCogZW5hYmxlZCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
KmVuYWJsZWQgPSBDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZSgpICYmIGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IENBQ0ZMYXllclRyZWVI
b3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkgJiYgYm9vbFZhbHVlRm9yS2V5
KFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAjZWxz
ZQogICAgICplbmFibGVkID0gRkFMU0U7CiAjZW5kaWYKQEAgLTE1NDksNDkgKzE1NjAsNDkgQEAg
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoQk9P
TCogZW5hYmxlZCkKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvd0RlYnVnQm9yZGVycyhC
T09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdl
YktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoV2ViS2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRTaG93RGVidWdCb3Jk
ZXJzKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0U2hvd0Rl
YnVnQm9yZGVyc1ByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2Vi
S2l0U2hvd0RlYnVnQm9yZGVyc1ByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzaG93UmVwYWludENvdW50ZXIoQk9P
TCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJL
aXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3dSZXBhaW50
Q291bnRlcihCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFNo
b3dSZXBhaW50Q291bnRlclByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFs
dWUoV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEN1c3RvbURyYWdD
dXJzb3JzRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdl
YktpdEN1c3RvbURyYWdDdXJzb3JzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAg
ICBzZXRCb29sVmFsdWUoV2ViS2l0Q3VzdG9tRHJhZ0N1cnNvcnNFbmFibGVkUHJlZmVyZW5jZUtl
eSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6OmN1c3RvbURyYWdDdXJzb3JzRW5hYmxlZChCT09MKiBlbmFibGVkKQogewotICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEN1c3RvbURyYWdDdXJzb3JzRW5hYmxl
ZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRD
dXN0b21EcmFnQ3Vyc29yc0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKEJP
T0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hp
bmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6aXNETlNQcmVmZXRjaGluZ0Vu
YWJsZWQoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShD
RlNUUihXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE2MDEsNyArMTYxMiw3IEBAIEhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OmlzRnVsbFNjcmVlbkVuYWJsZWQoQk9PTCogZW5hYmxlZCkK
ICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqZW5h
YmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZl
cmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRGdWxsU2Ny
ZWVuRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICBy
ZXR1cm4gRV9OT1RJTVBMOwpAQCAtMTYxMSw3ICsxNjIyLDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6aXNGdWxsU2NyZWVuRW5hYmxlZChCT09MKiBlbmFibGVkKQogSFJFU1VMVCBXZWJQcmVm
ZXJlbmNlczo6c2V0RnVsbFNjcmVlbkVuYWJsZWQoQk9PTCBlbmFibGVkKQogewogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0RnVsbFNjcmVl
bkVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNf
T0s7CiAjZWxzZQogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNjI0LDcgKzE2MzUsNyBAQCBI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjphdkZvdW5kYXRpb25FbmFibGVkKEJPT0wqIGVuYWJsZWQp
CiAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRBVkZv
dW5kYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQog
ICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNjM0LDcgKzE2NDUsNyBAQCBIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjphdkZvdW5kYXRpb25FbmFibGVkKEJPT0wqIGVuYWJsZWQpCiBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzZXRBVkZvdW5kYXRpb25FbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKICNp
ZiBVU0UoQVZGT1VOREFUSU9OKQotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRBVkZvdW5k
YXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRBVkZvdW5kYXRpb25FbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0
dXJuIFNfT0s7CiAjZWxzZQogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNjQ2LDEzICsxNjU3
LDEzIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRU
ZXh0KEJPT0wqIHNob3dzVG9vbFRpcCkKICAgICBpZiAoIXNob3dzVG9vbFRpcCkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpzaG93c1Rvb2xUaXAgPSBib29sVmFsdWVGb3JLZXko
Q0ZTVFIoV2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSk7
CisgICAgKnNob3dzVG9vbFRpcCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRTaG93c1Rvb2xUaXBP
dmVyVHJ1bmNhdGVkVGV4dFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChC
T09MIHNob3dzVG9vbFRpcCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0U2hvd3NU
b29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KSwgc2hvd3NUb29sVGlwKTsKKyAg
ICBzZXRCb29sVmFsdWUoV2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJl
bmNlS2V5LCBzaG93c1Rvb2xUaXApOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xNjYxLDEz
ICsxNjcyLDEzIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3VsZEludmVydENvbG9ycyhC
T09MKiBzaG91bGRJbnZlcnRDb2xvcnMpCiAgICAgaWYgKCFzaG91bGRJbnZlcnRDb2xvcnMpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqc2hvdWxkSW52ZXJ0Q29sb3JzID0gYm9v
bFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFNob3VsZEludmVydENvbG9yc1ByZWZlcmVuY2VLZXkp
KTsKKyAgICAqc2hvdWxkSW52ZXJ0Q29sb3JzID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3Vs
ZEludmVydENvbG9yc1ByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpzZXRTaG91bGRJbnZlcnRDb2xvcnMoQk9PTCBzaG91bGRJbnZl
cnRDb2xvcnMpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFNob3VsZEludmVydENv
bG9yc1ByZWZlcmVuY2VLZXkpLCBzaG91bGRJbnZlcnRDb2xvcnMpOworICAgIHNldEJvb2xWYWx1
ZShXZWJLaXRTaG91bGRJbnZlcnRDb2xvcnNQcmVmZXJlbmNlS2V5LCBzaG91bGRJbnZlcnRDb2xv
cnMpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xNjkxLDcgKzE3MDIsNyBAQCBIUkVTVUxU
IFdlYlByZWZlcmVuY2VzOjpzaG91bGREaXNwbGF5U3VidGl0bGVzKEJPT0wqIGVuYWJsZWQpCiAg
ICAgaWYgKCFlbmFibGVkKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmVuYWJs
ZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1By
ZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRTaG91
bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxz
ZQogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNzAxLDcgKzE3MTIsNyBAQCBIUkVTVUxUIFdl
YlByZWZlcmVuY2VzOjpzaG91bGREaXNwbGF5U3VidGl0bGVzKEJPT0wqIGVuYWJsZWQpCiBIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpzZXRTaG91bGREaXNwbGF5U3VidGl0bGVzKEJPT0wgZW5hYmxl
ZCkKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdl
YktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5LCBl
bmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKICNlbHNlCiAgICAgcmV0dXJuIEVfTk9USU1QTDsK
QEAgLTE3MTQsNyArMTcyNSw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3VsZERpc3Bs
YXlDYXB0aW9ucyhCT09MKiBlbmFibGVkKQogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdl
YktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9
IGJvb2xWYWx1ZUZvcktleShXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5
KTsKICAgICByZXR1cm4gU19PSzsKICNlbHNlCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKQEAgLTE3
MjQsNyArMTczNSw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNob3VsZERpc3BsYXlDYXB0
aW9ucyhCT09MKiBlbmFibGVkKQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkRGlz
cGxheUNhcHRpb25zKEJPT0wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0g
ICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVu
Y2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0U2hvdWxkRGlzcGxheUNh
cHRpb25zUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQog
ICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNzM3LDcgKzE3NDgsNyBAQCBIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhCT09MKiBlbmFibGVkKQog
ICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFNob3VsZERpc3BsYXlUZXh0RGVzY3Jp
cHRpb25zUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdl
YktpdFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0
dXJuIFNfT0s7CiAjZWxzZQogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNzQ3LDcgKzE3NTgs
NyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9u
cyhCT09MKiBlbmFibGVkKQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkRGlzcGxh
eVRleHREZXNjcmlwdGlvbnMoQk9PTCBlbmFibGVkKQogewogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlw
dGlvbnNQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFNo
b3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CiAjZWxzZQogICAgIHJldHVybiBFX05PVElNUEw7CkBAIC0xNzU2LDEzICsx
NzY3LDEzIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZERpc3BsYXlUZXh0RGVz
Y3JpcHRpb25zKEJPT0wgZW5hYmxlZCkKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0UmVx
dWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZh
bHVlKENGU1RSKFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5
KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFJlcXVlc3RBbmltYXRpb25GcmFt
ZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAog
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZChCT09M
KiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktp
dFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJs
ZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZXMuaAppbmRleCA3ZWZmNTdiLi45OGI1MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VzLmgKQEAgLTUwNywxNiArNTA3LDE4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lk
IHNldFZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUp
OwogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWVGb3JLZXkoQ0ZTdHJpbmdS
ZWYga2V5KTsKLSAgICBCU1RSIHN0cmluZ1ZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSk7Ci0g
ICAgaW50IGludGVnZXJWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpOwotICAgIEJPT0wgYm9v
bFZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSk7Ci0gICAgZmxvYXQgZmxvYXRWYWx1ZUZvcktl
eShDRlN0cmluZ1JlZiBrZXkpOwotICAgIExPTkdMT05HIGxvbmdsb25nVmFsdWVGb3JLZXkoQ0ZT
dHJpbmdSZWYga2V5KTsKLSAgICB2b2lkIHNldFN0cmluZ1ZhbHVlKENGU3RyaW5nUmVmIGtleSwg
TFBDVFNUUiB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRJbnRlZ2VyVmFsdWUoQ0ZTdHJpbmdSZWYga2V5
LCBpbnQgdmFsdWUpOwotICAgIHZvaWQgc2V0Qm9vbFZhbHVlKENGU3RyaW5nUmVmIGtleSwgQk9P
TCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRGbG9hdFZhbHVlKENGU3RyaW5nUmVmIGtleSwgZmxvYXQg
dmFsdWUpOwotICAgIHZvaWQgc2V0TG9uZ0xvbmdWYWx1ZShDRlN0cmluZ1JlZiBrZXksIExPTkdM
T05HIHZhbHVlKTsKKyAgICB2b2lkIHNldFZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSwgQ0ZQ
cm9wZXJ0eUxpc3RSZWYgdmFsdWUpOworICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4g
dmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KTsKKyAgICBCU1RSIHN0cmluZ1ZhbHVlRm9yS2V5
KGNvbnN0IGNoYXIqIGtleSk7CisgICAgaW50IGludGVnZXJWYWx1ZUZvcktleShjb25zdCBjaGFy
KiBrZXkpOworICAgIEJPT0wgYm9vbFZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSk7CisgICAg
ZmxvYXQgZmxvYXRWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpOworICAgIExPTkdMT05HIGxv
bmdsb25nVmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KTsKKyAgICB2b2lkIHNldFN0cmluZ1Zh
bHVlKGNvbnN0IGNoYXIqIGtleSwgQlNUUiB2YWx1ZSk7CisgICAgdm9pZCBzZXRJbnRlZ2VyVmFs
dWUoY29uc3QgY2hhcioga2V5LCBpbnQgdmFsdWUpOworICAgIHZvaWQgc2V0Qm9vbFZhbHVlKGNv
bnN0IGNoYXIqIGtleSwgQk9PTCB2YWx1ZSk7CisgICAgdm9pZCBzZXRGbG9hdFZhbHVlKGNvbnN0
IGNoYXIqIGtleSwgZmxvYXQgdmFsdWUpOworICAgIHZvaWQgc2V0TG9uZ0xvbmdWYWx1ZShjb25z
dCBjaGFyKiBrZXksIExPTkdMT05HIHZhbHVlKTsKICAgICBzdGF0aWMgV2ViUHJlZmVyZW5jZXMq
IGdldEluc3RhbmNlRm9ySWRlbnRpZmllcihCU1RSIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKTsKICAgICB2b2lkIHNhdmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215731</attachid>
            <date>2013-11-01 05:57:33 -0700</date>
            <delta_ts>2013-11-01 07:07:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121827-20131101135732.patch</filename>
            <type>text/plain</type>
            <size>50524</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDliMjNjMDZl
ZDI2ZGExYzFmZDFkZjdiOTZiOGQ4NTg3NmU5MmZhNS4uYWZiZDU0Mzk4NmVmMzdhMjA0OWM3NjUw
OGNmNGZmYTQzMzRlYTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEz
LTExLTAxICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAg
IFtXSU5dIFJlZHVjZSB1c2FnZSBvZiBDRlNUUigpIGluIFdlYlByZWZlcmVuY2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRoaXMgbW92ZWQgdGhlIGRl
cGVuZGVuY3kgb24gQ0YgdG8gYSBmZXcgZnVuY3Rpb25zIG9ubHkKKyAgICAgICAgYW5kIGlzIGEg
Zmlyc3Qgc3RlcCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aG91dCBDRi4KKworICAgICAgICAqIFdl
YlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorCiAyMDEzLTEw
LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQ29tcGlsZSBmaXggZm9yIFZTMjAxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAppbmRleCBlM2JkMTg3M2NhMGI1NWNjM2ZkNjU2MDJhNGFmN2Y3NThlMzAzMGQ5Li4xODYxN2Qy
MmEzNjI2MjYxZTk0NDE4ZTQ1OWZiZDhkOTNjZjYxNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCkBAIC0zMDUsNyArMzA1LDE5IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNl
dFZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSwgQ0ZQcm9wZXJ0eUxpc3RSZWYgdmFsdWUpCiAg
ICAgfQogfQogCi1CU1RSIFdlYlByZWZlcmVuY2VzOjpzdHJpbmdWYWx1ZUZvcktleShDRlN0cmlu
Z1JlZiBrZXkpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRWYWx1ZUZvcktleShjb25zdCBjaGFy
KiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKQoreworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoMCwga2V5LCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgc2V0VmFsdWVGb3JLZXkoY2ZLZXkuZ2V0KCks
IHZhbHVlKTsKK30KKworUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBXZWJQcmVmZXJlbmNl
czo6dmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KQoreworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoMCwga2V5LCBr
Q0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgcmV0dXJuIHZhbHVlRm9yS2V5KGNmS2V5Lmdl
dCgpKTsKK30KKworQlNUUiBXZWJQcmVmZXJlbmNlczo6c3RyaW5nVmFsdWVGb3JLZXkoY29uc3Qg
Y2hhcioga2V5KQogewogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUgPSB2
YWx1ZUZvcktleShrZXkpOwogICAgIApAQCAtMzMyLDI3ICszNDQsMjcgQEAgQlNUUiBXZWJQcmVm
ZXJlbmNlczo6c3RyaW5nVmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQogICAgIHJldHVybiBi
c3RyOwogfQogCi1pbnQgV2ViUHJlZmVyZW5jZXM6OmludGVnZXJWYWx1ZUZvcktleShDRlN0cmlu
Z1JlZiBrZXkpCitpbnQgV2ViUHJlZmVyZW5jZXM6OmludGVnZXJWYWx1ZUZvcktleShjb25zdCBj
aGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIG51bWJlclZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZTxp
bnQ+KHZhbHVlRm9yS2V5KGtleSkuZ2V0KCkpOwogfQogCi1CT09MIFdlYlByZWZlcmVuY2VzOjpi
b29sVmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQorQk9PTCBXZWJQcmVmZXJlbmNlczo6Ym9v
bFZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSkKIHsKICAgICByZXR1cm4gYm9vbGVhblZhbHVl
Rm9yUHJlZmVyZW5jZXNWYWx1ZSh2YWx1ZUZvcktleShrZXkpLmdldCgpKTsKIH0KIAotZmxvYXQg
V2ViUHJlZmVyZW5jZXM6OmZsb2F0VmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KQorZmxvYXQg
V2ViUHJlZmVyZW5jZXM6OmZsb2F0VmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KQogewogICAg
IHJldHVybiBudW1iZXJWYWx1ZUZvclByZWZlcmVuY2VzVmFsdWU8ZmxvYXQ+KHZhbHVlRm9yS2V5
KGtleSkuZ2V0KCkpOwogfQogCi1MT05HTE9ORyBXZWJQcmVmZXJlbmNlczo6bG9uZ2xvbmdWYWx1
ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpCitMT05HTE9ORyBXZWJQcmVmZXJlbmNlczo6bG9uZ2xv
bmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIG51bWJlclZhbHVl
Rm9yUHJlZmVyZW5jZXNWYWx1ZTxMT05HTE9ORz4odmFsdWVGb3JLZXkoa2V5KS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKENGU3RyaW5nUmVmIGtleSwg
TFBDVFNUUiB2YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKGNvbnN0
IGNoYXIqIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBCU3RyaW5nIHZhbDsKICAgICB2YWwuYWRv
cHRCU1RSKHN0cmluZ1ZhbHVlRm9yS2V5KGtleSkpOwpAQCAtMzY1LDcgKzM3Nyw3IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnNldFN0cmluZ1ZhbHVlKENGU3RyaW5nUmVmIGtleSwgTFBDVFNUUiB2
YWx1ZSkKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uKCk7CiB9CiAKLXZv
aWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVnZXJWYWx1ZShDRlN0cmluZ1JlZiBrZXksIGludCB2
YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVnZXJWYWx1ZShjb25zdCBjaGFyKiBr
ZXksIGludCB2YWx1ZSkKIHsKICAgICBpZiAoaW50ZWdlclZhbHVlRm9yS2V5KGtleSkgPT0gdmFs
dWUpCiAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszODcsNyBAQCB2b2lkIFdlYlByZWZlcmVu
Y2VzOjpzZXRJbnRlZ2VyVmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBpbnQgdmFsdWUpCiAgICAgcG9z
dFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogfQogCi12b2lkIFdlYlByZWZlcmVu
Y2VzOjpzZXRGbG9hdFZhbHVlKENGU3RyaW5nUmVmIGtleSwgZmxvYXQgdmFsdWUpCit2b2lkIFdl
YlByZWZlcmVuY2VzOjpzZXRGbG9hdFZhbHVlKGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgdmFsdWUp
CiB7CiAgICAgaWYgKGZsb2F0VmFsdWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzg1LDcgKzM5Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEZsb2F0VmFs
dWUoQ0ZTdHJpbmdSZWYga2V5LCBmbG9hdCB2YWx1ZSkKICAgICBwb3N0UHJlZmVyZW5jZXNDaGFu
Z2VzTm90aWZpY2F0aW9uKCk7CiB9CiAKLXZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEJvb2xWYWx1
ZShDRlN0cmluZ1JlZiBrZXksIEJPT0wgdmFsdWUpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRC
b29sVmFsdWUoY29uc3QgY2hhcioga2V5LCBCT09MIHZhbHVlKQogewogICAgIGlmIChib29sVmFs
dWVGb3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk1LDcgKzQwNyw3
IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEJvb2xWYWx1ZShDRlN0cmluZ1JlZiBrZXksIEJP
T0wgdmFsdWUpCiAgICAgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogfQog
Ci12b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRMb25nTG9uZ1ZhbHVlKENGU3RyaW5nUmVmIGtleSwg
TE9OR0xPTkcgdmFsdWUpCit2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRMb25nTG9uZ1ZhbHVlKGNv
bnN0IGNoYXIqIGtleSwgTE9OR0xPTkcgdmFsdWUpCiB7CiAgICAgaWYgKGxvbmdsb25nVmFsdWVG
b3JLZXkoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMzLDEyICs0NDUsMTEg
QEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6bG9hZCgpCiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6Om1p
Z3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiB7Ci0gICAgQ0ZTdHJpbmdS
ZWYgZGlkTWlncmF0ZUtleSA9IENGU1RSKFdlYktpdERpZE1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNl
c1RvQ0ZQcmVmZXJlbmNlc1ByZWZlcmVuY2VLZXkpOwotICAgIGlmIChib29sVmFsdWVGb3JLZXko
ZGlkTWlncmF0ZUtleSkpCisgICAgaWYgKGJvb2xWYWx1ZUZvcktleShXZWJLaXREaWRNaWdyYXRl
V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXNQcmVmZXJlbmNlS2V5KSkKICAgICAgICAg
cmV0dXJuOwogICAgIGJvb2wgb2xkVmFsdWUgPSBtX2F1dG9TYXZlczsKICAgICBtX2F1dG9TYXZl
cyA9IHRydWU7Ci0gICAgc2V0Qm9vbFZhbHVlKGRpZE1pZ3JhdGVLZXksIFRSVUUpOworICAgIHNl
dEJvb2xWYWx1ZShXZWJLaXREaWRNaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5j
ZXNQcmVmZXJlbmNlS2V5LCBUUlVFKTsKICAgICBtX2F1dG9TYXZlcyA9IG9sZFZhbHVlOwogCiAg
ICAgV1RGOjpDU3RyaW5nIHBhdGggPSBvbGRQcmVmZXJlbmNlc1BhdGgoKS51dGY4KCk7CkBAIC01
NzksNDA2ICs1OTAsNDA2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5j
ZXM6OmlkZW50aWZpZXIoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzdGFuZGFyZEZvbnRGYW1pbHkoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogZmFt
aWx5KQogewotICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNUUihXZWJLaXRTdGFu
ZGFyZEZvbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVlRm9yS2V5
KFdlYktpdFN0YW5kYXJkRm9udFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiAoKmZhbWlseSkg
PyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1p
bHkpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0U3RhbmRhcmRGb250UHJlZmVy
ZW5jZUtleSksIGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0U3RhbmRhcmRGb250
UHJlZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Zml4ZWRGb250RmFtaWx5KCAKICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkKIHsKLSAgICAqZmFtaWx5ID0gc3RyaW5n
VmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0Rml4ZWRGb250UHJlZmVyZW5jZUtleSkpOworICAgICpm
YW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRGaXhlZEZvbnRQcmVmZXJlbmNlS2V5KTsK
ICAgICByZXR1cm4gKCpmYW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Rml4ZWRGb250RmFtaWx5KCAKICAgICAv
KiBbaW5dICovIEJTVFIgZmFtaWx5KQogewotICAgIHNldFN0cmluZ1ZhbHVlKENGU1RSKFdlYktp
dEZpeGVkRm9udFByZWZlcmVuY2VLZXkpLCBmYW1pbHkpOworICAgIHNldFN0cmluZ1ZhbHVlKFdl
YktpdEZpeGVkRm9udFByZWZlcmVuY2VLZXksIGZhbWlseSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNlcmlmRm9udEZh
bWlseSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBmb250RmFtaWx5KQogewotICAg
ICpmb250RmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0U2VyaWZGb250UHJl
ZmVyZW5jZUtleSkpOworICAgICpmb250RmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0
U2VyaWZGb250UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgqZm9udEZhbWlseSkgPyBTX09L
IDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRTZXJpZkZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpCiB7Ci0g
ICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0U2VyaWZGb250UHJlZmVyZW5jZUtleSksIGZh
bWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0U2VyaWZGb250UHJlZmVyZW5jZUtleSwg
ZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJQcmVmZXJlbmNlczo6c2Fuc1NlcmlmRm9udEZhbWlseSggCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiBmYW1pbHkpCiB7Ci0gICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZhbWlseSA9
IHN0cmluZ1ZhbHVlRm9yS2V5KFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5KTsKICAg
ICByZXR1cm4gKCpmYW1pbHkpID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseSggCiAgICAg
LyogW2luXSAqLyBCU1RSIGZhbWlseSkKIHsKLSAgICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJL
aXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFs
dWUoV2ViS2l0U2Fuc1NlcmlmRm9udFByZWZlcmVuY2VLZXksIGZhbWlseSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmN1
cnNpdmVGb250RmFtaWx5KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkK
IHsKLSAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0Q3Vyc2l2ZUZv
bnRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVlRm9yS2V5KFdlYktp
dEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuICgqZmFtaWx5KSA/IFNfT0sg
OiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OnNldEN1cnNpdmVGb250RmFtaWx5KCAKICAgICAvKiBbaW5dICovIEJTVFIgZmFtaWx5KQogewot
ICAgIHNldFN0cmluZ1ZhbHVlKENGU1RSKFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSks
IGZhbWlseSk7CisgICAgc2V0U3RyaW5nVmFsdWUoV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNl
S2V5LCBmYW1pbHkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpmYW50YXN5Rm9udEZhbWlseSggCiAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSKiBmYW1pbHkpCiB7Ci0gICAgKmZhbWlseSA9IHN0cmluZ1ZhbHVlRm9y
S2V5KENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSkpOworICAgICpmYW1pbHkg
PSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkpOwogICAg
IHJldHVybiAoKmZhbWlseSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRGYW50YXN5Rm9udEZhbWlseSggCiAgICAgLyog
W2luXSAqLyBCU1RSIGZhbWlseSkKIHsKLSAgICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJLaXRG
YW50YXN5Rm9udFByZWZlcmVuY2VLZXkpLCBmYW1pbHkpOworICAgIHNldFN0cmluZ1ZhbHVlKFdl
YktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSwgZmFtaWx5KTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6cGljdG9ncmFw
aEZvbnRGYW1pbHkoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogZmFtaWx5KQogewot
ICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNUUihXZWJLaXRQaWN0b2dyYXBoRm9u
dFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0
UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpmYW1pbHkpID8gU19P
SyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIAogICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkp
CiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJl
bmNlS2V5KSwgZmFtaWx5KTsKKyAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXRQaWN0b2dyYXBoRm9u
dFByZWZlcmVuY2VLZXksIGZhbWlseSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmRlZmF1bHRGb250U2l6ZSggCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIGZvbnRTaXplKQogewotICAgICpmb250U2l6ZSA9IGlu
dGVnZXJWYWx1ZUZvcktleShDRlNUUihXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5
KSk7CisgICAgKmZvbnRTaXplID0gaW50ZWdlclZhbHVlRm9yS2V5KFdlYktpdERlZmF1bHRGb250
U2l6ZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0Rm9udFNpemUoIAogICAgIC8q
IFtpbl0gKi8gaW50IGZvbnRTaXplKQogewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJL
aXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5KSwgZm9udFNpemUpOworICAgIHNldEludGVn
ZXJWYWx1ZShXZWJLaXREZWZhdWx0Rm9udFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OmRlZmF1bHRGaXhlZEZvbnRTaXplKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGlu
dCogZm9udFNpemUpCiB7Ci0gICAgKmZvbnRTaXplID0gaW50ZWdlclZhbHVlRm9yS2V5KENGU1RS
KFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSkpOworICAgICpmb250U2l6
ZSA9IGludGVnZXJWYWx1ZUZvcktleShXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSggCiAgICAgLyogW2luXSAq
LyBpbnQgZm9udFNpemUpCiB7Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdERlZmF1
bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIGZvbnRTaXplKTsKKyAgICBzZXRJbnRlZ2Vy
VmFsdWUoV2ViS2l0RGVmYXVsdEZpeGVkRm9udFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6Om1pbmltdW1Gb250U2l6ZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQq
IGZvbnRTaXplKQogewotICAgICpmb250U2l6ZSA9IGludGVnZXJWYWx1ZUZvcktleShDRlNUUihX
ZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5KSk7CisgICAgKmZvbnRTaXplID0gaW50
ZWdlclZhbHVlRm9yS2V5KFdlYktpdE1pbmltdW1Gb250U2l6ZVByZWZlcmVuY2VLZXkpOwogICAg
IHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjpzZXRNaW5pbXVtRm9udFNpemUoIAogICAgIC8qIFtpbl0gKi8gaW50IGZvbnRTaXplKQog
ewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJl
bmNlS2V5KSwgZm9udFNpemUpOworICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXRNaW5pbXVtRm9u
dFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6Om1pbmltdW1Mb2dpY2FsRm9u
dFNpemUoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiBmb250U2l6ZSkKIHsKLSAgICAq
Zm9udFNpemUgPSBpbnRlZ2VyVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0TWluaW11bUxvZ2ljYWxG
b250U2l6ZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqZm9udFNpemUgPSBpbnRlZ2VyVmFsdWVGb3JL
ZXkoV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpz
ZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKCAKICAgICAvKiBbaW5dICovIGludCBmb250U2l6ZSkK
IHsKLSAgICBzZXRJbnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6
ZVByZWZlcmVuY2VLZXkpLCBmb250U2l6ZSk7CisgICAgc2V0SW50ZWdlclZhbHVlKFdlYktpdE1p
bmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5LCBmb250U2l6ZSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmRl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIG5h
bWUpCiB7Ci0gICAgKm5hbWUgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNUUihXZWJLaXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqbmFtZSA9IHN0cmluZ1ZhbHVl
Rm9yS2V5KFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSk7CiAgICAg
cmV0dXJuICgqbmFtZSkgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSggCiAgICAg
LyogW2luXSAqLyBCU1RSIG5hbWUpCiB7Ci0gICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0
RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgbmFtZSk7CisgICAgc2V0U3Ry
aW5nVmFsdWUoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5LCBuYW1l
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6dXNlclN0eWxlU2hlZXRFbmFibGVkKCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZT
VFIoV2ViS2l0VXNlclN0eWxlU2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoIAogICAgIC8qIFtpbl0g
Ki8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRVc2VyU3R5
bGVTaGVldEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVl
KFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAg
IHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIGxvY2F0aW9uKQogewotICAgICpsb2NhdGlvbiA9IHN0cmluZ1ZhbHVlRm9yS2V5KENGU1RS
KFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRpb25QcmVmZXJlbmNlS2V5KSk7CisgICAgKmxvY2F0
aW9uID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0VXNlclN0eWxlU2hlZXRMb2NhdGlvblByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiAoKmxvY2F0aW9uKSA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oIAogICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhdGlvbikKIHsKLSAgICBzZXRT
dHJpbmdWYWx1ZShDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtl
eSksIGxvY2F0aW9uKTsKKyAgICBzZXRTdHJpbmdWYWx1ZShXZWJLaXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uUHJlZmVyZW5jZUtleSwgbG9jYXRpb24pOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjppc0phdmFFbmFibGVkKCAK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQg
PSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJlbmNlS2V5KSk7
CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SmF2YUVuYWJsZWRQcmVmZXJl
bmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJQcmVmZXJlbmNlczo6c2V0SmF2YUVuYWJsZWQoIAogICAgIC8qIFtpbl0gKi8gQk9PTCBl
bmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRKYXZhRW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0SmF2YUVuYWJsZWRQ
cmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aXNKYXZhU2NyaXB0RW5hYmxlZCggCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0g
Ym9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtl
eSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEphdmFTY3JpcHRFbmFi
bGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEphdmFTY3JpcHRFbmFibGVkKCAKICAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0
SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZh
bHVlKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5j
ZXM6OmlzV2ViU2VjdXJpdHlFbmFibGVkKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0
V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZh
bHVlRm9yS2V5KFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRXZWJTZWN1cml0eUVuYWJsZWQoIAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQog
ewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFdlYlNlY3VyaXR5RW5h
YmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcygKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNz
KQogewotICAgICphbGxvd0FjY2VzcyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqYWxsb3dB
Y2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKQogewotICAgIHNldEJv
b2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZl
cmVuY2VLZXkpLCBhbGxvd0FjY2Vzcyk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAg
IHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjphbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MKiBhbGxvd0FjY2VzcykKIHsKLSAgICAqYWxsb3dBY2Nlc3MgPSBib29sVmFsdWVGb3JL
ZXkoQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSkp
OworICAgICphbGxvd0FjY2VzcyA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKAogICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2VzcykKIHsKLSAgICBz
ZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVy
ZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpq
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJL
aXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQ
cmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgK
ICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIo
V2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkpLCBlbmFibGVk
KTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFBy
ZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjppc1hTU0F1ZGl0b3JFbmFibGVkKAogICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJv
b2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkp
KTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRYU1NBdWRpdG9yRW5hYmxl
ZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCgKICAgICAvKiBb
aW5dICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0WFNT
QXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVl
KFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OmlzRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJv
b2xWYWx1ZUZvcktleShXZWJLaXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoCiAgICAgLyogW2luXSAqLyBCT09M
IGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEZyYW1lRmxhdHRlbmlu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6
amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSggCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJl
bmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SmF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRK
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KCAKICAgICAvKiBbaW5dICovIEJP
T0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBz
ZXRCb29sVmFsdWUoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVBy
ZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphcmVQbHVnSW5zRW5hYmxlZCggCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9v
bFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFBsdWdpbnNFbmFibGVkUHJlZmVy
ZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViUHJlZmVyZW5jZXM6OnNldFBsdWdJbnNFbmFibGVkKCAKICAgICAvKiBbaW5dICovIEJP
T0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJs
ZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFBsdWdp
bnNFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmlzQ1NTUmVnaW9uc0Vu
YWJsZWQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICpl
bmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdENTU1JlZ2lvbnNFbmFibGVkUHJl
ZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdENTU1Jl
Z2lvbnNFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldENTU1JlZ2lvbnNFbmFibGVk
KAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNU
UihXZWJLaXRDU1NSZWdpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAgICBz
ZXRCb29sVmFsdWUoV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6YWxsb3dzQW5pbWF0ZWRJbWFnZXMoIAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVk
ID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoIAogICAgIC8qIFtpbl0gKi8gQk9P
TCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd0FuaW1hdGVk
SW1hZ2VzUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRB
bGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93
QW5pbWF0ZWRJbWFnZUxvb3BpbmcoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5h
YmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBbGxv
d0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9v
bFZhbHVlRm9yS2V5KFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6c2V0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZyggCiAgICAgLyogW2luXSAq
LyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEFsbG93QW5p
bWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZh
bHVlKFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5LCBlbmFibGVk
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCAKICAgICAvKiBbaW5dICov
IEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0RGlzcGxheUlt
YWdlc0tleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCAKICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RGlzcGxheUltYWdlc0tleSkpOworICAgICplbmFibGVk
ID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdERpc3BsYXlJbWFnZXNLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRM
b2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZSgKICAgICAvKiBbaW5d
ICovIEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0TG9hZFNp
dGVJY29uc0tleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRMb2FkU2l0ZUlj
b25zS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1ByZWZlcmVuY2UoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQog
ewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdExvYWRTaXRlSWNv
bnNLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRMb2FkU2l0ZUlj
b25zS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTk4LDI4ICsxMDA5LDI4IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmhpeGllNzZXZWJTb2NrZXRQ
cm90b2NvbEVuYWJsZWQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgKICAgICAvKiBbaW5dICovIEJP
T0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0TWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmVQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9v
bFZhbHVlKFdlYktpdE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlUHJlZmVyZW5jZUtl
eSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6Om1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKAog
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9
IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2Vz
dHVyZVByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJL
aXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZVByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
OjpzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFi
bGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRNZWRpYVBsYXliYWNrQWxsb3dz
SW5saW5lUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRN
ZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
Om1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktp
dE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmVQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQg
PSBib29sVmFsdWVGb3JLZXkoV2ViS2l0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZVByZWZlcmVu
Y2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMDQwLDk0ICsxMDUxLDk0IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmF1dG9zYXZlcygKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZFByaW50QmFja2dy
b3VuZHMoIAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1
ZShDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5jZUtleSksIGVuYWJs
ZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVy
ZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNob3VsZFByaW50QmFja2dyb3VuZHMoIAogICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJv
b2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG91bGRQcmludEJhY2tncm91bmRzUHJlZmVyZW5j
ZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3VsZFByaW50
QmFja2dyb3VuZHNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCggCiAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVl
KENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxl
ZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJl
bmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCggCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gYm9v
bFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRUYWJzVG9MaW5rcyggCiAgICAg
LyogW2luXSAqLyBCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktp
dFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6dGFic1RvTGlu
a3MoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5h
YmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtl
eSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFRhYlRvTGlua3NQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0VXNlc1BhZ2VDYWNoZSggCiAgICAgICAgIC8qIFtpbl0g
Ki8gQk9PTCB1c2VzUGFnZUNhY2hlKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRV
c2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSksIHVzZXNQYWdlQ2FjaGUpOworICAgIHNldEJvb2xW
YWx1ZShXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSwgdXNlc1BhZ2VDYWNoZSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OnVzZXNQYWdlQ2FjaGUoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogdXNl
c1BhZ2VDYWNoZSkKIHsKLSAgICAqdXNlc1BhZ2VDYWNoZSA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSkpOworICAgICp1c2VzUGFnZUNhY2hl
ID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5KTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJl
bmNlczo6dGV4dEFyZWFzQXJlUmVzaXphYmxlKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2Vi
S2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0g
Ym9vbFZhbHVlRm9yS2V5KFdlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXkp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpzZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoIAogICAgIC8qIFtpbl0gKi8gQk9P
TCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRUZXh0QXJlYXNBcmVS
ZXNpemFibGVQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dFRleHRBcmVhc0FyZVJlc2l6YWJsZVByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpoaXN0b3J5SXRlbUxpbWl0KGlu
dCogbGltaXQpCiB7Ci0gICAgKmxpbWl0ID0gaW50ZWdlclZhbHVlRm9yS2V5KENGU1RSKFdlYktp
dEhpc3RvcnlJdGVtTGltaXRLZXkpKTsKKyAgICAqbGltaXQgPSBpbnRlZ2VyVmFsdWVGb3JLZXko
V2ViS2l0SGlzdG9yeUl0ZW1MaW1pdEtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNV
TFQgV2ViUHJlZmVyZW5jZXM6OnNldEhpc3RvcnlJdGVtTGltaXQoaW50IGxpbWl0KQogewotICAg
IHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5KSwgbGltaXQp
OworICAgIHNldEludGVnZXJWYWx1ZShXZWJLaXRIaXN0b3J5SXRlbUxpbWl0S2V5LCBsaW1pdCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Omhpc3RvcnlB
Z2VJbkRheXNMaW1pdChpbnQqIGxpbWl0KQogewotICAgICpsaW1pdCA9IGludGVnZXJWYWx1ZUZv
cktleShDRlNUUihXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXkpKTsKKyAgICAqbGltaXQg
PSBpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0SGlzdG9yeUFn
ZUluRGF5c0xpbWl0KGludCBsaW1pdCkKIHsKLSAgICBzZXRJbnRlZ2VyVmFsdWUoQ0ZTVFIoV2Vi
S2l0SGlzdG9yeUFnZUluRGF5c0xpbWl0S2V5KSwgbGltaXQpOworICAgIHNldEludGVnZXJWYWx1
ZShXZWJLaXRIaXN0b3J5QWdlSW5EYXlzTGltaXRLZXksIGxpbWl0KTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtMTE0Niw0MCArMTE1Nyw0MCBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjp1
bnVzZWQyKCkKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Omljb25EYXRhYmFzZUxvY2F0aW9uKAog
ICAgIC8qIFtvdXRdICovIEJTVFIqIGxvY2F0aW9uKQogewotICAgICpsb2NhdGlvbiA9IHN0cmlu
Z1ZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEljb25EYXRhYmFzZUxvY2F0aW9uS2V5KSk7CisgICAg
KmxvY2F0aW9uID0gc3RyaW5nVmFsdWVGb3JLZXkoV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25L
ZXkpOwogICAgIHJldHVybiAoKmxvY2F0aW9uKSA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNV
TFQgV2ViUHJlZmVyZW5jZXM6OnNldEljb25EYXRhYmFzZUxvY2F0aW9uKAogICAgIC8qIFtpbl0g
Ki8gQlNUUiBsb2NhdGlvbikKIHsKLSAgICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJLaXRJY29u
RGF0YWJhc2VMb2NhdGlvbktleSksIGxvY2F0aW9uKTsKKyAgICBzZXRTdHJpbmdWYWx1ZShXZWJL
aXRJY29uRGF0YWJhc2VMb2NhdGlvbktleSwgbG9jYXRpb24pOwogICAgIHJldHVybiBTX09LOwog
fQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjppY29uRGF0YWJhc2VFbmFibGVkKEJPT0wqIGVu
YWJsZWQpLy9sb2NhdGlvbikKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVk
ID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNlS2V5
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0SWNv
bkRhdGFiYXNlRW5hYmxlZChCT09MIGVuYWJsZWQgKS8vbG9jYXRpb24pCiB7Ci0gICAgc2V0Qm9v
bFZhbHVlKENGU1RSKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5h
YmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEljb25EYXRhYmFzZUVuYWJsZWRQcmVmZXJl
bmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Zm9udFNtb290aGluZyggCiAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBGb250U21vb3RoaW5nVHlwZSogc21vb3RoaW5nVHlwZSkKIHsKLSAgICAqc21v
b3RoaW5nVHlwZSA9IChGb250U21vb3RoaW5nVHlwZSkgaW50ZWdlclZhbHVlRm9yS2V5KENGU1RS
KFdlYktpdEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSkpOworICAgICpzbW9vdGhpbmdU
eXBlID0gc3RhdGljX2Nhc3Q8Rm9udFNtb290aGluZ1R5cGU+KGludGVnZXJWYWx1ZUZvcktleShX
ZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Rm9udFNt
b290aGluZyggCiAgICAgLyogW2luXSAqLyBGb250U21vb3RoaW5nVHlwZSBzbW9vdGhpbmdUeXBl
KQogewotICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVBy
ZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdUeXBlKTsKKyAgICBzZXRJbnRlZ2VyVmFsdWUoV2ViS2l0
Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5LCBzbW9vdGhpbmdUeXBlKTsKICAgICBpZiAo
c21vb3RoaW5nVHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3MpCiAgICAgICAgIHNtb290
aGluZ1R5cGUgPSBGb250U21vb3RoaW5nVHlwZU1lZGl1bTsKICNpZiBVU0UoQ0cpCkBAIC0xMTkx
LDE0ICsxMjAyLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6
OnNldEZvbnRTbW9vdGhpbmcoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjpmb250U21vb3RoaW5nQ29udHJhc3QoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZmxv
YXQqIGNvbnRyYXN0KQogewotICAgICpjb250cmFzdCA9IGZsb2F0VmFsdWVGb3JLZXkoQ0ZTVFIo
V2ViS2l0Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5jZUtleSkpOworICAgICpjb250cmFz
dCA9IGZsb2F0VmFsdWVGb3JLZXkoV2ViS2l0Rm9udFNtb290aGluZ0NvbnRyYXN0UHJlZmVyZW5j
ZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OnNldEZvbnRTbW9vdGhpbmdDb250cmFzdCggCiAgICAgLyogW2luXSAq
LyBmbG9hdCBjb250cmFzdCkKIHsKLSAgICBzZXRGbG9hdFZhbHVlKENGU1RSKFdlYktpdEZvbnRT
bW9vdGhpbmdDb250cmFzdFByZWZlcmVuY2VLZXkpLCBjb250cmFzdCk7CisgICAgc2V0RmxvYXRW
YWx1ZShXZWJLaXRGb250U21vb3RoaW5nQ29udHJhc3RQcmVmZXJlbmNlS2V5LCBjb250cmFzdCk7
CiAjaWYgVVNFKENHKQogICAgIHdrU2V0Rm9udFNtb290aGluZ0NvbnRyYXN0KGNvbnRyYXN0KTsK
ICNlbmRpZgpAQCAtMTIwOCw3ICsxMjE5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6c2V0Rm9udFNtb290aGluZ0NvbnRyYXN0KAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZWRpdGFibGVMaW5rQmVoYXZpb3IoCiAgICAgLyog
W291dCwgcmV0dmFsXSAqLyBXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvciogZWRpdGFibGVMaW5r
QmVoYXZpb3IpCiB7Ci0gICAgV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3IgdmFsdWUgPSAoV2Vi
S2l0RWRpdGFibGVMaW5rQmVoYXZpb3IpIGludGVnZXJWYWx1ZUZvcktleShDRlNUUihXZWJLaXRF
ZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXkpKTsKKyAgICBXZWJLaXRFZGl0YWJsZUxp
bmtCZWhhdmlvciB2YWx1ZSA9IHN0YXRpY19jYXN0PFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9y
PihpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3JQcmVmZXJlbmNl
S2V5KSk7CiAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgICAgICBjYXNlIFdlYktpdEVkaXRhYmxl
TGlua0RlZmF1bHRCZWhhdmlvcjoKICAgICAgICAgY2FzZSBXZWJLaXRFZGl0YWJsZUxpbmtBbHdh
eXNMaXZlOgpAQCAtMTIyNyw3ICsxMjM4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlczo6ZWRpdGFibGVMaW5rQmVoYXZpb3IoCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcigKICAgICAvKiBb
aW5dICovIFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9yIGJlaGF2aW9yKQogewotICAgIHNldElu
dGVnZXJWYWx1ZShDRlNUUihXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvclByZWZlcmVuY2VLZXkp
LCBiZWhhdmlvcik7CisgICAgc2V0SW50ZWdlclZhbHVlKFdlYktpdEVkaXRhYmxlTGlua0JlaGF2
aW9yUHJlZmVyZW5jZUtleSwgYmVoYXZpb3IpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0x
MjQ2LDE0ICsxMjU3LDE0IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVudXNlZDYoKQogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKAogICAgIC8qIFtpbl0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9
IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0SHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgZW5hYmxlZCkKIHsK
LSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRIeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtMTI2Myw3NSArMTI3NCw3NSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpjb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KAogICAgIGlmICghYWNjZXB0
UG9saWN5KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmFjY2VwdFBvbGljeSA9
IChXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KWludGVnZXJWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5UHJlZmVyZW5jZUtleSkpOworICAgICph
Y2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
PihpbnRlZ2VyVmFsdWVGb3JLZXkoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZl
cmVuY2VLZXkpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSggCiAgICAg
ICAgIC8qIFtpbl0gKi8gV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBhY2NlcHRQb2xp
Y3kpCiB7Ci0gICAgc2V0SW50ZWdlclZhbHVlKENGU1RSKFdlYktpdENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3lQcmVmZXJlbmNlS2V5KSwgYWNjZXB0UG9saWN5KTsKKyAgICBzZXRJbnRlZ2VyVmFs
dWUoV2ViS2l0Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeVByZWZlcmVuY2VLZXksIGFjY2VwdFBv
bGljeSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6
Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdl
YkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRDb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihX
ZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7
CisgICAgc2V0Qm9vbFZhbHVlKFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFByZWZl
cmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlBy
ZWZlcmVuY2VzOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAg
KmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViR3JhbW1hckNoZWNraW5nRW5hYmxl
ZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoQk9PTCBl
bmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFsbG93Q29udGludW91c1NwZWxsQ2hlY2tp
bmcoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihBbGxvd0NvbnRpbnVvdXNTcGVsbENoZWNraW5nUHJlZmVyZW5jZUtleSkpOworICAgICplbmFi
bGVkID0gYm9vbFZhbHVlRm9yS2V5KEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmdQcmVmZXJl
bmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6
c2V0QWxsb3dDb250aW51b3VzU3BlbGxDaGVja2luZyhCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0
Qm9vbFZhbHVlKENGU1RSKEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tpbmdQcmVmZXJlbmNlS2V5
KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKEFsbG93Q29udGludW91c1NwZWxsQ2hlY2tp
bmdQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBXZWJQcmVmZXJlbmNlczo6YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZChCT09MKiBlbmFibGVk
KQogewotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFNlYW1sZXNzSUZyYW1l
c1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShTZWFtbGVz
c0lGcmFtZXNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBX
ZWJQcmVmZXJlbmNlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7
Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFNlYW1sZXNzSUZyYW1lc1ByZWZlcmVuY2VLZXkpLCBl
bmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoU2VhbWxlc3NJRnJhbWVzUHJlZmVyZW5jZUtleSwg
ZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OmlzRE9NUGFzdGVBbGxvd2VkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdERPTVBhc3RlQWxsb3dlZFByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c2V0RE9NUGFzdGVBbGxvd2VkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFs
dWUoQ0ZTVFIoV2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOwor
ICAgIHNldEJvb2xWYWx1ZShXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5LCBlbmFi
bGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTM0MCwxMyArMTM1MSwxMyBAQCBIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpjYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwqIGNhY2hlTW9kZWwp
CiAgICAgaWYgKCFjYWNoZU1vZGVsKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAg
KmNhY2hlTW9kZWwgPSAoV2ViQ2FjaGVNb2RlbClpbnRlZ2VyVmFsdWVGb3JLZXkoQ0ZTVFIoV2Vi
S2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpKTsKKyAgICAqY2FjaGVNb2RlbCA9IHN0YXRpY19j
YXN0PFdlYkNhY2hlTW9kZWw+KGludGVnZXJWYWx1ZUZvcktleShXZWJLaXRDYWNoZU1vZGVsUHJl
ZmVyZW5jZUtleSkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKIHsKLSAgICBzZXRJ
bnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkpLCBjYWNoZU1v
ZGVsKTsKKyAgICBzZXRJbnRlZ2VyVmFsdWUoV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXks
IGNhY2hlTW9kZWwpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMzY0LDE5ICsxMzc1LDE5
IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnVudXNlZDQoKQogCiBIUkVTVUxUIFdlYlByZWZl
cmVuY2VzOjpzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKEJPT0wqIHNob3VsZFBhaW50KQogewot
ICAgICpzaG91bGRQYWludCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRQYWludE5hdGl2
ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSkpOworICAgICpzaG91bGRQYWludCA9IGJvb2xWYWx1ZUZv
cktleShXZWJLaXRQYWludE5hdGl2ZUNvbnRyb2xzUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMoQk9PTCBzaG91bGRQYWludCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0UGFpbnROYXRpdmVDb250cm9sc1ByZWZlcmVuY2VLZXkpLCBzaG91bGRQYWludCk7CisgICAg
c2V0Qm9vbFZhbHVlKFdlYktpdFBhaW50TmF0aXZlQ29udHJvbHNQcmVmZXJlbmNlS2V5LCBzaG91
bGRQYWludCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xW
YWx1ZShDRlNUUihXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVyZW5jZUtleSksIGVu
YWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEzODUsMTMg
KzEzOTYsMTMgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZChCT09MKiBlbmFibGVkKQogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdERldmVs
b3BlckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoV2ViS2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAg
IHJldHVybiBTX09LOwogfQogCiBib29sIFdlYlByZWZlcmVuY2VzOjpkZXZlbG9wZXJFeHRyYXNE
aXNhYmxlZEJ5T3ZlcnJpZGUoKQogewotICAgIHJldHVybiAhIWJvb2xWYWx1ZUZvcktleShDRlNU
UihEaXNhYmxlV2ViS2l0RGV2ZWxvcGVyRXh0cmFzUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVy
biAhIWJvb2xWYWx1ZUZvcktleShEaXNhYmxlV2ViS2l0RGV2ZWxvcGVyRXh0cmFzUHJlZmVyZW5j
ZUtleSk7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEF1dG9tYXRpY2FsbHlEZXRl
Y3RzQ2FjaGVNb2RlbChCT09MIGF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbCkKQEAgLTE0
MTEsNyArMTQyMiw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmF1dG9tYXRpY2FsbHlEZXRl
Y3RzQ2FjaGVNb2RlbChCT09MKiBhdXRvbWF0aWNhbGx5RGV0ZWN0CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
KEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0QXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZh
bHVlKFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxl
ZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE0MjAsMTAzICsxNDMxLDEwMyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZChCT09MKiBlbmFibAogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0g
Ym9vbFZhbHVlRm9yS2V5KFdlYktpdEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkUHJlZmVyZW5j
ZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Omlu
QXBwbGljYXRpb25DaHJvbWVNb2RlKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBi
b29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QXBwbGljYXRpb25DaHJvbWVNb2RlUHJlZmVyZW5j
ZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEFwcGxpY2F0aW9u
Q2hyb21lTW9kZVByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJF
U1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlKEJPT0wgZW5hYmxl
ZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0QXBwbGljYXRpb25DaHJvbWVNb2Rl
UHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRBcHBsaWNh
dGlvbkNocm9tZU1vZGVQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29s
VmFsdWUoQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6b2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVu
YWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZFByZWZlcmVuY2VLZXkp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpzZXREYXRhYmFzZXNFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRC
b29sVmFsdWUoQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFi
bGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VL
ZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpkYXRhYmFzZXNFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7
Ci0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RGF0YWJhc2VzRW5h
YmxlZFByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJL
aXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldExvY2FsU3RvcmFn
ZUVuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRM
b2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xW
YWx1ZShXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OmxvY2FsU3RvcmFnZUVuYWJsZWQoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxl
ZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VFbmFibGVkUHJlZmVy
ZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdExvY2FsU3Rv
cmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6bG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKEJTVFIqIGxvY2F0aW9uKQogewotICAgICpsb2NhdGlvbiA9IHN0cmluZ1ZhbHVlRm9yS2V5
KENGU1RSKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkpKTsKKyAg
ICAqbG9jYXRpb24gPSBzdHJpbmdWYWx1ZUZvcktleShXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGhQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gKCpsb2NhdGlvbikgPyBTX09LIDogRV9G
QUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRM
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoQlNUUiBsb2NhdGlvbikKIHsKLSAgICBzZXRTdHJpbmdW
YWx1ZShDRlNUUihXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5KSwg
bG9jYXRpb24pOworICAgIHNldFN0cmluZ1ZhbHVlKFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aFByZWZlcmVuY2VLZXksIGxvY2F0aW9uKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0RXhwZXJpbWVudGFsTm90
aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNU
UihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBl
bmFibGVkKTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9u
c0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6ZXhwZXJpbWVudGFsTm90
aWZpY2F0aW9uc0VuYWJsZWQoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShDRlNUUihXZWJLaXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFBy
ZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRFeHBl
cmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRab29tc1RleHRPbmx5KEJPT0wg
em9vbXNUZXh0T25seSkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2ViS2l0Wm9vbXNUZXh0
T25seVByZWZlcmVuY2VLZXkpLCB6b29tc1RleHRPbmx5KTsKKyAgICBzZXRCb29sVmFsdWUoV2Vi
S2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXksIHpvb21zVGV4dE9ubHkpOwogICAgIHJldHVy
biBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjp6b29tc1RleHRPbmx5KEJPT0wq
IHpvb21zVGV4dE9ubHkpCiB7Ci0gICAgKnpvb21zVGV4dE9ubHkgPSBib29sVmFsdWVGb3JLZXko
Q0ZTVFIoV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkpKTsKKyAgICAqem9vbXNUZXh0
T25seSA9IGJvb2xWYWx1ZUZvcktleShXZWJLaXRab29tc1RleHRPbmx5UHJlZmVyZW5jZUtleSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJl
ZmVyZW5jZXM6OnNldFNob3VsZFVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKEJPT0wgdXNlSGlnaFJl
c29sdXRpb25UaW1lcnMpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFVzZUhpZ2hS
ZXNvbHV0aW9uVGltZXJzUHJlZmVyZW5jZUtleSksIHVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKTsK
KyAgICBzZXRCb29sVmFsdWUoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVmZXJlbmNl
S2V5LCB1c2VIaWdoUmVzb2x1dGlvblRpbWVycyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNob3VsZFVzZUhpZ2hSZXNv
bHV0aW9uVGltZXJzKEJPT0wqIHVzZUhpZ2hSZXNvbHV0aW9uVGltZXJzKQogewotICAgICp1c2VI
aWdoUmVzb2x1dGlvblRpbWVycyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRVc2VIaWdo
UmVzb2x1dGlvblRpbWVyc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqdXNlSGlnaFJlc29sdXRpb25U
aW1lcnMgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0VXNlSGlnaFJlc29sdXRpb25UaW1lcnNQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTUzMyw3ICsxNTQ0LDcgQEAg
SFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0UHJlZmVyZW5jZUZvclRlc3QoQlNUUiBrZXksIEJT
VFIgdmFsdWUpCiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKEJPT0wgZW5hYmxlZCkKIHsKLSAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7
CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE1NDEsNyAr
MTU1Miw3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogI2lmIFVTRShDQSkKLSAgICAqZW5hYmxlZCA9IENBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVy
YXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkgJiYgYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgICplbmFi
bGVkID0gQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUo
KSAmJiBib29sVmFsdWVGb3JLZXkoV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5KTsKICNlbHNlCiAgICAgKmVuYWJsZWQgPSBUUlVFOwogI2VuZGlmCkBAIC0x
NTUzLDQ5ICsxNTY0LDQ5IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OnNob3dEZWJ1Z0JvcmRlcnMoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG93RGVidWdCb3JkZXJzUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVm
ZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNl
czo6c2V0U2hvd0RlYnVnQm9yZGVycyhCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVl
KENGU1RSKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7Cisg
ICAgc2V0Qm9vbFZhbHVlKFdlYktpdFNob3dEZWJ1Z0JvcmRlcnNQcmVmZXJlbmNlS2V5LCBlbmFi
bGVkKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hv
d1JlcGFpbnRDb3VudGVyKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoQ0ZTVFIoV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSkpOwor
ICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFNob3dSZXBhaW50Q291bnRlclBy
ZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRTaG93UmVwYWludENvdW50ZXIoQk9PTCBlbmFibGVkKQogewotICAgIHNldEJvb2xW
YWx1ZShDRlNUUihXZWJLaXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5KSwgZW5hYmxl
ZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFNob3dSZXBhaW50Q291bnRlclByZWZlcmVuY2VL
ZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlByZWZlcmVu
Y2VzOjpzZXRDdXN0b21EcmFnQ3Vyc29yc0VuYWJsZWQoQk9PTCBlbmFibGVkKQogewotICAgIHNl
dEJvb2xWYWx1ZShDRlNUUihXZWJLaXRDdXN0b21EcmFnQ3Vyc29yc0VuYWJsZWRQcmVmZXJlbmNl
S2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdEN1c3RvbURyYWdDdXJzb3Jz
RW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFdlYlByZWZlcmVuY2VzOjpjdXN0b21EcmFnQ3Vyc29yc0VuYWJsZWQoQk9PTCogZW5h
YmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRDdXN0
b21EcmFnQ3Vyc29yc0VuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoV2ViS2l0Q3VzdG9tRHJhZ0N1cnNvcnNFbmFibGVkUHJlZmVyZW5jZUtleSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEROU1By
ZWZldGNoaW5nRW5hYmxlZChCT09MIGVuYWJsZWQpCiB7Ci0gICAgc2V0Qm9vbFZhbHVlKENGU1RS
KFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsKKyAg
ICBzZXRCb29sVmFsdWUoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwg
ZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6
OmlzRE5TUHJlZmV0Y2hpbmdFbmFibGVkKEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQg
PSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdEROU1ByZWZl
dGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0x
NjA1LDcgKzE2MTYsNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjppc0Z1bGxTY3JlZW5FbmFi
bGVkKEJPT0wqIGVuYWJsZWQpCiAgICAgaWYgKCFlbmFibGVkKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCi0gICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0RnVs
bFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVG
b3JLZXkoV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4g
U19PSzsKICNlbHNlCiAgICAgcmV0dXJuIEVfTk9USU1QTDsKQEAgLTE2MTUsNyArMTYyNiw3IEBA
IEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OmlzRnVsbFNjcmVlbkVuYWJsZWQoQk9PTCogZW5hYmxl
ZCkKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEZ1bGxTY3JlZW5FbmFibGVkKEJPT0wgZW5h
YmxlZCkKIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgc2V0Qm9vbFZhbHVlKENG
U1RSKFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAg
IHNldEJvb2xWYWx1ZShXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJs
ZWQpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBMOwpAQCAt
MTYyOCw3ICsxNjM5LDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YXZGb3VuZGF0aW9uRW5h
YmxlZChCT09MKiBlbmFibGVkKQogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFW
Rm91bmRhdGlvbkVuYWJsZWRQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoV2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpOwogICAgIHJl
dHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBMOwpAQCAtMTYzOCw3ICsxNjQ5
LDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6YXZGb3VuZGF0aW9uRW5hYmxlZChCT09MKiBl
bmFibGVkKQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QVZGb3VuZGF0aW9uRW5hYmxlZChC
T09MIGVuYWJsZWQpCiB7CiAjaWYgVVNFKEFWRk9VTkRBVElPTikKLSAgICBzZXRCb29sVmFsdWUo
Q0ZTVFIoV2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBlbmFibGVkKTsK
KyAgICBzZXRCb29sVmFsdWUoV2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZFByZWZlcmVuY2VLZXks
IGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBM
OwpAQCAtMTY1MCwxMyArMTY2MSwxMyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzaG93c1Rv
b2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChCT09MKiBzaG93c1Rvb2xUaXApCiAgICAgaWYgKCFzaG93
c1Rvb2xUaXApCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqc2hvd3NUb29sVGlw
ID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRU
ZXh0UHJlZmVyZW5jZUtleSkpOworICAgICpzaG93c1Rvb2xUaXAgPSBib29sVmFsdWVGb3JLZXko
V2ViS2l0U2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRQcmVmZXJlbmNlS2V5KTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvd3NUb29sVGlw
T3ZlclRydW5jYXRlZFRleHQoQk9PTCBzaG93c1Rvb2xUaXApCiB7Ci0gICAgc2V0Qm9vbFZhbHVl
KENGU1RSKFdlYktpdFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSks
IHNob3dzVG9vbFRpcCk7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktpdFNob3dzVG9vbFRpcE92ZXJU
cnVuY2F0ZWRUZXh0UHJlZmVyZW5jZUtleSwgc2hvd3NUb29sVGlwKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtMTY2NSwxMyArMTY3NiwxMyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpz
aG91bGRJbnZlcnRDb2xvcnMoQk9PTCogc2hvdWxkSW52ZXJ0Q29sb3JzKQogICAgIGlmICghc2hv
dWxkSW52ZXJ0Q29sb3JzKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnNob3Vs
ZEludmVydENvbG9ycyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG91bGRJbnZlcnRD
b2xvcnNQcmVmZXJlbmNlS2V5KSk7CisgICAgKnNob3VsZEludmVydENvbG9ycyA9IGJvb2xWYWx1
ZUZvcktleShXZWJLaXRTaG91bGRJbnZlcnRDb2xvcnNQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1
cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkSW52ZXJ0Q29s
b3JzKEJPT0wgc2hvdWxkSW52ZXJ0Q29sb3JzKQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihX
ZWJLaXRTaG91bGRJbnZlcnRDb2xvcnNQcmVmZXJlbmNlS2V5KSwgc2hvdWxkSW52ZXJ0Q29sb3Jz
KTsKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0U2hvdWxkSW52ZXJ0Q29sb3JzUHJlZmVyZW5jZUtl
eSwgc2hvdWxkSW52ZXJ0Q29sb3JzKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTY5NSw3
ICsxNzA2LDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkRGlzcGxheVN1YnRpdGxl
cyhCT09MKiBlbmFibGVkKQogICAgIGlmICghZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKIAotICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdFNob3Vs
ZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFs
dWVGb3JLZXkoV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkpOwogICAg
IHJldHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBMOwpAQCAtMTcwNSw3ICsx
NzE2LDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkRGlzcGxheVN1YnRpdGxlcyhC
T09MKiBlbmFibGVkKQogSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0U2hvdWxkRGlzcGxheVN1
YnRpdGxlcyhCT09MIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHNl
dEJvb2xWYWx1ZShDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtl
eSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0
bGVzUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQogICAg
IHJldHVybiBFX05PVElNUEw7CkBAIC0xNzE4LDcgKzE3MjksNyBAQCBIUkVTVUxUIFdlYlByZWZl
cmVuY2VzOjpzaG91bGREaXNwbGF5Q2FwdGlvbnMoQk9PTCogZW5hYmxlZCkKICAgICBpZiAoIWVu
YWJsZWQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5
KSk7CisgICAgKmVuYWJsZWQgPSBib29sVmFsdWVGb3JLZXkoV2ViS2l0U2hvdWxkRGlzcGxheUNh
cHRpb25zUHJlZmVyZW5jZUtleSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxzZQogICAgIHJldHVy
biBFX05PVElNUEw7CkBAIC0xNzI4LDcgKzE3MzksNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2Vz
OjpzaG91bGREaXNwbGF5Q2FwdGlvbnMoQk9PTCogZW5hYmxlZCkKIEhSRVNVTFQgV2ViUHJlZmVy
ZW5jZXM6OnNldFNob3VsZERpc3BsYXlDYXB0aW9ucyhCT09MIGVuYWJsZWQpCiB7CiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRTaG91bGREaXNw
bGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7CisgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVuY2VLZXksIGVuYWJsZWQpOwogICAgIHJl
dHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBMOwpAQCAtMTc0MSw3ICsxNzUy
LDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlv
bnMoQk9PTCogZW5hYmxlZCkKICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CiAKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRTaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkpKTsKKyAgICAqZW5hYmxlZCA9
IGJvb2xWYWx1ZUZvcktleShXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZl
cmVuY2VLZXkpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJTVBM
OwpAQCAtMTc1MSw3ICsxNzYyLDcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2hvdWxkRGlz
cGxheVRleHREZXNjcmlwdGlvbnMoQk9PTCogZW5hYmxlZCkKIEhSRVNVTFQgV2ViUHJlZmVyZW5j
ZXM6OnNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKEJPT0wgZW5hYmxlZCkKIHsKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdFNob3Vs
ZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNl
dEJvb2xWYWx1ZShXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VL
ZXksIGVuYWJsZWQpOwogICAgIHJldHVybiBTX09LOwogI2Vsc2UKICAgICByZXR1cm4gRV9OT1RJ
TVBMOwpAQCAtMTc2MCwxMyArMTc3MSwxMyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRT
aG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhCT09MIGVuYWJsZWQpCiAKIEhSRVNVTFQgV2Vi
UHJlZmVyZW5jZXM6OnNldFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoQk9PTCBlbmFibGVk
KQogewotICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHNldEJvb2xWYWx1ZShXZWJLaXRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnJlcXVlc3RBbmltYXRp
b25GcmFtZUVuYWJsZWQoQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IGJvb2xWYWx1
ZUZvcktleShDRlNUUihXZWJLaXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVFbmFibGVkUHJlZmVyZW5j
ZUtleSkpOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFJlcXVlc3RBbmlt
YXRpb25GcmFtZUVuYWJsZWRQcmVmZXJlbmNlS2V5KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggN2VmZjU3YjZlMWI3ODg3MTMwZGFhZTEx
YjE1ZjBiYWQ1OWJiNDdjYi4uOThiNTFjYjUyOTRkNzQ2NjkxNGQyZTI5ODhlNGI0NTBmNjIyMmQ5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCkBAIC01MDcsMTYgKzUwNywxOCBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBr
ZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKTsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxp
c3RSZWY+IHZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSk7Ci0gICAgQlNUUiBzdHJpbmdWYWx1
ZUZvcktleShDRlN0cmluZ1JlZiBrZXkpOwotICAgIGludCBpbnRlZ2VyVmFsdWVGb3JLZXkoQ0ZT
dHJpbmdSZWYga2V5KTsKLSAgICBCT09MIGJvb2xWYWx1ZUZvcktleShDRlN0cmluZ1JlZiBrZXkp
OwotICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JLZXkoQ0ZTdHJpbmdSZWYga2V5KTsKLSAgICBMT05H
TE9ORyBsb25nbG9uZ1ZhbHVlRm9yS2V5KENGU3RyaW5nUmVmIGtleSk7Ci0gICAgdm9pZCBzZXRT
dHJpbmdWYWx1ZShDRlN0cmluZ1JlZiBrZXksIExQQ1RTVFIgdmFsdWUpOwotICAgIHZvaWQgc2V0
SW50ZWdlclZhbHVlKENGU3RyaW5nUmVmIGtleSwgaW50IHZhbHVlKTsKLSAgICB2b2lkIHNldEJv
b2xWYWx1ZShDRlN0cmluZ1JlZiBrZXksIEJPT0wgdmFsdWUpOwotICAgIHZvaWQgc2V0RmxvYXRW
YWx1ZShDRlN0cmluZ1JlZiBrZXksIGZsb2F0IHZhbHVlKTsKLSAgICB2b2lkIHNldExvbmdMb25n
VmFsdWUoQ0ZTdHJpbmdSZWYga2V5LCBMT05HTE9ORyB2YWx1ZSk7CisgICAgdm9pZCBzZXRWYWx1
ZUZvcktleShjb25zdCBjaGFyKiBrZXksIENGUHJvcGVydHlMaXN0UmVmIHZhbHVlKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlRm9yS2V5KGNvbnN0IGNoYXIqIGtleSk7
CisgICAgQlNUUiBzdHJpbmdWYWx1ZUZvcktleShjb25zdCBjaGFyKiBrZXkpOworICAgIGludCBp
bnRlZ2VyVmFsdWVGb3JLZXkoY29uc3QgY2hhcioga2V5KTsKKyAgICBCT09MIGJvb2xWYWx1ZUZv
cktleShjb25zdCBjaGFyKiBrZXkpOworICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JLZXkoY29uc3Qg
Y2hhcioga2V5KTsKKyAgICBMT05HTE9ORyBsb25nbG9uZ1ZhbHVlRm9yS2V5KGNvbnN0IGNoYXIq
IGtleSk7CisgICAgdm9pZCBzZXRTdHJpbmdWYWx1ZShjb25zdCBjaGFyKiBrZXksIEJTVFIgdmFs
dWUpOworICAgIHZvaWQgc2V0SW50ZWdlclZhbHVlKGNvbnN0IGNoYXIqIGtleSwgaW50IHZhbHVl
KTsKKyAgICB2b2lkIHNldEJvb2xWYWx1ZShjb25zdCBjaGFyKiBrZXksIEJPT0wgdmFsdWUpOwor
ICAgIHZvaWQgc2V0RmxvYXRWYWx1ZShjb25zdCBjaGFyKiBrZXksIGZsb2F0IHZhbHVlKTsKKyAg
ICB2b2lkIHNldExvbmdMb25nVmFsdWUoY29uc3QgY2hhcioga2V5LCBMT05HTE9ORyB2YWx1ZSk7
CiAgICAgc3RhdGljIFdlYlByZWZlcmVuY2VzKiBnZXRJbnN0YW5jZUZvcklkZW50aWZpZXIoQlNU
UiBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplRGVmYXVsdFNldHRpbmdz
KCk7CiAgICAgdm9pZCBzYXZlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>