<?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>150695</bug_id>
          
          <creation_ts>2015-10-29 14:50:28 -0700</creation_ts>
          <short_desc>Modern IDB: autoIncrement support</short_desc>
          <delta_ts>2015-10-30 06:34:14 -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>WebCore Misc.</component>
          <version>Safari 9</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>
          <dependson>150713</dependson>
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137664</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-29 14:50:28 -0700</bug_when>
    <thetext>Modern IDB: autoIncrement support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137672</commentid>
    <comment_count>1</comment_count>
      <attachid>264351</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-29 15:11:29 -0700</bug_when>
    <thetext>Created attachment 264351
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137706</commentid>
    <comment_count>2</comment_count>
      <attachid>264363</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-29 16:32:52 -0700</bug_when>
    <thetext>Created attachment 264363
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137746</commentid>
    <comment_count>3</comment_count>
      <attachid>264363</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-29 18:58:12 -0700</bug_when>
    <thetext>Comment on attachment 264363
Patch v2

Rejecting attachment 264363 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 264363, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
fs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 191767 = be75106b6447e60d9d94ceef50ded56b59eca79c
r191768 = 3fa9ae7a4beb0333f53470f05b88acea64634c89
r191770 = 864565bcdf3fc20d089f8566fe9cdb1a41868555
r191771 = c0ced0937ac7958157f59bf021d9af08c63b70d9
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/356220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137778</commentid>
    <comment_count>4</comment_count>
      <attachid>264377</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-29 20:57:10 -0700</bug_when>
    <thetext>Created attachment 264377
v3 - Landing attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137783</commentid>
    <comment_count>5</comment_count>
      <attachid>264377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-29 21:28:59 -0700</bug_when>
    <thetext>Comment on attachment 264377
v3 - Landing attempt

Rejecting attachment 264377 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 264377, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
/git.webkit.org/WebKit
   cdb41fe..57bc596  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 191773 = cdb41fe1db24391f6bf759539e7b48ba2d5b11b3
r191774 = 57bc5961cdb55ed0b7745efebea612c0e97ee9a1
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/356711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137796</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-29 21:56:23 -0700</bug_when>
    <thetext>Commit queue crazy busted.

Manually landed in https://trac.webkit.org/changeset/191776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137819</commentid>
    <comment_count>7</comment_count>
      <attachid>264377</attachid>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2015-10-29 23:40:30 -0700</bug_when>
    <thetext>Comment on attachment 264377
v3 - Landing attempt

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

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:336
&gt; +        keyWasGenerated = true;

Please check &apos;keyWasGenerated&apos;. It is set true here but not used any more. This makes EFL buildbot red.

../../Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp: In member function ‘void WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd(uint64_t, const WebCore::IDBResourceIdentifier&amp;, uint64_t, const WebCore::IDBKeyData&amp;, const WebCore::ThreadSafeDataBuffer&amp;, WebCore::IndexedDB::ObjectStoreOverwriteMode)’:
../../Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:316:10: error: variable ‘keyWasGenerated’ set but not used [-Werror=unused-but-set-variable]
     bool keyWasGenerated = false;
          ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137863</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-30 06:34:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 264377 [details]
&gt; v3 - Landing attempt
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264377&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:336
&gt; &gt; +        keyWasGenerated = true;
&gt; 
&gt; Please check &apos;keyWasGenerated&apos;. It is set true here but not used any more.
&gt; This makes EFL buildbot red.
&gt; 
&gt; ../../Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp: In
&gt; member function ‘void
&gt; WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd(uint64_t, const
&gt; WebCore::IDBResourceIdentifier&amp;, uint64_t, const WebCore::IDBKeyData&amp;, const
&gt; WebCore::ThreadSafeDataBuffer&amp;,
&gt; WebCore::IndexedDB::ObjectStoreOverwriteMode)’:
&gt; ../../Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:316:10:
&gt; error: variable ‘keyWasGenerated’ set but not used
&gt; [-Werror=unused-but-set-variable]
&gt;      bool keyWasGenerated = false;
&gt;           ^

Saw the other bug where that was removed, and commented there.

I would&apos;ve seen this, but when I&apos;d last looked at patch v2 in the EWS the EFL bot was in &quot;unable to build without patch&quot; state - https://webkit-queues.webkit.org/patch/264363

Usually when one of the bots is in that state repeatedly it doesn&apos;t come out of it to be a hard red, so I hadn&apos;t watched any longer.

Sorry bout that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264351</attachid>
            <date>2015-10-29 15:11:29 -0700</date>
            <delta_ts>2015-10-29 16:32:52 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16433</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5j
cmVtZW50LWFib3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42NGYwZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzIgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBPcGVuaW5nIHJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB0byBidW1wIHRoZSBrZXkgZ2VuZXJhdG9yLCBidXQgaXQgd2lsbCBiZSBhYm9y
dGVkCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMQorQUxFUlQ6IEtleSB1c2VkIGZvciBw
dXQgd2FzIDIKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyAzCitBTEVSVDogS2V5IHVzZWQg
Zm9yIHB1dCB3YXMgNAorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDUKK0FMRVJUOiBLZXkg
dXNlZCBmb3IgcHV0IHdhcyA2CitBTEVSVDogcmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0CitB
TEVSVDogT3BlbmluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBzdXJlIHRoZSBrZXkg
Z2VuZXJhdG9yIGhhZCBzdWNjZXNzZnVsbHkgcmV2ZXJ0ZWQKK0FMRVJUOiBLZXkgdXNlZCBmb3Ig
cHV0IHdhcyAxCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMgorQUxFUlQ6IEtleSB1c2Vk
IGZvciBwdXQgd2FzIDMKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyA0CitBTEVSVDogS2V5
IHVzZWQgZm9yIHB1dCB3YXMgNQorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDYKK0FMRVJU
OiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBPcGVuaW5nIHJlYWR3cml0
ZSB0cmFuc2FjdGlvbiB0byBtYWtlIHN1cmUgdGhlIGtleSBnZW5lcmF0b3IgcGlja3MgdXAgd2hl
cmUgaXQgc2hvdWxkJ3ZlIGxlZnQgb2ZmCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgNwor
QUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDgKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdh
cyA5CitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMTAKK0FMRVJUOiBLZXkgdXNlZCBmb3Ig
cHV0IHdhcyAxMQorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDEyCitBTEVSVDogcmVhZHdy
aXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0IGNyZWF0ZXMg
YSBuZXcgZGF0YWJhc2Ugd2l0aCBhbiBvYmplY3RzdG9yZSB0aGF0IGF1dG9pbmNyZW1lbnRzLgor
SXQgdGhlbiBwdXRzIHNvbWUgdGhpbmdzIGluIHRoYXQgb2JqZWN0IHN0b3JlLCBjaGVja2luZyB0
aGUga2V5cyB0aGF0IHdlcmUgdXNlZC4KK0J1dCBpdCB0aGVuIGFib3J0cyB0aGF0IHRyYW5zYWN0
aW9uLgorVGhlbiBpdCBvcGVucyBhIG5ldyBvbmUgYW5kIHB1dHMgc29tZXRoaW5nIGluIGl0LCBk
b3VibGUgY2hlY2tpbmcgdGhhdCB0aGUga2V5IGdlbmVyYXRvciB3YXMgcmV2ZXJ0ZWQgd2hlbiB0
aGUgYWJvdmUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3JlbWVudC1hYm9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczY2I4YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3Jl
bWVudC1hYm9ydC5odG1sCkBAIC0wLDAgKzEsMTU5IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhIG5l
dyBkYXRhYmFzZSB3aXRoIGFuIG9iamVjdHN0b3JlIHRoYXQgYXV0b2luY3JlbWVudHMuPGJyPgor
SXQgdGhlbiBwdXRzIHNvbWUgdGhpbmdzIGluIHRoYXQgb2JqZWN0IHN0b3JlLCBjaGVja2luZyB0
aGUga2V5cyB0aGF0IHdlcmUgdXNlZC48YnI+CitCdXQgaXQgdGhlbiBhYm9ydHMgdGhhdCB0cmFu
c2FjdGlvbi48YnI+CitUaGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBhbmQgcHV0cyBzb21ldGhpbmcg
aW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIHdhcyByZXZlcnRl
ZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC48YnI+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7
CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRv
dy5pbmRleGVkREIub3BlbigiQXV0b2luY3JlbWVudEFib3J0RGF0YWJhc2UiLCAxKTsKK3ZhciBk
YXRhYmFzZTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIg
KyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9u
KTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0
aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9
CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gcHV0Q2hlY2tlcihldmVudCkgeworICAgIGFsZXJ0KCJLZXkgdXNlZCBmb3IgcHV0
IHdhcyAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVz
dDEoKQoreworICAgIGFsZXJ0KCJPcGVuaW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0byBidW1w
IHRoZSBrZXkgZ2VuZXJhdG9yLCBidXQgaXQgd2lsbCBiZSBhYm9ydGVkIik7CisgICAgdmFyIHRy
YW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oJ1Rlc3RPYmplY3RTdG9yZScsICJyZWFk
d3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
VGVzdE9iamVjdFN0b3JlJyk7CisgICAgCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjEiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjIiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENo
ZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjUiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjYiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIHB1dENoZWNrZXIoZXZlbnQpOworICAgICAgICB0cmFuc2FjdGlvbi5hYm9y
dCgpOworICAgIH0KKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBhYm9ydCIpOworICAg
ICAgICBjb250aW51ZVRlc3QyKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAg
dHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJy
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOworICAgICAgICBkb25lKCk7
CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QyKCkKK3sKKyAgICBhbGVydCgiT3Bl
bmluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBzdXJlIHRoZSBrZXkgZ2VuZXJhdG9y
IGhhZCBzdWNjZXNzZnVsbHkgcmV2ZXJ0ZWQiKTsKKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24g
PSBkYXRhYmFzZS50cmFuc2FjdGlvbignVGVzdE9iamVjdFN0b3JlJywgInJlYWR3cml0ZSIpOwor
ICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdUZXN0T2JqZWN0
U3RvcmUnKTsKKworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIxIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXIyIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2Vy
OworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXI0Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZh
ciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworCisgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUg
dHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQor
CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGlu
dWVUZXN0MygpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
ZXJyb3IiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVU
ZXN0MygpCit7CisgICAgYWxlcnQoIk9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIG1h
a2Ugc3VyZSB0aGUga2V5IGdlbmVyYXRvciBwaWNrcyB1cCB3aGVyZSBpdCBzaG91bGQndmUgbGVm
dCBvZmYiKTsKKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlv
bignVGVzdE9iamVjdFN0b3JlJywgInJlYWR3cml0ZSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnKTsKKworICAgIHZhciBy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIxIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIyIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVj
a2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI0Iik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUucHV0KCJiYXI1Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAg
IHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwdXRDaGVja2VyOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggODMwYzIxNC4uN2VjNThm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBJREJFcnJvciBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1dFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIFRocmVhZFNhZmVE
YXRhQnVmZmVyJiBvdXRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVL
ZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikg
PSAwOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IGRjM2I2ZTkuLmZlYWFmYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNjAs
MTIgKzYwLDkgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWRkTmV3T2Jq
ZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFMKICAgICBMT0coSW5kZXhlZERCLCAi
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVjdFN0b3JlKCkiKTsKIAog
ICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7Ci0KLSAgICBBU1NFUlQoIW1fb2JqZWN0U3Rv
cmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOwotICAgIG1fb2JqZWN0U3RvcmVzLmFkZCgmb2Jq
ZWN0U3RvcmUpOwogICAgIG1fdmVyc2lvbkNoYW5nZUFkZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2Jq
ZWN0U3RvcmUpOwogCi0gICAgb2JqZWN0U3RvcmUud3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRo
aXMpOworICAgIGFkZEV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpOwogfQogCiB2b2lk
IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphZGRFeGlzdGluZ09iamVjdFN0b3JlKE1l
bW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkKQEAgLTc4LDYgKzc1LDggQEAgdm9pZCBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlP
YmplY3RTdG9yZSYgb2IKICAgICBtX29iamVjdFN0b3Jlcy5hZGQoJm9iamVjdFN0b3JlKTsKIAog
ICAgIG9iamVjdFN0b3JlLndyaXRlVHJhbnNhY3Rpb25TdGFydGVkKCp0aGlzKTsKKworICAgIG1f
b3JpZ2luYWxLZXlHZW5lcmF0b3JzLmFkZCgmb2JqZWN0U3RvcmUsIG9iamVjdFN0b3JlLmN1cnJl
bnRLZXlHZW5lcmF0b3JWYWx1ZSgpKTsKIH0KIAogdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUpCkBAIC0xMzYsNiArMTM1LDkgQEAgdm9pZCBNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgIH0KIAogICAgIGZvciAoYXV0byBvYmplY3RT
dG9yZSA6IG1fb2JqZWN0U3RvcmVzKSB7CisgICAgICAgIEFTU0VSVChtX29yaWdpbmFsS2V5R2Vu
ZXJhdG9ycy5jb250YWlucyhvYmplY3RTdG9yZSkpOworICAgICAgICBvYmplY3RTdG9yZS0+c2V0
S2V5R2VuZXJhdG9yVmFsdWUobV9vcmlnaW5hbEtleUdlbmVyYXRvcnMuZ2V0KG9iamVjdFN0b3Jl
KSk7CisKICAgICAgICAgYXV0byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMuZ2V0KG9i
amVjdFN0b3JlKTsKICAgICAgICAgaWYgKCFrZXlWYWx1ZU1hcCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTQ4LDcgKzE1MCw2IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246OmFib3J0KCkKICAgICAgICAgbV9vcmlnaW5hbFZhbHVlcy5yZW1vdmUob2JqZWN0U3RvcmUp
OwogICAgIH0KIAotCiAgICAgZmluaXNoKCk7CiAKICAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmUg
OiBtX3ZlcnNpb25DaGFuZ2VBZGRlZE9iamVjdFN0b3JlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgKaW5kZXggYjc5NzdjZC4uNThjYTVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3JlKj4gbV9vYmplY3RTdG9yZXM7
CiAgICAgSGFzaFNldDxNZW1vcnlPYmplY3RTdG9yZSo+IG1fdmVyc2lvbkNoYW5nZUFkZGVkT2Jq
ZWN0U3RvcmVzOwogCisgICAgSGFzaE1hcDxNZW1vcnlPYmplY3RTdG9yZSosIHVpbnQ2NF90PiBt
X29yaWdpbmFsS2V5R2VuZXJhdG9yczsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPE1lbW9yeU9iamVjdFN0b3JlPj4gbV9kZWxldGVkT2JqZWN0U3RvcmVzOwogICAgIEhhc2hN
YXA8TWVtb3J5T2JqZWN0U3RvcmUqLCBzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+PiBtX29y
aWdpbmFsVmFsdWVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE5
MTMxZTcuLjRkMTlhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKIAogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBp
ZiAoIXRyYW5zYWN0aW9uKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29k
ZTo6VW5rbm93biwgV1RGOjpBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rp
b24gZm91bmQgdG8gZ2V0IHJlY29yZCIpKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4
Y2VwdGlvbkNvZGU6OlVua25vd24sIFdURjo6QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3Jl
IHRyYW5zYWN0aW9uIGZvdW5kIHRvIHB1dCByZWNvcmQiKSk7CiAKICAgICBNZW1vcnlPYmplY3RT
dG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQpAQCAtMjM4LDYgKzIzOCwy
MiBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIHJldHVybiBJREJFcnJvcigpOwogfQog
CitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpCit7CisgICAgTE9HKElu
ZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIiKTsKKyAg
ICBBU1NFUlQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CisgICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpLT5pc1dyaXRpbmcoKSk7CisKKyAgICBN
ZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmll
ci5nZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChvYmplY3RT
dG9yZSk7CisKKyAgICBrZXlOdW1iZXIgPSBvYmplY3RTdG9yZS0+Y3VycmVudEtleUdlbmVyYXRv
clZhbHVlKCk7CisgICAgb2JqZWN0U3RvcmUtPnNldEtleUdlbmVyYXRvclZhbHVlKGtleU51bWJl
ciArIDEpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKIHZvaWQgTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpyZWdpc3Rlck9iamVjdFN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmpl
Y3RTdG9yZT4mJiBvYmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDlkNjkyZjUuLmVlZTgzOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1
dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJ
REJLZXlEYXRhJiwgVGhyZWFkU2FmZURhdGFCdWZmZXImIG91dFZhbHVlKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAg
dm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RT
dG9yZSYpOwogICAgIHZvaWQgcmVzdG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0
KHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9y
ZS5oCmluZGV4IGMyNDZhYjQuLjZiZTE5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCkBAIC02
MCw2ICs2MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0S2V5VmFsdWUoY29uc3QgSURCS2V5
RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSk7CiAKKyAgICB1aW50NjRf
dCBjdXJyZW50S2V5R2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2tleUdlbmVyYXRv
clZhbHVlOyB9CisgICAgdm9pZCBzZXRLZXlHZW5lcmF0b3JWYWx1ZSh1aW50NjRfdCB2YWx1ZSkg
eyBtX2tleUdlbmVyYXRvclZhbHVlID0gdmFsdWU7IH0KKwogICAgIFRocmVhZFNhZmVEYXRhQnVm
ZmVyIHZhbHVlRm9yS2V5KGNvbnN0IElEQktleURhdGEmKSBjb25zdDsKIAogICAgIGNvbnN0IElE
Qk9iamVjdFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQpAQCAtNzAs
NiArNzMsNyBAQCBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlSW5mbyBtX2luZm87CiAKICAg
ICBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiogbV93cml0ZVRyYW5zYWN0aW9uIHsgbnVs
bHB0ciB9OworICAgIHVpbnQ2NF90IG1fa2V5R2VuZXJhdG9yVmFsdWUgeyAxIH07CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+IG1fa2V5VmFsdWVTdG9yZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8c3RkOjpzZXQ8SURCS2V5RGF0YT4+IG1fb3JkZXJlZEtleXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcAppbmRleCAzN2IyMjUzLi5lMTUyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKQEAgLTMxMyw2ICszMTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CiAKKyAgICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIElEQktleURhdGEg
dXNlZEtleTsKICAgICBJREJFcnJvciBlcnJvcjsKIApAQCAtMzI0LDEzICszMjUsMTcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgY29uc3QgSURCUmUKICAgICB9CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZvLT5h
dXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzIHdoZXJlIGdlbmVyYXRlZCBrZXkgc3VwcG9ydCBnb2VzCi0gICAgICAgIGVycm9y
ID0gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJLZXkg
Z2VuZXJhdG9ycyBub3Qgc3VwcG9ydGVkIHlldCIpKTsKLSAgICAgICAgbV9zZXJ2ZXIucG9zdERh
dGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVz
ZWRLZXkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVzZWRLZXkgPSBrZXlEYXRh
OworICAgICAgICB1aW50NjRfdCBrZXlOdW1iZXI7CisgICAgICAgIGVycm9yID0gbV9iYWNraW5n
U3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFkZCwg
Y2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdXNlZEtleSkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1c2VkS2V5LnNldE51bWJlclZhbHVlKGtl
eU51bWJlcik7CisgICAgICAgIGtleVdhc0dlbmVyYXRlZCA9IHRydWU7CisgICAgfSBlbHNlCisg
ICAgICAgIHVzZWRLZXkgPSBrZXlEYXRhOwogCiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgPT0gSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok5vT3ZlcndyaXRlKSB7CiAgICAgICAg
IGJvb2wga2V5RXhpc3RzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264363</attachid>
            <date>2015-10-29 16:32:52 -0700</date>
            <delta_ts>2015-10-29 20:57:10 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16493</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5j
cmVtZW50LWFib3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42NGYwZjM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzIgQEAKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQg
dmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBPcGVuaW5nIHJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB0byBidW1wIHRoZSBrZXkgZ2VuZXJhdG9yLCBidXQgaXQgd2lsbCBiZSBhYm9y
dGVkCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMQorQUxFUlQ6IEtleSB1c2VkIGZvciBw
dXQgd2FzIDIKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyAzCitBTEVSVDogS2V5IHVzZWQg
Zm9yIHB1dCB3YXMgNAorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDUKK0FMRVJUOiBLZXkg
dXNlZCBmb3IgcHV0IHdhcyA2CitBTEVSVDogcmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0CitB
TEVSVDogT3BlbmluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBzdXJlIHRoZSBrZXkg
Z2VuZXJhdG9yIGhhZCBzdWNjZXNzZnVsbHkgcmV2ZXJ0ZWQKK0FMRVJUOiBLZXkgdXNlZCBmb3Ig
cHV0IHdhcyAxCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMgorQUxFUlQ6IEtleSB1c2Vk
IGZvciBwdXQgd2FzIDMKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyA0CitBTEVSVDogS2V5
IHVzZWQgZm9yIHB1dCB3YXMgNQorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDYKK0FMRVJU
OiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBPcGVuaW5nIHJlYWR3cml0
ZSB0cmFuc2FjdGlvbiB0byBtYWtlIHN1cmUgdGhlIGtleSBnZW5lcmF0b3IgcGlja3MgdXAgd2hl
cmUgaXQgc2hvdWxkJ3ZlIGxlZnQgb2ZmCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgNwor
QUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDgKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdh
cyA5CitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMTAKK0FMRVJUOiBLZXkgdXNlZCBmb3Ig
cHV0IHdhcyAxMQorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDEyCitBTEVSVDogcmVhZHdy
aXRlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0IGNyZWF0ZXMg
YSBuZXcgZGF0YWJhc2Ugd2l0aCBhbiBvYmplY3RzdG9yZSB0aGF0IGF1dG9pbmNyZW1lbnRzLgor
SXQgdGhlbiBwdXRzIHNvbWUgdGhpbmdzIGluIHRoYXQgb2JqZWN0IHN0b3JlLCBjaGVja2luZyB0
aGUga2V5cyB0aGF0IHdlcmUgdXNlZC4KK0J1dCBpdCB0aGVuIGFib3J0cyB0aGF0IHRyYW5zYWN0
aW9uLgorVGhlbiBpdCBvcGVucyBhIG5ldyBvbmUgYW5kIHB1dHMgc29tZXRoaW5nIGluIGl0LCBk
b3VibGUgY2hlY2tpbmcgdGhhdCB0aGUga2V5IGdlbmVyYXRvciB3YXMgcmV2ZXJ0ZWQgd2hlbiB0
aGUgYWJvdmUgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3JlbWVudC1hYm9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczY2I4YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3Jl
bWVudC1hYm9ydC5odG1sCkBAIC0wLDAgKzEsMTU5IEBACitUaGlzIHRlc3QgY3JlYXRlcyBhIG5l
dyBkYXRhYmFzZSB3aXRoIGFuIG9iamVjdHN0b3JlIHRoYXQgYXV0b2luY3JlbWVudHMuPGJyPgor
SXQgdGhlbiBwdXRzIHNvbWUgdGhpbmdzIGluIHRoYXQgb2JqZWN0IHN0b3JlLCBjaGVja2luZyB0
aGUga2V5cyB0aGF0IHdlcmUgdXNlZC48YnI+CitCdXQgaXQgdGhlbiBhYm9ydHMgdGhhdCB0cmFu
c2FjdGlvbi48YnI+CitUaGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBhbmQgcHV0cyBzb21ldGhpbmcg
aW4gaXQsIGRvdWJsZSBjaGVja2luZyB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIHdhcyByZXZlcnRl
ZCB3aGVuIHRoZSBhYm92ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC48YnI+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7
CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgY3JlYXRlUmVxdWVzdCA9IHdpbmRv
dy5pbmRleGVkREIub3BlbigiQXV0b2luY3JlbWVudEFib3J0RGF0YWJhc2UiLCAxKTsKK3ZhciBk
YXRhYmFzZTsKKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIg
KyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9u
KTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0
aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICB2YXIgb2JqZWN0
U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgnVGVzdE9iamVjdFN0b3JlJywgeyBh
dXRvSW5jcmVtZW50OiB0cnVlIH0pOworICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGNvbnRpbnVlVGVzdDEoKTsKKyAgICB9
CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1
bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gcHV0Q2hlY2tlcihldmVudCkgeworICAgIGFsZXJ0KCJLZXkgdXNlZCBmb3IgcHV0
IHdhcyAiICsgZXZlbnQudGFyZ2V0LnJlc3VsdCk7Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVz
dDEoKQoreworICAgIGFsZXJ0KCJPcGVuaW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0byBidW1w
IHRoZSBrZXkgZ2VuZXJhdG9yLCBidXQgaXQgd2lsbCBiZSBhYm9ydGVkIik7CisgICAgdmFyIHRy
YW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oJ1Rlc3RPYmplY3RTdG9yZScsICJyZWFk
d3JpdGUiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
VGVzdE9iamVjdFN0b3JlJyk7CisgICAgCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5w
dXQoImJhcjEiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFy
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjIiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMi
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENo
ZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjUiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjYiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIHB1dENoZWNrZXIoZXZlbnQpOworICAgICAgICB0cmFuc2FjdGlvbi5hYm9y
dCgpOworICAgIH0KKyAgICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiBhYm9ydCIpOworICAg
ICAgICBjb250aW51ZVRlc3QyKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rp
b24gdW5leHBlY3RlZCBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAg
dHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJy
ZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOworICAgICAgICBkb25lKCk7
CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QyKCkKK3sKKyAgICBhbGVydCgiT3Bl
bmluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBzdXJlIHRoZSBrZXkgZ2VuZXJhdG9y
IGhhZCBzdWNjZXNzZnVsbHkgcmV2ZXJ0ZWQiKTsKKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24g
PSBkYXRhYmFzZS50cmFuc2FjdGlvbignVGVzdE9iamVjdFN0b3JlJywgInJlYWR3cml0ZSIpOwor
ICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdUZXN0T2JqZWN0
U3RvcmUnKTsKKworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIxIik7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2Jq
ZWN0U3RvcmUucHV0KCJiYXIyIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2Vy
OworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
cHV0KCJiYXI0Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZh
ciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI1Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2
Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworCisgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUg
dHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQor
CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
IGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGlu
dWVUZXN0MygpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQg
ZXJyb3IiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gY29udGludWVU
ZXN0MygpCit7CisgICAgYWxlcnQoIk9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIG1h
a2Ugc3VyZSB0aGUga2V5IGdlbmVyYXRvciBwaWNrcyB1cCB3aGVyZSBpdCBzaG91bGQndmUgbGVm
dCBvZmYiKTsKKyAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlv
bignVGVzdE9iamVjdFN0b3JlJywgInJlYWR3cml0ZSIpOworICAgIHZhciBvYmplY3RTdG9yZSA9
IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnKTsKKworICAgIHZhciBy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIxIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIyIik7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0g
b2JqZWN0U3RvcmUucHV0KCJiYXIzIik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVj
a2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI0Iik7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUucHV0KCJiYXI1Iik7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwdXRDaGVja2VyOworICAg
IHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucHV0KCJiYXI2Iik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBwdXRDaGVja2VyOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25j
b21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5z
YWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZHdy
aXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiKTsKKyAgICAgICAgZG9uZSgpOworICAg
IH0KK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggODMwYzIxNC4uN2VjNThm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBJREJFcnJvciBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5RGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1dFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIFRocmVhZFNhZmVE
YXRhQnVmZmVyJiBvdXRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVL
ZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikg
PSAwOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IGRjM2I2ZTkuLmZlYWFmYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNjAs
MTIgKzYwLDkgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWRkTmV3T2Jq
ZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFMKICAgICBMT0coSW5kZXhlZERCLCAi
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVjdFN0b3JlKCkiKTsKIAog
ICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7Ci0KLSAgICBBU1NFUlQoIW1fb2JqZWN0U3Rv
cmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOwotICAgIG1fb2JqZWN0U3RvcmVzLmFkZCgmb2Jq
ZWN0U3RvcmUpOwogICAgIG1fdmVyc2lvbkNoYW5nZUFkZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2Jq
ZWN0U3RvcmUpOwogCi0gICAgb2JqZWN0U3RvcmUud3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRo
aXMpOworICAgIGFkZEV4aXN0aW5nT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpOwogfQogCiB2b2lk
IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphZGRFeGlzdGluZ09iamVjdFN0b3JlKE1l
bW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkKQEAgLTc4LDYgKzc1LDggQEAgdm9pZCBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlP
YmplY3RTdG9yZSYgb2IKICAgICBtX29iamVjdFN0b3Jlcy5hZGQoJm9iamVjdFN0b3JlKTsKIAog
ICAgIG9iamVjdFN0b3JlLndyaXRlVHJhbnNhY3Rpb25TdGFydGVkKCp0aGlzKTsKKworICAgIG1f
b3JpZ2luYWxLZXlHZW5lcmF0b3JzLmFkZCgmb2JqZWN0U3RvcmUsIG9iamVjdFN0b3JlLmN1cnJl
bnRLZXlHZW5lcmF0b3JWYWx1ZSgpKTsKIH0KIAogdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUpCkBAIC0xMzYsNiArMTM1LDkgQEAgdm9pZCBNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgIH0KIAogICAgIGZvciAoYXV0byBvYmplY3RT
dG9yZSA6IG1fb2JqZWN0U3RvcmVzKSB7CisgICAgICAgIEFTU0VSVChtX29yaWdpbmFsS2V5R2Vu
ZXJhdG9ycy5jb250YWlucyhvYmplY3RTdG9yZSkpOworICAgICAgICBvYmplY3RTdG9yZS0+c2V0
S2V5R2VuZXJhdG9yVmFsdWUobV9vcmlnaW5hbEtleUdlbmVyYXRvcnMuZ2V0KG9iamVjdFN0b3Jl
KSk7CisKICAgICAgICAgYXV0byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMuZ2V0KG9i
amVjdFN0b3JlKTsKICAgICAgICAgaWYgKCFrZXlWYWx1ZU1hcCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTQ4LDcgKzE1MCw2IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246OmFib3J0KCkKICAgICAgICAgbV9vcmlnaW5hbFZhbHVlcy5yZW1vdmUob2JqZWN0U3RvcmUp
OwogICAgIH0KIAotCiAgICAgZmluaXNoKCk7CiAKICAgICBmb3IgKGF1dG8gb2JqZWN0U3RvcmUg
OiBtX3ZlcnNpb25DaGFuZ2VBZGRlZE9iamVjdFN0b3JlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgKaW5kZXggYjc5NzdjZC4uNThjYTVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3JlKj4gbV9vYmplY3RTdG9yZXM7
CiAgICAgSGFzaFNldDxNZW1vcnlPYmplY3RTdG9yZSo+IG1fdmVyc2lvbkNoYW5nZUFkZGVkT2Jq
ZWN0U3RvcmVzOwogCisgICAgSGFzaE1hcDxNZW1vcnlPYmplY3RTdG9yZSosIHVpbnQ2NF90PiBt
X29yaWdpbmFsS2V5R2VuZXJhdG9yczsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVf
cHRyPE1lbW9yeU9iamVjdFN0b3JlPj4gbV9kZWxldGVkT2JqZWN0U3RvcmVzOwogICAgIEhhc2hN
YXA8TWVtb3J5T2JqZWN0U3RvcmUqLCBzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+PiBtX29y
aWdpbmFsVmFsdWVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDE5
MTMxZTcuLjViMWY1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKIAogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBp
ZiAoIXRyYW5zYWN0aW9uKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29k
ZTo6VW5rbm93biwgV1RGOjpBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rp
b24gZm91bmQgdG8gZ2V0IHJlY29yZCIpKTsKKyAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4
Y2VwdGlvbkNvZGU6OlVua25vd24sIFdURjo6QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3Jl
IHRyYW5zYWN0aW9uIGZvdW5kIHRvIHB1dCByZWNvcmQiKSk7CiAKICAgICBNZW1vcnlPYmplY3RT
dG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0
U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQpAQCAtMjM4LDYgKzIzOCwy
MiBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIHJldHVybiBJREJFcnJvcigpOwogfQog
CitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpCit7CisgICAgTE9HKElu
ZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIiKTsKKyAg
ICBBU1NFUlQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpLT5pc1dyaXRpbmcoKSk7CisKKyAg
ICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRp
Zmllci5nZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChvYmpl
Y3RTdG9yZSk7CisKKyAgICBrZXlOdW1iZXIgPSBvYmplY3RTdG9yZS0+Y3VycmVudEtleUdlbmVy
YXRvclZhbHVlKCk7CisgICAgb2JqZWN0U3RvcmUtPnNldEtleUdlbmVyYXRvclZhbHVlKGtleU51
bWJlciArIDEpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKIHZvaWQgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpyZWdpc3Rlck9iamVjdFN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4mJiBvYmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDlkNjkyZjUuLmVlZTgzOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9y
IHB1dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwg
Y29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2
aXJ0dWFsIElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBJREJLZXlEYXRhJiwgVGhyZWFkU2FmZURhdGFCdWZmZXImIG91dFZhbHVlKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwogCiAg
ICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmpl
Y3RTdG9yZSYpOwogICAgIHZvaWQgcmVzdG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5oCmluZGV4IGMyNDZhYjQuLjZiZTE5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCkBA
IC02MCw2ICs2MCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0S2V5VmFsdWUoY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSk7CiAKKyAgICB1aW50
NjRfdCBjdXJyZW50S2V5R2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2tleUdlbmVy
YXRvclZhbHVlOyB9CisgICAgdm9pZCBzZXRLZXlHZW5lcmF0b3JWYWx1ZSh1aW50NjRfdCB2YWx1
ZSkgeyBtX2tleUdlbmVyYXRvclZhbHVlID0gdmFsdWU7IH0KKwogICAgIFRocmVhZFNhZmVEYXRh
QnVmZmVyIHZhbHVlRm9yS2V5KGNvbnN0IElEQktleURhdGEmKSBjb25zdDsKIAogICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQpAQCAt
NzAsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlSW5mbyBtX2luZm87CiAK
ICAgICBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiogbV93cml0ZVRyYW5zYWN0aW9uIHsg
bnVsbHB0ciB9OworICAgIHVpbnQ2NF90IG1fa2V5R2VuZXJhdG9yVmFsdWUgeyAxIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+IG1fa2V5VmFsdWVTdG9yZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8c3RkOjpzZXQ8SURCS2V5RGF0YT4+IG1fb3JkZXJlZEtleXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAzN2IyMjUzLi5lMTUyM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKQEAgLTMxMyw2ICszMTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZQog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRlbnRp
Zmllcik7CiAKKyAgICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIElEQktleURh
dGEgdXNlZEtleTsKICAgICBJREJFcnJvciBlcnJvcjsKIApAQCAtMzI0LDEzICszMjUsMTcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciwgY29uc3QgSURCUmUKICAgICB9CiAKICAgICBpZiAob2JqZWN0U3RvcmVJbmZv
LT5hdXRvSW5jcmVtZW50KCkgJiYgIWtleURhdGEuaXNWYWxpZCgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIHdoZXJlIGdlbmVyYXRlZCBrZXkgc3VwcG9ydCBnb2VzCi0gICAgICAgIGVy
cm9yID0gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgQVNDSUlMaXRlcmFsKCJL
ZXkgZ2VuZXJhdG9ycyBub3Qgc3VwcG9ydGVkIHlldCIpKTsKLSAgICAgICAgbV9zZXJ2ZXIucG9z
dERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQsIGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3Is
IHVzZWRLZXkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHVzZWRLZXkgPSBrZXlE
YXRhOworICAgICAgICB1aW50NjRfdCBrZXlOdW1iZXI7CisgICAgICAgIGVycm9yID0gbV9iYWNr
aW5nU3RvcmUtPmdlbmVyYXRlS2V5TnVtYmVyKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCBrZXlOdW1iZXIpOworICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1QdXRPckFk
ZCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgdXNlZEtleSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB1c2VkS2V5LnNldE51bWJlclZhbHVl
KGtleU51bWJlcik7CisgICAgICAgIGtleVdhc0dlbmVyYXRlZCA9IHRydWU7CisgICAgfSBlbHNl
CisgICAgICAgIHVzZWRLZXkgPSBrZXlEYXRhOwogCiAgICAgaWYgKG92ZXJ3cml0ZU1vZGUgPT0g
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGU6Ok5vT3ZlcndyaXRlKSB7CiAgICAg
ICAgIGJvb2wga2V5RXhpc3RzOwo=
</data>
<flag name="review"
          id="289488"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="289494"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264377</attachid>
            <date>2015-10-29 20:57:10 -0700</date>
            <delta_ts>2015-10-29 21:28:59 -0700</delta_ts>
            <desc>v3 - Landing attempt</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18657</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYTYzMDY1Li4xNDZiNDhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTAt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IGF1dG9JbmNyZW1lbnQgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MDY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3Jl
bWVudC1hYm9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTEwLTI5
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIG1h
a2luZyBhIHRhaWwgY2FsbCBmcm9tIGEgZ2V0dGVyIHRvIGEgaG9zdCBmdW5jdGlvbgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQt
YWJvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2F1dG9pbmNyZW1lbnQtYWJvcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY0ZjBmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vYXV0b2luY3JlbWVudC1hYm9ydC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzMiBAQAorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gMCBOZXcgdmVyc2lvbiAtIDEKK0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IE9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0
aW9uIHRvIGJ1bXAgdGhlIGtleSBnZW5lcmF0b3IsIGJ1dCBpdCB3aWxsIGJlIGFib3J0ZWQKK0FM
RVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyAxCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMg
MgorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDMKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0
IHdhcyA0CitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgNQorQUxFUlQ6IEtleSB1c2VkIGZv
ciBwdXQgd2FzIDYKK0FMRVJUOiByZWFkd3JpdGUgdHJhbnNhY3Rpb24gYWJvcnQKK0FMRVJUOiBP
cGVuaW5nIHJlYWR3cml0ZSB0cmFuc2FjdGlvbiB0byBtYWtlIHN1cmUgdGhlIGtleSBnZW5lcmF0
b3IgaGFkIHN1Y2Nlc3NmdWxseSByZXZlcnRlZAorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2Fz
IDEKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyAyCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1
dCB3YXMgMworQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDQKK0FMRVJUOiBLZXkgdXNlZCBm
b3IgcHV0IHdhcyA1CitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgNgorQUxFUlQ6IHJlYWR3
cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IE9wZW5pbmcgcmVhZHdyaXRlIHRyYW5z
YWN0aW9uIHRvIG1ha2Ugc3VyZSB0aGUga2V5IGdlbmVyYXRvciBwaWNrcyB1cCB3aGVyZSBpdCBz
aG91bGQndmUgbGVmdCBvZmYKK0FMRVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyA3CitBTEVSVDog
S2V5IHVzZWQgZm9yIHB1dCB3YXMgOAorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2FzIDkKK0FM
RVJUOiBLZXkgdXNlZCBmb3IgcHV0IHdhcyAxMAorQUxFUlQ6IEtleSB1c2VkIGZvciBwdXQgd2Fz
IDExCitBTEVSVDogS2V5IHVzZWQgZm9yIHB1dCB3YXMgMTIKK0FMRVJUOiByZWFkd3JpdGUgdHJh
bnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25lCitUaGlzIHRlc3QgY3JlYXRlcyBhIG5ldyBk
YXRhYmFzZSB3aXRoIGFuIG9iamVjdHN0b3JlIHRoYXQgYXV0b2luY3JlbWVudHMuCitJdCB0aGVu
IHB1dHMgc29tZSB0aGluZ3MgaW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNoZWNraW5nIHRoZSBrZXlz
IHRoYXQgd2VyZSB1c2VkLgorQnV0IGl0IHRoZW4gYWJvcnRzIHRoYXQgdHJhbnNhY3Rpb24uCitU
aGVuIGl0IG9wZW5zIGEgbmV3IG9uZSBhbmQgcHV0cyBzb21ldGhpbmcgaW4gaXQsIGRvdWJsZSBj
aGVja2luZyB0aGF0IHRoZSBrZXkgZ2VuZXJhdG9yIHdhcyByZXZlcnRlZCB3aGVuIHRoZSBhYm92
ZSB0cmFuc2FjdGlvbiB3YXMgYWJvcnRlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQuaHRtbCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFib3J0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjYjhjMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hdXRvaW5jcmVtZW50LWFi
b3J0Lmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKK1RoaXMgdGVzdCBjcmVhdGVzIGEgbmV3IGRhdGFi
YXNlIHdpdGggYW4gb2JqZWN0c3RvcmUgdGhhdCBhdXRvaW5jcmVtZW50cy48YnI+CitJdCB0aGVu
IHB1dHMgc29tZSB0aGluZ3MgaW4gdGhhdCBvYmplY3Qgc3RvcmUsIGNoZWNraW5nIHRoZSBrZXlz
IHRoYXQgd2VyZSB1c2VkLjxicj4KK0J1dCBpdCB0aGVuIGFib3J0cyB0aGF0IHRyYW5zYWN0aW9u
Ljxicj4KK1RoZW4gaXQgb3BlbnMgYSBuZXcgb25lIGFuZCBwdXRzIHNvbWV0aGluZyBpbiBpdCwg
ZG91YmxlIGNoZWNraW5nIHRoYXQgdGhlIGtleSBnZW5lcmF0b3Igd2FzIHJldmVydGVkIHdoZW4g
dGhlIGFib3ZlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkLjxicj4KKzxzY3JpcHQ+CisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBh
bGVydCgiRG9uZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5vcGVuKCJBdXRvaW5jcmVtZW50QWJvcnREYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNl
OworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50
Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisg
ICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247Cisg
ICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9
IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCdUZXN0T2JqZWN0U3RvcmUnLCB7IGF1dG9JbmNy
ZW1lbnQ6IHRydWUgfSk7CisgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAgICAgICBkb25lKCk7Cisg
ICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlv
biBwdXRDaGVja2VyKGV2ZW50KSB7CisgICAgYWxlcnQoIktleSB1c2VkIGZvciBwdXQgd2FzICIg
KyBldmVudC50YXJnZXQucmVzdWx0KTsKK30KKworZnVuY3Rpb24gY29udGludWVUZXN0MSgpCit7
CisgICAgYWxlcnQoIk9wZW5pbmcgcmVhZHdyaXRlIHRyYW5zYWN0aW9uIHRvIGJ1bXAgdGhlIGtl
eSBnZW5lcmF0b3IsIGJ1dCBpdCB3aWxsIGJlIGFib3J0ZWQiKTsKKyAgICB2YXIgdHJhbnNhY3Rp
b24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbignVGVzdE9iamVjdFN0b3JlJywgInJlYWR3cml0ZSIp
OworICAgIHZhciBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdUZXN0T2Jq
ZWN0U3RvcmUnKTsKKyAgICAKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFy
MSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVz
dCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0
Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyMyIpOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiYmFyNCIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHV0Q2hlY2tlcjsK
KyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCgiYmFyNSIpOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gcHV0Q2hlY2tlcjsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1
dCgiYmFyNiIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgcHV0Q2hlY2tlcihldmVudCk7CisgICAgICAgIHRyYW5zYWN0aW9uLmFib3J0KCk7Cisg
ICAgfQorICAgIAorICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBhbGVydCgicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFib3J0Iik7CisgICAgICAgIGNv
bnRpbnVlVGVzdDIoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2Fj
dGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDIoKQoreworICAgIGFsZXJ0KCJPcGVuaW5nIHJl
YWR3cml0ZSB0cmFuc2FjdGlvbiB0byBtYWtlIHN1cmUgdGhlIGtleSBnZW5lcmF0b3IgaGFkIHN1
Y2Nlc3NmdWxseSByZXZlcnRlZCIpOworICAgIAorICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFi
YXNlLnRyYW5zYWN0aW9uKCdUZXN0T2JqZWN0U3RvcmUnLCAicmVhZHdyaXRlIik7CisgICAgdmFy
IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScp
OworCisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjEiKTsKKyAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5wdXQoImJhcjIiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAg
dmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjMiKTsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJh
cjQiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjUiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1
dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjYiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisKKyAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGFib3J0Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQo
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBjb250aW51ZVRlc3Qz
KCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QzKCkK
K3sKKyAgICBhbGVydCgiT3BlbmluZyByZWFkd3JpdGUgdHJhbnNhY3Rpb24gdG8gbWFrZSBzdXJl
IHRoZSBrZXkgZ2VuZXJhdG9yIHBpY2tzIHVwIHdoZXJlIGl0IHNob3VsZCd2ZSBsZWZ0IG9mZiIp
OworICAgIAorICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCdUZXN0
T2JqZWN0U3RvcmUnLCAicmVhZHdyaXRlIik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNh
Y3Rpb24ub2JqZWN0U3RvcmUoJ1Rlc3RPYmplY3RTdG9yZScpOworCisgICAgdmFyIHJlcXVlc3Qg
PSBvYmplY3RTdG9yZS5wdXQoImJhcjEiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENo
ZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjIiKTsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5wdXQoImJhcjMiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7Cisg
ICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjQiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQo
ImJhcjUiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHB1dENoZWNrZXI7CisgICAgdmFyIHJl
cXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoImJhcjYiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IHB1dENoZWNrZXI7CisKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0
Iik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRl
ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoInJlYWR3cml0ZSB0cmFuc2FjdGlv
biBjb21wbGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24u
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkd3JpdGUgdHJh
bnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMTYxNTA4Li5lZjhlNjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTUtMTAtMjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vZGVybiBJREI6IGF1dG9JbmNyZW1lbnQgc3VwcG9ydC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDY5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGVzdDogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjphZGROZXdPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphZGRFeGlzdGluZ09iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpjdXJyZW50S2V5
R2VuZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmpl
Y3RTdG9yZTo6c2V0S2V5R2VuZXJhdG9yVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtUHV0T3JBZGQpOgorCiAyMDE1LTEwLTI5
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
Q01ha2UgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDgzMGMyMTQuLjdlYzU4ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBwdXRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBUaHJlYWRTYWZlRGF0
YUJ1ZmZlciYgb3V0VmFsdWUpID0gMDsKKyAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5
TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpID0g
MDsKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcAppbmRleCBkYzNiNmU5Li5mZWFhZmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTYwLDEy
ICs2MCw5IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVj
dFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTCiAgICAgTE9HKEluZGV4ZWREQiwgIk1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphZGROZXdPYmplY3RTdG9yZSgpIik7CiAKICAg
ICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwotCi0gICAgQVNTRVJUKCFtX29iamVjdFN0b3Jl
cy5jb250YWlucygmb2JqZWN0U3RvcmUpKTsKLSAgICBtX29iamVjdFN0b3Jlcy5hZGQoJm9iamVj
dFN0b3JlKTsKICAgICBtX3ZlcnNpb25DaGFuZ2VBZGRlZE9iamVjdFN0b3Jlcy5hZGQoJm9iamVj
dFN0b3JlKTsKIAotICAgIG9iamVjdFN0b3JlLndyaXRlVHJhbnNhY3Rpb25TdGFydGVkKCp0aGlz
KTsKKyAgICBhZGRFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1v
cnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCkBAIC03OCw2ICs3NSw4IEBAIHZvaWQgTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZEV4aXN0aW5nT2JqZWN0U3RvcmUoTWVtb3J5T2Jq
ZWN0U3RvcmUmIG9iCiAgICAgbV9vYmplY3RTdG9yZXMuYWRkKCZvYmplY3RTdG9yZSk7CiAKICAg
ICBvYmplY3RTdG9yZS53cml0ZVRyYW5zYWN0aW9uU3RhcnRlZCgqdGhpcyk7CisKKyAgICBtX29y
aWdpbmFsS2V5R2VuZXJhdG9ycy5hZGQoJm9iamVjdFN0b3JlLCBvYmplY3RTdG9yZS5jdXJyZW50
S2V5R2VuZXJhdG9yVmFsdWUoKSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3Rv
cmU+IG9iamVjdFN0b3JlKQpAQCAtMTM2LDYgKzEzNSw5IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246OmFib3J0KCkKICAgICB9CiAKICAgICBmb3IgKGF1dG8gb2JqZWN0U3Rv
cmUgOiBtX29iamVjdFN0b3JlcykgeworICAgICAgICBBU1NFUlQobV9vcmlnaW5hbEtleUdlbmVy
YXRvcnMuY29udGFpbnMob2JqZWN0U3RvcmUpKTsKKyAgICAgICAgb2JqZWN0U3RvcmUtPnNldEtl
eUdlbmVyYXRvclZhbHVlKG1fb3JpZ2luYWxLZXlHZW5lcmF0b3JzLmdldChvYmplY3RTdG9yZSkp
OworCiAgICAgICAgIGF1dG8ga2V5VmFsdWVNYXAgPSBtX29yaWdpbmFsVmFsdWVzLmdldChvYmpl
Y3RTdG9yZSk7CiAgICAgICAgIGlmICgha2V5VmFsdWVNYXApCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE0OCw3ICsxNTAsNiBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjphYm9ydCgpCiAgICAgICAgIG1fb3JpZ2luYWxWYWx1ZXMucmVtb3ZlKG9iamVjdFN0b3JlKTsK
ICAgICB9CiAKLQogICAgIGZpbmlzaCgpOwogCiAgICAgZm9yIChhdXRvIG9iamVjdFN0b3JlIDog
bV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5oCmluZGV4IGI3OTc3Y2QuLjU4Y2E1ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxNZW1vcnlPYmplY3RTdG9yZSo+IG1fb2JqZWN0U3RvcmVzOwog
ICAgIEhhc2hTZXQ8TWVtb3J5T2JqZWN0U3RvcmUqPiBtX3ZlcnNpb25DaGFuZ2VBZGRlZE9iamVj
dFN0b3JlczsKIAorICAgIEhhc2hNYXA8TWVtb3J5T2JqZWN0U3RvcmUqLCB1aW50NjRfdD4gbV9v
cmlnaW5hbEtleUdlbmVyYXRvcnM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0
cjxNZW1vcnlPYmplY3RTdG9yZT4+IG1fZGVsZXRlZE9iamVjdFN0b3JlczsKICAgICBIYXNoTWFw
PE1lbW9yeU9iamVjdFN0b3JlKiwgc3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPj4gbV9vcmln
aW5hbFZhbHVlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAxOTEz
MWU3Li41YjFmNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjEx
LDcgKzIxMSw3IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6cHV0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAKICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6
OlVua25vd24sIFdURjo6QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9u
IGZvdW5kIHRvIGdldCByZWNvcmQiKSk7CisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNl
cHRpb25Db2RlOjpVbmtub3duLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0
cmFuc2FjdGlvbiBmb3VuZCB0byBwdXQgcmVjb3JkIikpOwogCiAgICAgTWVtb3J5T2JqZWN0U3Rv
cmUqIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0
b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKQEAgLTIzOCw2ICsyMzgsMjIg
QEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICByZXR1cm4gSURCRXJyb3IoKTsKIH0KIAor
SURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKQoreworICAgIExPRyhJbmRl
eGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyIik7CisgICAg
QVNTRVJUKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpOworICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKS0+aXNXcml0aW5nKCkpOworCisgICAg
TWVtb3J5T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZp
ZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9BU1NFUlQob2JqZWN0
U3RvcmUpOworCisgICAga2V5TnVtYmVyID0gb2JqZWN0U3RvcmUtPmN1cnJlbnRLZXlHZW5lcmF0
b3JWYWx1ZSgpOworICAgIG9iamVjdFN0b3JlLT5zZXRLZXlHZW5lcmF0b3JWYWx1ZShrZXlOdW1i
ZXIgKyAxKTsKKworICAgIHJldHVybiBJREJFcnJvcigpOworfQorCiB2b2lkIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6cmVnaXN0ZXJPYmplY3RTdG9yZShzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2Jq
ZWN0U3RvcmU+JiYgb2JqZWN0U3RvcmUpCiB7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA5ZDY5MmY1Li5lZWU4Mzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIElEQkVycm9yIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBJREJLZXlEYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBJREJFcnJvciBw
dXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNv
bnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCBJREJFcnJvciBnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
SURCS2V5RGF0YSYsIFRocmVhZFNhZmVEYXRhQnVmZmVyJiBvdXRWYWx1ZSkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKIAogICAg
IHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0
U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9y
dChzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuaAppbmRleCBjMjQ2YWI0Li42YmUxOTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAt
NjAsNiArNjAsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEtleVZhbHVlKGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpOwogCisgICAgdWludDY0
X3QgY3VycmVudEtleUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlHZW5lcmF0
b3JWYWx1ZTsgfQorICAgIHZvaWQgc2V0S2V5R2VuZXJhdG9yVmFsdWUodWludDY0X3QgdmFsdWUp
IHsgbV9rZXlHZW5lcmF0b3JWYWx1ZSA9IHZhbHVlOyB9CisKICAgICBUaHJlYWRTYWZlRGF0YUJ1
ZmZlciB2YWx1ZUZvcktleShjb25zdCBJREJLZXlEYXRhJikgY29uc3Q7CiAKICAgICBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KQEAgLTcw
LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogCiAg
ICAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7IG51
bGxwdHIgfTsKKyAgICB1aW50NjRfdCBtX2tleUdlbmVyYXRvclZhbHVlIHsgMSB9OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEtleVZhbHVlTWFwPiBtX2tleVZhbHVlU3RvcmU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPHN0ZDo6c2V0PElEQktleURhdGE+PiBtX29yZGVyZWRLZXlzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKaW5kZXggMzdiMjI1My4uZTE1MjNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCkBAIC0zMTMsNiArMzEzLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmUKICAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZUlkZW50aWZp
ZXIpOwogCisgICAgYm9vbCBrZXlXYXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICBJREJLZXlEYXRh
IHVzZWRLZXk7CiAgICAgSURCRXJyb3IgZXJyb3I7CiAKQEAgLTMyNCwxMyArMzI1LDE3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1QdXRPckFkZCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlCiAgICAgfQogCiAgICAgaWYgKG9iamVjdFN0b3JlSW5mby0+
YXV0b0luY3JlbWVudCgpICYmICFrZXlEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyB3aGVyZSBnZW5lcmF0ZWQga2V5IHN1cHBvcnQgZ29lcwotICAgICAgICBlcnJv
ciA9IElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OlVua25vd24sIEFTQ0lJTGl0ZXJhbCgiS2V5
IGdlbmVyYXRvcnMgbm90IHN1cHBvcnRlZCB5ZXQiKSk7Ci0gICAgICAgIG1fc2VydmVyLnBvc3RE
YXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybVB1dE9yQWRkLCBjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCB1
c2VkS2V5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1c2VkS2V5ID0ga2V5RGF0
YTsKKyAgICAgICAgdWludDY0X3Qga2V5TnVtYmVyOworICAgICAgICBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLT5nZW5lcmF0ZUtleU51bWJlcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwga2V5TnVtYmVyKTsKKyAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
eworICAgICAgICAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtUHV0T3JBZGQs
IGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHVzZWRLZXkpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdXNlZEtleS5zZXROdW1iZXJWYWx1ZShr
ZXlOdW1iZXIpOworICAgICAgICBrZXlXYXNHZW5lcmF0ZWQgPSB0cnVlOworICAgIH0gZWxzZQor
ICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAg
ICBib29sIGtleUV4aXN0czsK
</data>
<flag name="commit-queue"
          id="289509"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>