<?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>73232</bug_id>
          
          <creation_ts>2011-11-28 11:13:41 -0800</creation_ts>
          <short_desc>IndexedDB: Implement IDBIndex multientry feature</short_desc>
          <delta_ts>2011-11-30 21:22:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509982</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-28 11:13:41 -0800</bug_when>
    <thetext>Search fodder: Older revisions of the spec call this: multirow

TL;DR: On insert, when updating an index, if the index&apos;s multientry flag is true and evaluating the keyPath against the value to be inserted yields an Array as the index key, then the index is updated with each value in the Array as a separate indexKey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509987</commentid>
    <comment_count>1</comment_count>
      <attachid>116787</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-28 11:16:20 -0800</bug_when>
    <thetext>Created attachment 116787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509988</commentid>
    <comment_count>2</comment_count>
      <attachid>116787</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-28 11:16:51 -0800</bug_when>
    <thetext>Comment on attachment 116787
Patch

Not ready to land yet, as it doesn&apos;t actually implement the feature or tests, just the new flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510311</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 16:19:50 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510320</commentid>
    <comment_count>4</comment_count>
      <attachid>116787</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 16:31:47 -0800</bug_when>
    <thetext>Comment on attachment 116787
Patch

WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510775</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 08:06:43 -0800</bug_when>
    <thetext>Very nice!

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511249</commentid>
    <comment_count>6</comment_count>
      <attachid>117082</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-29 17:33:22 -0800</bug_when>
    <thetext>Created attachment 117082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511256</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-29 17:39:20 -0800</bug_when>
    <thetext>Okay, this is ready for a serious look now. 

This would land first, followed by the Chromium side is http://codereview.chromium.org/8743001/ - followed by the trivial removal of the old createIndex() WebKit API method that doesn&apos;t have the new flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511617</commentid>
    <comment_count>8</comment_count>
      <attachid>117082</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 04:01:34 -0800</bug_when>
    <thetext>Comment on attachment 117082
Patch

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

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:247
&gt; +            &amp;&amp; !index-&gt;addingKeyAllowed(indexKey.get(), key.get())) {

nit: no need for linebreak

&gt; LayoutTests/storage/indexeddb/index-multientry.html:114
&gt; +    debug(&quot;This should fail the uniqueness constraint on the index, and fail:&quot;);

Could you add a record to make sure that it&apos;s possible to update a record, e.g. store.put({x: [1,2,7], y: &apos;a&apos;) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511636</commentid>
    <comment_count>9</comment_count>
      <attachid>117082</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 04:52:49 -0800</bug_when>
    <thetext>Comment on attachment 117082
Patch

Attachment 117082 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10697153

New failing tests:
svg/transforms/text-with-pattern-with-svg-transform.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511798</commentid>
    <comment_count>10</comment_count>
      <attachid>117204</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 09:13:57 -0800</bug_when>
    <thetext>Created attachment 117204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511799</commentid>
    <comment_count>11</comment_count>
      <attachid>117204</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 09:14:44 -0800</bug_when>
    <thetext>Comment on attachment 117204
Patch

Addressed Hans&apos; comments. Also, hopefully the flaky SVG test will go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511830</commentid>
    <comment_count>12</comment_count>
      <attachid>117204</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 10:04:41 -0800</bug_when>
    <thetext>Comment on attachment 117204
Patch

tony@ or anyone else, want to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511982</commentid>
    <comment_count>13</comment_count>
      <attachid>117204</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-30 11:57:52 -0800</bug_when>
    <thetext>Comment on attachment 117204
Patch

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

Do you have commit access?  If so, you can use &apos;webkit-patch land-safely&apos; after making the changes locally.  If not, I&apos;ll see about nominating you.

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:715
&gt; +        // FIXME: Add encode/decode functions for bools

Nit: Add a period to the end of the sentence.

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:728
&gt; +            // FIXME: Add encode/decode functions for bools

Nit: Add a period to the end of the sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511986</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 12:02:04 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; 
&gt; Do you have commit access?  If so, you can use &apos;webkit-patch land-safely&apos; after making the changes locally.  If not, I&apos;ll see about nominating you.
&gt; 

Nope, I don&apos;t have commit access yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512019</commentid>
    <comment_count>15</comment_count>
      <attachid>117249</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 12:39:35 -0800</bug_when>
    <thetext>Created attachment 117249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512025</commentid>
    <comment_count>16</comment_count>
      <attachid>117249</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 12:40:27 -0800</bug_when>
    <thetext>Comment on attachment 117249
Patch

Just the comment nits tony@ pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512157</commentid>
    <comment_count>17</comment_count>
      <attachid>117249</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-30 14:52:10 -0800</bug_when>
    <thetext>Comment on attachment 117249
Patch

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

&gt; Source/WebKit/chromium/public/WebIDBIndex.h:64
&gt; +    virtual bool multientry() const

nit: is &quot;multientry&quot; really one word?  i would have thought that multi-entry was the correct spelling, and so we would therefore name this field multiEntry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512168</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 15:03:59 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 117249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117249&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebIDBIndex.h:64
&gt; &gt; +    virtual bool multientry() const
&gt; 
&gt; nit: is &quot;multientry&quot; really one word?  i would have thought that multi-entry was the correct spelling, and so we would therefore name this field multiEntry.

That&apos;s how it&apos;s written in the spec - http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html - earlier iterations called it &quot;multirow&quot;. We may be the first to implement it with the new name, though. I&apos;ll ask on the list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512426</commentid>
    <comment_count>19</comment_count>
      <attachid>117249</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 21:22:42 -0800</bug_when>
    <thetext>Comment on attachment 117249
Patch

Clearing flags on attachment: 117249

Committed r101602: &lt;http://trac.webkit.org/changeset/101602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512427</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 21:22:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116787</attachid>
            <date>2011-11-28 11:16:20 -0800</date>
            <delta_ts>2011-11-29 17:33:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73232-20111128111619.patch</filename>
            <type>text/plain</type>
            <size>38241</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I4MDMyZTk3ZWIxZGQw
NWQ5Mjg1ZjQxYzBkZTZjMzFiYzg2MDU4My4uMzNjZTljYWRiZGE5NWM2OWJmM2IxYjAxOWI0MWU1
MzQ3Y2Q1YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTExLTI4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bXVsdGllbnRyeSk6CisgICAgICAgICog
c3RvcmFnZS9JREJJbmRleC5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4
QmFja2VuZEltcGwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om11bHRpZW50cnkpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrSW5kZXhBbmRN
ZXRhRGF0YUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJbmRleGVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpsb2FkSW5kZXhlcyk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaDoKKwogMjAxMS0xMS0yMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CiAKICAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IENvcmUgQW5pbWF0aW9uIHBsdWdpbnMg
aW4gY29tcG9zaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0MzgzZTI4ZjdlZTBl
OGJmMDU3MDI1ZWRjMGQ0YmVlNTRjZmYxNjljLi5hZTk0YjEwMzVlNTQ4ZDRkNmM5NjZlMGVkMjc2
Zjg5MjdhMjkzYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDExLTExLTI4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYklE
QkluZGV4Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjptdWx0aWVudHJ5KToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNr
ZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJJbmRleEJhY2tlbmRQcm94eTo6bXVs
dGllbnRyeSk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5Lmg6CisgICAgICAg
ICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBzcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhJbXBsOjptdWx0aWVudHJ5KToK
KyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisK
IDIwMTEtMTEtMjIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gU3VwcG9ydCBDb3JlIEFuaW1hdGlvbiBwbHVnaW5zIGluIGNvbXBvc2l0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDZiMGEwNDBmOWZj
NGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjYxZTIzYThjY2Q3NDQ0NGE4M2Q1ZGE1Mzdl
ZmM5NzY2OGE3NzBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUu
aApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2aXJ0dWFsIGJvb2wgZm9y
RWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5kZXhJZCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRO
YW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRV
bmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncykgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aWVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcHV0
SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVj
b3JkSWRlbnRpZmllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXhEYXRhRm9y
UmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXguaAppbmRleCAyYWYxODA1M2QwMzZkZWZlMjVhZTQwNjJhOTk1MGJl
ZDYyZTVmYTgyLi4wYTZiNGIzZmFiM2JjZmYxZmJiMTI5MzE4MWFhZWJmMGM2NDAzNTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBJ
REJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3Jl
LmdldCgpOyB9CiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQt
PmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5k
LT51bmlxdWUoKTsgfQorICAgIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZC0+bXVsdGllbnRyeSgpOyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUg
Y29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgMCwgZWMpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmluZGV4IDUxZWQ2NGExMTI3ZGE1MDUwMDE3OTkwOTM0
ODJmOTgyYzFhMGRiYTAuLjk5ZTM4MmZjYWIzN2NmMzEzNjc0MGNkMWI1NzJlYjQ1ZTg3OTdlODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC0zMiw2ICszMiw3IEBAIG1vZHVs
ZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQk9iamVjdFN0b3JlIG9i
amVjdFN0b3JlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtleVBhdGg7
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1ZTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGllbnRyeTsKIAogICAgICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGluIFtPcHRpb25h
bF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA1MTI1NjQz
ZDQ4MDYyMTJjODFjMzYwNDIwZWNhYTNkZDBjNTNiOWU2Li5hMzI5OGI1Mjc0ZDYzMjBjM2Q1ZmYx
ZTA1YWEwZjM1OWQwYmVlOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdT
dG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkpCiAgICAgOiBtX2JhY2tp
bmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAg
ICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAgLTQ5LDEwICs0
OSwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90CiAgICAgLCBtX3N0b3JlTmFtZShzdG9yZU5h
bWUpCiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICAsIG1fdW5pcXVlKHVuaXF1ZSkKKyAg
ICAsIG1fbXVsdGllbnRyeShtdWx0aWVudHJ5KQogewogfQogCi1JREJJbmRleEJhY2tlbmRJbXBs
OjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0
b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQkluZGV4QmFja2VuZEltcGw6
OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0
X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3Rv
cmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkpCiAgICAg
OiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJh
c2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKQEAg
LTYxLDYgKzYyLDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogICAgICwgbV9zdG9yZU5hbWUo
c3RvcmVOYW1lKQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCiAgICAgLCBtX3VuaXF1ZSh1bmlx
dWUpCisgICAgLCBtX211bHRpZW50cnkobXVsdGllbnRyeSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCAxOTk5MDBjMzA0ZDZmNDIz
ODYyNWRmNzJkMGZkNjI4MDA2YjEyODE3Li40MGQzMzMzNGI5NTE1NTMxYzIxMzM2MmI1OTJmOTBm
MTlhYmY3NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElt
cGwuaApAQCAtNDAsMTMgKzQwLDEzIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBv
YmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGllbnRyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5k
ZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2Vu
ZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5p
cXVlLCBtdWx0aWVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRf
dCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9y
ZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3Jl
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9i
amVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3Jl
TmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBs
KGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVCYWNrZW5kLCBuYW1lLCBzdG9y
ZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
QkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUJh
Y2tlbmQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5KSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsKIApAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgeyByZXR1cm4gbV9z
dG9yZU5hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJuIG1fdW5pcXVlOyB9Cisg
ICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSB7IHJldHVybiBtX211bHRpZW50cnk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBk
aXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzIsOCArNzMsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgotICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwg
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7Ci0gICAgSURCSW5kZXhCYWNrZW5k
SW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3Rv
cmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKTsKKyAgICBJREJJbmRl
eEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3Qg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGllbnRyeSk7CisgICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNr
aW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkpOwogCiAgICAg
c3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwg
dW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZ2V0SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCS2V5PiwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CkBAIC04OSw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RvcmVOYW1lOwogICAg
IFN0cmluZyBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKKyAgICBib29sIG1fbXVsdGll
bnRyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4IGY3ODhmZWM2NjQ1ODll
Y2M0N2YyNmIzMTNjM2Y3YjM1YjE0MmE1ZTguLmE5NGRmODI1YjVhNDI5OGU5MzBmMDgwNTI0NTRl
ZjRlZTZkMzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgc3RvcmVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGll
bnRyeSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA4Y2ZmOTFiYTlkMWFjZWQ0NTkyMzNkOTNkMDM0ZTY5YTViMjE5YWI4Li5kNTA1OTFlNDhiNjFj
ODJjODgwZjEyNDcxN2Y2MTI4MDE2Zjg3YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY2NSw3ICs2NjUsMjMgQEAgYm9v
bCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYg
Zm91bmRVbmlxdWVGbGFncykKK3N0YXRpYyBib29sIGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShj
b25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHN0b3BLZXksIGlu
dDY0X3QgaW5kZXhJZCwgdW5zaWduZWQgY2hhciBtZXRhRGF0YVR5cGUpCit7CisgICAgaWYgKCFp
dC0+aXNWYWxpZCgpIHx8IGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPj0gMCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW5kZXhNZXRhRGF0YUtleSBtZXRhRGF0YUtleTsK
KyAgICBjb25zdCBjaGFyKiBwID0gSW5kZXhNZXRhRGF0YUtleTo6ZGVjb2RlKGl0LT5rZXkoKS5i
ZWdpbigpLCBpdC0+a2V5KCkuZW5kKCksICZtZXRhRGF0YUtleSk7CisgICAgQVNTRVJUX1VOVVNF
RChwLCBwKTsKKyAgICBpZiAobWV0YURhdGFLZXkuaW5kZXhJZCgpICE9IGluZGV4SWQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0g
bWV0YURhdGFUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKwordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRz
LCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0
aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11
bHRpZW50cnlGbGFncykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJbmRl
eE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwgMCk7CiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEsIDAsIDApOwpAQCAtNjc0LDkgKzY5MCwxMSBA
QCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHko
KSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoZm91
bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChmb3VuZE11bHRpZW50cnlGbGFn
cy5pc0VtcHR5KCkpOwogCiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5j
cmVhdGVJdGVyYXRvcigpOwotICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxp
ZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7
CisgICAgaXQtPnNlZWsoc3RhcnRLZXkpOworICAgIHdoaWxlIChpdC0+aXNWYWxpZCgpICYmIGNv
bXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIq
IHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKICAgICAgICAgY29uc3QgY2hhciogbGltaXQgPSBpdC0+
a2V5KCkuZW5kKCk7CiAKQEAgLTY4OCwyNSArNzA2LDM1IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJCiAgICAgICAgIEFTU0VSVCghbWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkpOwogCiAgICAg
ICAgIFN0cmluZyBpbmRleE5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwg
aXQtPnZhbHVlKCkuZW5kKCkpOwotICAgICAgICBpdC0+bmV4dCgpOwotICAgICAgICBpZiAoIWl0
LT5pc1ZhbGlkKCkpIHsKKworICAgICAgICBpdC0+bmV4dCgpOyAvLyB1bmlxdWUgZmxhZworICAg
ICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5k
ZXhJZCwgMSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCisgICAgICAgIC8vIEZJ
WE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9yIGJvb2xzCiAgICAgICAgIGJvb2wg
aW5kZXhVbmlxdWUgPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKLSAgICAgICAgaXQtPm5leHQoKTsK
LSAgICAgICAgaWYgKCFpdC0+aXNWYWxpZCgpKSB7CisKKyAgICAgICAgaXQtPm5leHQoKTsgLy8g
a2V5UGF0aAorICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwg
c3RvcEtleSwgaW5kZXhJZCwgMikpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwg
SW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCiAg
ICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgpLmJlZ2luKCks
IGl0LT52YWx1ZSgpLmVuZCgpKTsKIAorICAgICAgICBpdC0+bmV4dCgpOyAvLyBbb3B0aW9uYWxd
IG11bHRpZW50cnkgZmxhZworICAgICAgICBib29sIGluZGV4TXVsdGllbnRyeSA9IGZhbHNlOwor
ICAgICAgICBpZiAoY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgpLCBzdG9wS2V5LCBp
bmRleElkLCAzKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNvZGUvZGVjb2RlIGZ1
bmN0aW9ucyBmb3IgYm9vbHMKKyAgICAgICAgICAgIGluZGV4TXVsdGllbnRyeSA9ICppdC0+dmFs
dWUoKS5iZWdpbigpOworICAgICAgICAgICAgaXQtPm5leHQoKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGZvdW5kSWRzLmFwcGVuZChpbmRleElkKTsKICAgICAgICAgZm91bmROYW1lcy5hcHBlbmQo
aW5kZXhOYW1lKTsKICAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQoa2V5UGF0aCk7CiAgICAg
ICAgIGZvdW5kVW5pcXVlRmxhZ3MuYXBwZW5kKGluZGV4VW5pcXVlKTsKKyAgICAgICAgZm91bmRN
dWx0aWVudHJ5RmxhZ3MuYXBwZW5kKGluZGV4TXVsdGllbnRyeSk7CiAgICAgfQogfQogCkBAIC03
MjYsNyArNzU0LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJZChMZXZlbERCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAgICByZXR1cm4gaW5kZXhJ
ZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGludDY0X3QmIGluZGV4SWQpCiti
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpZW50cnksIGludDY0X3QmIGlu
ZGV4SWQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsKICAgICBpbmRleElk
ID0gZ2V0TmV3SW5kZXhJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCk7CkBAIC03MzYsNiArNzY0LDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmUKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVu
Y29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAwKTsKICAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4gdW5pcXVlS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDEpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXlQYXRoS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIGluZGV4SWQsIDIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtdWx0aWVudHJ5S2V5
ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIDMpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlv
bi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CiAgICAgaWYgKCFvaykgewpAQCAtNzU1LDYgKzc4NCwx
MiBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCisgICAgb2sgPSBwdXRJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIG11bHRpZW50
cnlLZXksIGlzTXVsdGllbnRyeSk7CisgICAgaWYgKCFvaykgeworICAgICAgICBMT0dfRVJST1Io
IkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBkYjI0ZTUxYTIwMGYzY2E4NWM3NjBlOTBl
OTIzYjZkMmQxNDMxYWFhLi4wNmY3NTg2NDE0NTUxNDlmMmE0YTQxNmMxMzY0YWY5OGI3ZjA5ZGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUu
aApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5k
ZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MpOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgaXNVbmlxdWUsIGludDY0X3QmIGluZGV4SWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRl
eGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50
NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9y
PGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUlu
ZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011
bHRpZW50cnksIGludDY0X3QmIGluZGV4SWQpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRl
eChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkKTsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElE
QktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwg
Ym9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJ
ZGVudGlmaWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNw
cAppbmRleCAyMGY0NWFiNWY5YTRmZDU0YmU1MTcwMTFkZTY5ZjUyYjczNGVjNzI2Li41MTUyNjY4
ZjI0OWYxMzVmNWM0MTZlZTk3N2Y2MTY0OTc0OGM5OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTgxLDYgKzgxLDcgQEAKIC8vICAgICA8ZGF0
YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMD4gPT4gdXRm
MTYgaW5kZXggbmFtZSBbSW5kZXhNZXRhRGF0YUtleV0KIC8vICAgICA8ZGF0YWJhc2UgaWQsIDAs
IDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMT4gPT4gYXJlIGluZGV4IGtleXMg
dW5pcXVlIFtJbmRleE1ldGFEYXRhS2V5XQogLy8gICAgIDxkYXRhYmFzZSBpZCwgMCwgMCwgMTAw
LCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCAyPiA9PiB1dGYxNiBrZXkgcGF0aCBbSW5kZXhN
ZXRhRGF0YUtleV0KKy8vICAgICA8ZGF0YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3Jl
IGlkLCBpbmRleCBpZCwgMz4gPT4gaXMgaW5kZXggbXVsdGllbnRyeSBbSW5kZXhNZXRhRGF0YUtl
eV0KIC8vCiAvLwogLy8gT3RoZXIgb2JqZWN0IHN0b3JlIGFuZCBpbmRleCBtZXRhLWRhdGE6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDEyNGEwMjNmZjdh
OWJmMmVkYjM0Mzk2MGEyZWEyODMzZmNjZWU1NGUuLjRhYzU0NzgyMjcyYjFiZWRiMzUyODU3NGZh
OTMyOTE3ZDhiNTlhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUu
Y3BwCkBAIC0xNTgsNyArMTU4LDEwIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgYm9v
bCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdldCgidW5pcXVlIiwgdW5pcXVlKTsKIAot
ICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9iYWNrZW5kLT5j
cmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOworICAgIGJvb2wgbXVsdGllbnRyeSA9IGZhbHNlOworICAgIG9wdGlvbnMuZ2V0KCJt
dWx0aWVudHJ5IiwgbXVsdGllbnRyeSk7CisKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5p
cXVlLCBtdWx0aWVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NF
UlQoIWluZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNob3Vs
ZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCiAgICAgaWYg
KCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBjZDBmNThiMmYyMWViNGVk
MDUwM2EwOWY3MDBiY2Y4MmE0ZTVmODY3Li4wMDJiOTk1MGFlYWQzYWY3OWFhMmViYzYxNzhhNTAz
NGMwN2M0YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3Rv
cmUsIGludAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
K1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG5h
bWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RS
QU5TSUVOVF9FUlI7CkBAIC00MDcsNyArNDA3LDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnMK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZElt
cGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLmdl
dCgpLCBtX2RhdGFiYXNlSWQsIHRoaXMsIG5hbWUsIG1fbmFtZSwga2V5UGF0aCwgdW5pcXVlKTsK
KyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJ
bXBsOjpjcmVhdGUobV9iYWNraW5nU3RvcmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgdGhpcywgbmFt
ZSwgbV9uYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpZW50cnkpOwogICAgIEFTU0VSVChpbmRl
eC0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAgLTQyOCw3ICs0MjgsNyBAQCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgoY29ucwogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNh
Y3Rpb24pCiB7CiAgICAgaW50NjRfdCBpZDsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tp
bmdTdG9yZS0+Y3JlYXRlSW5kZXgob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmUtPmlkKCksIGluZGV4LT5uYW1lKCksIGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51bmlxdWUo
KSwgaWQpKSB7CisgICAgaWYgKCFvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlu
ZGV4KG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+
bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBpbmRleC0+dW5pcXVlKCksIGluZGV4LT5tdWx0aWVu
dHJ5KCksIGlkKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTUxOCwxNCArNTE4LDE2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6bG9hZEluZGV4ZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGtleVBhdGhzOwogICAgIFZlY3Rvcjxib29sPiB1bmlxdWVGbGFnczsKLSAg
ICBtX2JhY2tpbmdTdG9yZS0+Z2V0SW5kZXhlcyhtX2RhdGFiYXNlSWQsIG1faWQsIGlkcywgbmFt
ZXMsIGtleVBhdGhzLCB1bmlxdWVGbGFncyk7CisgICAgVmVjdG9yPGJvb2w+IG11bHRpZW50cnlG
bGFnczsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0SW5kZXhlcyhtX2RhdGFiYXNlSWQsIG1faWQs
IGlkcywgbmFtZXMsIGtleVBhdGhzLCB1bmlxdWVGbGFncywgbXVsdGllbnRyeUZsYWdzKTsKIAog
ICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJUKGtleVBh
dGhzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQodW5pcXVlRmxhZ3Muc2l6ZSgp
ID09IGlkcy5zaXplKCkpOworICAgIEFTU0VSVChtdWx0aWVudHJ5RmxhZ3Muc2l6ZSgpID09IGlk
cy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZHMuc2l6ZSgpOyBpKysp
Ci0gICAgICAgIG1faW5kZXhlcy5zZXQobmFtZXNbaV0sIElEQkluZGV4QmFja2VuZEltcGw6OmNy
ZWF0ZShtX2JhY2tpbmdTdG9yZS5nZXQoKSwgbV9kYXRhYmFzZUlkLCB0aGlzLCBpZHNbaV0sIG5h
bWVzW2ldLCBtX25hbWUsIGtleVBhdGhzW2ldLCB1bmlxdWVGbGFnc1tpXSkpOworICAgICAgICBt
X2luZGV4ZXMuc2V0KG5hbWVzW2ldLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9iYWNr
aW5nU3RvcmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgdGhpcywgaWRzW2ldLCBuYW1lc1tpXSwgbV9u
YW1lLCBrZXlQYXRoc1tpXSwgdW5pcXVlRmxhZ3NbaV0sIG11bHRpZW50cnlGbGFnc1tpXSkpOwog
fQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmgKaW5kZXggNTdkOTMxMzFlMzY2ZjEyZWJlMjJhMWZlNDA0MzM2YTZkMmIyYzdmNS4uZDIxYzgx
ODRkMmQ2MzgyN2VkMThiOGUwYTc2Njk5NDk5OTI4YzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlLmgKaW5kZXggNDA0ZGM0Y2IxMDgzOGMzNTU5NmQyYjI2Y2NhZjk3MzRhMjkxNjIxYi4u
NzlkNGJkNjJkMDg0OGY3ODlhM2FhNDg4MzViM2QwMjI1YzIyZDZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkluZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRl
eC5oCmluZGV4IDNjMDdhNTAxY2ExYmYxNWRhNzEyMzg3MGU4ODcwZGJjMjk2NTkzYzguLjU4OTFm
NmFkMzk5MjE1MjJjNmE5NDU2YjM0Zjc5ZTlmYzI0OGVjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAtNjEsNiArNjEsMTEgQEAgcHVibGljOgog
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3QgV2ViSURC
S2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoY29uc3Qg
V2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCAxNTJkZmM5MzRmZTlmMDIzNWQwNGZlMzAx
MTgwNGFmODZhOGNjZmUyLi4wNTM1NDkwNDUxMWE5NWQ4MDcwZTE2Y2M2YjUyNGUxZTc3MDU0MGRl
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0
b3JlLmgKQEAgLTcwLDcgKzcwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHV0KGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUs
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5k
ZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQorICAg
IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgorICAgIHZpcnR1YWwg
V2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIHJldHVybiBj
cmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIGZhbHNlLCB0cmFuc2FjdGlvbiwgZWMp
OworICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGllbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikK
ICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5jcHAKaW5kZXggNTU2YzliNmM0YjlhZTJmNGZiMTVjNjE3YTU3ZGFmZGZlMjVkYzVh
Yi4uMDgyZWRlMWU1OTk2OGVlNzNkMGU0NDIzMzRhMTI4NjNmNjE0YWY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAt
NzUsNiArNzUsMTEgQEAgYm9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6dW5pcXVlKCkKICAgICBy
ZXR1cm4gbV93ZWJJREJJbmRleC0+dW5pcXVlKCk7CiB9CiAKK2Jvb2wgSURCSW5kZXhCYWNrZW5k
UHJveHk6Om11bHRpZW50cnkoKQoreworICAgIHJldHVybiBtX3dlYklEQkluZGV4LT5tdWx0aWVu
dHJ5KCk7Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRy
YW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94
eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCmluZGV4IGI2MzY0MGZhYzQ4MTk3Y2ZiYjNk
M2VkYmQyYzY3MTgyNGQyYTdhNmMuLjcyN2UzN2YxOGExM2RlM2Q2MTA4ZGQyYjliMmFhZDBkZDYz
YjBkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFj
a2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNr
ZW5kUHJveHkuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RvcmVOYW1lKCk7CiAgICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpOwogICAgIHZpcnR1YWwg
Ym9vbCB1bmlxdWUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGllbnRyeSgpOwogCiAgICAgdmly
dHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggN2M4NTNlOWI0YmRjYzRjNGNlNGI3ZDBjNmMzODI3YjQ4NzI4NDE3ZS4uNzBjMDRlZjI4MDc0
OWNjMDllZDAwZTZjZWNlYjg3ZDU2OTJiZjk3ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApAQCAtMTA2
LDEyICsxMDYsMTIgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y2xlYXIoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHIKICAgICBtX3dlYklEQk9iamVj
dFN0b3JlLT5jbGVhcihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCi1QYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJl
IGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAogICAgIC8v
IGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMu
CiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0
aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKLSAgICBP
d25QdHI8V2ViSURCSW5kZXg+IGluZGV4ID0gYWRvcHRQdHIobV93ZWJJREJPYmplY3RTdG9yZS0+
Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0
V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpKTsKKyAgICBPd25QdHI8V2ViSURCSW5kZXg+IGluZGV4
ID0gYWRvcHRQdHIobV93ZWJJREJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0
aCwgdW5pcXVlLCBtdWx0aWVudHJ5LCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNh
Y3Rpb24oKSwgZWMpKTsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gMDsKICAgICBy
ZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleC5yZWxlYXNlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmgKaW5kZXggY2IwZWUzMjg4YjkwMTFkZTNkOTQyYzcwOGJhOTQyMmRmZGUxYjQyNy4u
MmQ2MmYwYTk1ZTlmNDMwY2ZhNjVmNWIwNTA5NWJjNmNlNDI4OGI5YyAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5o
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNh
bGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aWVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRl
eEltcGwuY3BwCmluZGV4IDIyMGQ1ZTQxNjM2OGZlOGViOWNkMmNiMjIyYTUwNzhiMDk3OWNiNDku
LjQ5M2NiNGFkNzhmMTE1NmI5NmEzM2Q5YmFhNmQ0MzMyNTEzNjY1ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtNjgsNiArNjgsMTEg
QEAgYm9vbCBXZWJJREJJbmRleEltcGw6OnVuaXF1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFj
a2VuZC0+dW5pcXVlKCk7CiB9CiAKK2Jvb2wgV2ViSURCSW5kZXhJbXBsOjptdWx0aWVudHJ5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aWVudHJ5KCk7Cit9CisKIHZvaWQg
V2ViSURCSW5kZXhJbXBsOjpvcGVuT2JqZWN0Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBr
ZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBtX2JhY2tlbmQtPm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlv
biwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNh
Y3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKaW5kZXggYjA0N2MyZjg1OTZm
ZTFmZjBhYmIwZTM5MjQ4MTc3OGJjNzcxOTBlOC4uNzA4ZWY4Mzg3MGQyMmY5NWJhYzA4NDVjODc3
MjExOGQzOGU2YzVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCSW5kZXhJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5k
ZXhJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IHN0b3JlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleVBhdGgoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIG11
bHRpZW50cnkoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuT2JqZWN0Q3Vyc29yKGNv
bnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxs
YmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsgCiAg
ICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNzk5Zjk0YjkzZjhlZmNk
ZTZkMzhhOTIyM2IxNzZhY2Q5NzBhMTMxMC4uNTVlMzdiMjVhYWJlZTJkNTIyZmU4NDljNmM0ZDQx
NjgzZDY3ZGY2MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC04Nyw5ICs4Nyw5IEBAIHZvaWQgV2ViSURCT2JqZWN0
U3RvcmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURC
VHJhbnNhCiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIoSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAotV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3Jl
SW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJ
bmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSgpLCBlYyk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1
bmlxdWUsIG11bHRpZW50cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCBmMTA5M2VkNWJjNTQw
NGUyYjcyYTMyY2QxZTZlZDhhZGQ3OTEzNzdjLi44ODRhMDdmMGY3NTgzZTc0NzcxOGI2MmZkOWZj
YTk2NzU4MjU2MmJhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaApAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURCQ2FsbGJhY2tzKiwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVh
cihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKIAotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklE
QlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIC8vIEZJWE1FOiBSZW1vdmUg
b25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgorICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgZmFsc2Us
IHRyYW5zYWN0aW9uLCBlYyk7IH0KKyAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpZW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117082</attachid>
            <date>2011-11-29 17:33:22 -0800</date>
            <delta_ts>2011-11-30 09:13:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73232-20111129173321.patch</filename>
            <type>text/plain</type>
            <size>59416</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxOTRiMjkwNWQwNDll
OGQ1MjZlMmRmYzMyMmY5Mjc4ZDg1NzQzZS4uMTMyZWI3OWE4ZGI5NDJiOTY1ZTBhNDUyM2E4NzAy
ZDE5ZjNhZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTExLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtdWx0aWVudHJ5IGZsYWcgaXMgdXNlZCB3aGVu
IHBvcHVsYXRpbmcgaW5kZXhlcywgZWl0aGVyIHdoZW4gdGhlIGluZGV4CisgICAgICAgIGlzIGNy
ZWF0ZWQgb24gYW4gZXhpc3Rpbmcgc3RvcmUgb3IgYXMgbmV3IHZhbHVlcyBhcmUgYWRkZWQgdG8g
dGhlIHN0b3JlLgorICAgICAgICBQZXIgdGhlIHNwZWMgdGhlIHNlbWFudGljcyBhcmU6IGlmIHRo
ZSBmbGFnIGlzIHNldCBhbmQgdGhlIGluZGV4IGtleSBpcworICAgICAgICBjYWxjdWxhdGVkIHRv
IGJlIGFuIGFycmF5LCBlYWNoIG1lbWJlciBvZiB0aGUgYXJyYXkgaXMgdXNlZCBhcyBhbiBpbmRl
eCBrZXkKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQmFja2luZ1N0
b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om11bHRpZW50cnkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaWRsOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tl
bmRJbXBsOjptdWx0aWVudHJ5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja0luZGV4QW5kTWV0YURhdGFLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJM
ZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2Fk
SW5kZXhlcyk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6
CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwog
MjAxMS0xMS0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgV2ViRGV2VG9vbHNGcm9u
dGVuZENsaWVudDo6c2VuZEZyb250ZW5kTG9hZGVkIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmOTg0NWU1Y2UzODUxODk2NTJiOTk2MWViNTM4ODI3MzdhYzI0MWE1Li4zZWRk
MjM5YWVhMTY0ZDkxYmQyZGM2NmUyZDIyOTQ5ZTdjMmY0OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTI5ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCSW5kZXgg
bXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgdGhlIG11bHRpZW50cnkgSURCSW5kZXggZmxhZyB0byB0aGUgV2ViS2l0
IEFQSS4gQSB2ZXJzaW9uIG9mIHRoZQorICAgICAgICBjcmVhdGVJbmRleCgpIG1ldGhvZCB3aXRo
b3V0IHRoaXMgZmxhZyBpcyByZXRhaW5lZCB1bnRpbCBhbGwgY2FsbGVycworICAgICAgICBhcmUg
dXBkYXRlZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJJbmRleC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJJbmRleDo6bXVsdGllbnRyeSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6Om11bHRpZW50cnkpOgorICAgICAgICAqIHNy
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkluZGV4SW1wbDo6bXVsdGllbnRyeSk6CisgICAgICAgICogc3JjL1dlYklEQklu
ZGV4SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorCiAyMDExLTExLTI1ICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENocm9t
aXVtIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjYxZTIzYThjY2Q3
NDQ0NGE4M2Q1ZGE1MzdlZmM5NzY2OGE3NzBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJCYWNraW5nU3RvcmUuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2
aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+
JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+
JiBmb3VuZFVuaXF1ZUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5kZXhJ
ZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlG
bGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aWVudHJ5LCBpbnQ2NF90JiBp
bmRleElkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlSW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAppbmRleCAyYWYxODA1M2QwMzZkZWZl
MjVhZTQwNjJhOTk1MGJlZDYyZTVmYTgyLi4wYTZiNGIzZmFiM2JjZmYxZmJiMTI5MzE4MWFhZWJm
MGM2NDAzNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdFN0b3JlLmdldCgpOyB9CiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQorICAgIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGllbnRyeSgpOyB9CiAKICAgICAvLyBGSVhNRTogVHJ5
IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
MCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmluZGV4IDUxZWQ2NGExMTI3
ZGE1MDUwMDE3OTkwOTM0ODJmOTgyYzFhMGRiYTAuLjk5ZTM4MmZjYWIzN2NmMzEzNjc0MGNkMWI1
NzJlYjQ1ZTg3OTdlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC0zMiw2
ICszMiw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElE
Qk9iamVjdFN0b3JlIG9iamVjdFN0b3JlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGllbnRyeTsKIAogICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA1MTI1NjQzZDQ4MDYyMTJjODFjMzYwNDIwZWNhYTNkZDBjNTNiOWU2Li5hMzI5OGI1
Mjc0ZDYzMjBjM2Q1ZmYxZTA1YWEwZjM1OWQwYmVlOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVO
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkp
CiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2Vu
ZCkKQEAgLTQ5LDEwICs0OSwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90CiAgICAgLCBtX3N0
b3JlTmFtZShzdG9yZU5hbWUpCiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICAsIG1fdW5p
cXVlKHVuaXF1ZSkKKyAgICAsIG1fbXVsdGllbnRyeShtdWx0aWVudHJ5KQogewogfQogCi1JREJJ
bmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQklu
ZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpZW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2Rh
dGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0
b3JlQmFja2VuZCkKQEAgLTYxLDYgKzYyLDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5k
ZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogICAg
ICwgbV9zdG9yZU5hbWUoc3RvcmVOYW1lKQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCiAgICAg
LCBtX3VuaXF1ZSh1bmlxdWUpCisgICAgLCBtX211bHRpZW50cnkobXVsdGllbnRyeSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCAx
OTk5MDBjMzA0ZDZmNDIzODYyNWRmNzJkMGZkNjI4MDA2YjEyODE3Li40MGQzMzMzNGI5NTE1NTMx
YzIxMzM2MmI1OTJmOTBmMTlhYmY3NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4QmFja2VuZEltcGwuaApAQCAtNDAsMTMgKzQwLDEzIEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0
U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5n
U3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFt
ZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aWVudHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJ
bmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVCYWNr
ZW5kLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUJhY2tlbmQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlLCBt
dWx0aWVudHJ5KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsK
IApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1l
KCkgeyByZXR1cm4gbV9zdG9yZU5hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkg
eyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJu
IG1fdW5pcXVlOyB9CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSB7IHJldHVybiBtX211
bHRpZW50cnk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzIsOCArNzMs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQkluZGV4QmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7Ci0gICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSk7CisgICAgSURCSW5kZXhCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
c3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
ZW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPik7CkBAIC04OSw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3RvcmVOYW1lOwogICAgIFN0cmluZyBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKKyAg
ICBib29sIG1fbXVsdGllbnRyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGY3ODhmZWM2NjQ1ODllY2M0N2YyNmIzMTNjM2Y3YjM1YjE0MmE1ZTguLmE5NGRmODI1YjVhNDI5
OGU5MzBmMDgwNTI0NTRlZjRlZTZkMzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGtleVBhdGgoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgbXVsdGllbnRyeSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRj
Li44YTZmMmZjMzFmMGNmNjAwYzQ3N2MxNzNlZWM0YWExNWJlM2E0ZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY2NSw3
ICs2NjUsMjMgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmb3JFYWNoT2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMs
IFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncykKK3N0YXRpYyBib29sIGNoZWNrSW5kZXhB
bmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIHN0b3BLZXksIGludDY0X3QgaW5kZXhJZCwgdW5zaWduZWQgY2hhciBtZXRhRGF0YVR5cGUp
Cit7CisgICAgaWYgKCFpdC0+aXNWYWxpZCgpIHx8IGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3Rv
cEtleSkgPj0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW5kZXhNZXRhRGF0YUtl
eSBtZXRhRGF0YUtleTsKKyAgICBjb25zdCBjaGFyKiBwID0gSW5kZXhNZXRhRGF0YUtleTo6ZGVj
b2RlKGl0LT5rZXkoKS5iZWdpbigpLCBpdC0+a2V5KCkuZW5kKCksICZtZXRhRGF0YUtleSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChwLCBwKTsKKyAgICBpZiAobWV0YURhdGFLZXkuaW5kZXhJZCgpICE9
IGluZGV4SWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobWV0YURhdGFLZXkubWV0
YURhdGFUeXBlKCkgIT0gbWV0YURhdGFUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKKwordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRl
eGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50
NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9y
PGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
c3RhcnRLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgMCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBJbmRleE1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEsIDAsIDApOwpAQCAt
Njc0LDkgKzY5MCwxMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogICAgIEFTU0VSVChmb3Vu
ZE5hbWVzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQoZm91bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChmb3Vu
ZE11bHRpZW50cnlGbGFncy5pc0VtcHR5KCkpOwogCiAgICAgT3duUHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwotICAgIGZvciAoaXQtPnNlZWsoc3RhcnRL
ZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAw
OyBpdC0+bmV4dCgpKSB7CisgICAgaXQtPnNlZWsoc3RhcnRLZXkpOworICAgIHdoaWxlIChpdC0+
aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwKSB7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKICAgICAgICAgY29uc3QgY2hh
ciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CiAKQEAgLTY4OCwyNSArNzA2LDM1IEBAIHZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgICAgIEFTU0VSVCghbWV0YURhdGFLZXkubWV0YURhdGFU
eXBlKCkpOwogCiAgICAgICAgIFN0cmluZyBpbmRleE5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZh
bHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwotICAgICAgICBpdC0+bmV4dCgpOwot
ICAgICAgICBpZiAoIWl0LT5pc1ZhbGlkKCkpIHsKKworICAgICAgICBpdC0+bmV4dCgpOyAvLyB1
bmlxdWUgZmxhZworICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQo
KSwgc3RvcEtleSwgaW5kZXhJZCwgMSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJu
YWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9yIGJvb2xz
CiAgICAgICAgIGJvb2wgaW5kZXhVbmlxdWUgPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKLSAgICAg
ICAgaXQtPm5leHQoKTsKLSAgICAgICAgaWYgKCFpdC0+aXNWYWxpZCgpKSB7CisKKyAgICAgICAg
aXQtPm5leHQoKTsgLy8ga2V5UGF0aAorICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0
YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMikpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCiAgICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAorICAgICAgICBpdC0+bmV4dCgp
OyAvLyBbb3B0aW9uYWxdIG11bHRpZW50cnkgZmxhZworICAgICAgICBib29sIGluZGV4TXVsdGll
bnRyeSA9IGZhbHNlOworICAgICAgICBpZiAoY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0Lmdl
dCgpLCBzdG9wS2V5LCBpbmRleElkLCAzKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBl
bmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMKKyAgICAgICAgICAgIGluZGV4TXVsdGll
bnRyeSA9ICppdC0+dmFsdWUoKS5iZWdpbigpOworICAgICAgICAgICAgaXQtPm5leHQoKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGZvdW5kSWRzLmFwcGVuZChpbmRleElkKTsKICAgICAgICAgZm91
bmROYW1lcy5hcHBlbmQoaW5kZXhOYW1lKTsKICAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQo
a2V5UGF0aCk7CiAgICAgICAgIGZvdW5kVW5pcXVlRmxhZ3MuYXBwZW5kKGluZGV4VW5pcXVlKTsK
KyAgICAgICAgZm91bmRNdWx0aWVudHJ5RmxhZ3MuYXBwZW5kKGluZGV4TXVsdGllbnRyeSk7CiAg
ICAgfQogfQogCkBAIC03MjYsNyArNzU0LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJ
ZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAg
ICByZXR1cm4gaW5kZXhJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGludDY0
X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpZW50
cnksIGludDY0X3QmIGluZGV4SWQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9u
KTsKICAgICBpbmRleElkID0gZ2V0TmV3SW5kZXhJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQo
KSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CkBAIC03MzYsNiArNzY0LDcgQEAgYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmUKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IEluZGV4
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAw
KTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdW5pcXVlS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDEpOwogICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBrZXlQYXRoS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBtdWx0aWVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIDMpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CiAgICAgaWYgKCFvaykgewpA
QCAtNzU1LDYgKzc4NCwxMiBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlu
ZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgb2sgPSBwdXRJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24u
Z2V0KCksIG11bHRpZW50cnlLZXksIGlzTXVsdGllbnRyeSk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBkYjI0ZTUxYTIw
MGYzY2E4NWM3NjBlOTBlOTIzYjZkMmQxNDMxYWFhLi4wNmY3NTg2NDE0NTUxNDlmMmE0YTQxNmMx
MzY0YWY5OGI3ZjA5ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5p
cXVlRmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGludDY0X3QmIGluZGV4SWQpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncyk7CisgICAgdmlydHVh
bCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1Vu
aXF1ZSwgYm9vbCBpc011bHRpZW50cnksIGludDY0X3QmIGluZGV4SWQpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVj
b3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciop
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJM
ZXZlbERCQ29kaW5nLmNwcAppbmRleCAxY2NhYzFlZDk2ZmVjNTBkNDU2ODgyZDc4NThmZjkyYjA2
NzMzMDUxLi5mNzRjMmM3MmEwOTgxYmExOGYxZTZmYmI3YzM2MGFiYzBmYzJkM2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTgxLDYgKzgxLDcg
QEAKIC8vICAgICA8ZGF0YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRl
eCBpZCwgMD4gPT4gdXRmMTYgaW5kZXggbmFtZSBbSW5kZXhNZXRhRGF0YUtleV0KIC8vICAgICA8
ZGF0YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMT4gPT4g
YXJlIGluZGV4IGtleXMgdW5pcXVlIFtJbmRleE1ldGFEYXRhS2V5XQogLy8gICAgIDxkYXRhYmFz
ZSBpZCwgMCwgMCwgMTAwLCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCAyPiA9PiB1dGYxNiBr
ZXkgcGF0aCBbSW5kZXhNZXRhRGF0YUtleV0KKy8vICAgICA8ZGF0YWJhc2UgaWQsIDAsIDAsIDEw
MCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMz4gPT4gaXMgaW5kZXggbXVsdGllbnRyeSBb
SW5kZXhNZXRhRGF0YUtleV0KIC8vCiAvLwogLy8gT3RoZXIgb2JqZWN0IHN0b3JlIGFuZCBpbmRl
eCBtZXRhLWRhdGE6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmlu
ZGV4IDEyNGEwMjNmZjdhOWJmMmVkYjM0Mzk2MGEyZWEyODMzZmNjZWU1NGUuLmNmZWExNTNjOWQ1
Y2U3MDM0NTI5OGMwNDk5MGI5YWY3MWFhYjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xNTgsNyArMTU4LDEyIEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdldCgidW5pcXVl
IiwgdW5pcXVlKTsKIAotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4
ID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGJvb2wgbXVsdGllbnRyeSA9IGZhbHNlOworICAg
IG9wdGlvbnMuZ2V0KCJtdWx0aWVudHJ5IiwgbXVsdGllbnRyeSk7CisKKyAgICAvLyBGSVhNRTog
V2hlbiBBcnJheS10eXBlIGtleVBhdGhzIGFyZSBzdXBwb3J0ZWQsIHRocm93IGV4Y2VwdGlvbiBp
ZiBrZXlQYXRoIGlzIEFycmF5IGFuZCBtdWx0aWVudHJ5IGlzIHRydWUuCisKKyAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgo
bmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQg
YW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZp
Y2UgdmVyc2EuCiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCBjZDBmNThiMmYyMWViNGVkMDUwM2EwOWY3MDBiY2Y4MmE0ZTVmODY3Li42Y2Q4NDYxYWYxMzRk
NTBmNzYzZWMxZGU5YWZlNGZmMmQ0ODAyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTI0MiwxMCArMjQyLDIy
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UiwgIk9uZSBvZiB0aGUgZGVyaXZlZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4
IGlzIG5vdCB2YWxpZC4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKCFpbmRleC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS5nZXQoKSwga2V5LmdldCgp
KSkgeyAvLyBTbyBwcm9ibGVtIGlzIHRoYXQgaWYga2V5KCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9s
ZCBrZXkgZm9yIHRoaXMgcmVjb3JkIGluIHRoaXMgaW5kZXgsIHRoZW4gd2UncmUgbm90IHJlYWxs
eSAqYWRkaW5nIGl0KiwganVzdCB1cGRhdGluZyBpdC4uLgorCisgICAgICAgIGlmICgoIWluZGV4
LT5tdWx0aWVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkK
KyAgICAgICAgICAgICYmICFpbmRleC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS5nZXQoKSwg
a2V5LmdldCgpKSkgewogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlIsICJPbmUg
b2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZvciBhbiBpbmRleCBkb2VzIG5v
dCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4iKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KKworICAgICAgIGlmIChpbmRleC0+bXVsdGllbnRyeSgpICYmIGlu
ZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5OjpBcnJheVR5cGUpIHsKKyAgICAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCBpbmRleEtleS0+YXJyYXkoKS5zaXplKCk7ICsraikgeworICAgICAg
ICAgICAgICAgIGlmICghaW5kZXgtPmFkZGluZ0tleUFsbG93ZWQoaW5kZXhLZXktPmFycmF5KClb
al0uZ2V0KCksIGtleS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5v
bkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09O
U1RSQUlOVF9FUlIsICJPbmUgb2YgdGhlIGRlcml2ZWQgKGZyb20gYSBrZXlQYXRoKSBrZXlzIGZv
ciBhbiBpbmRleCBkb2VzIG5vdCBzYXRpc2Z5IGl0cyB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4i
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpbmRleEtleXMuYXBwZW5kKGluZGV4S2V5
LnJlbGVhc2UoKSk7CiAgICAgfQogCkBAIC0yNjgsMTAgKzI4MCwxMSBAQCB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPAogCiAgICAgaW50IGkgPSAwOwogICAgIGZvciAoSW5kZXhNYXA6Oml0ZXJhdG9y
IGl0ID0gb2JqZWN0U3RvcmUtPm1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBvYmplY3RTdG9yZS0+
bV9pbmRleGVzLmVuZCgpOyArK2l0LCArK2kpIHsKLSAgICAgICAgaWYgKCFpdC0+c2Vjb25kLT5o
YXNWYWxpZElkKCkpCisgICAgICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiYgaW5kZXgg
PSBpdC0+c2Vjb25kOworICAgICAgICBpZiAoIWluZGV4LT5oYXNWYWxpZElkKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsgLy8gVGhlIGluZGV4IG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLCBidXQg
ZG9lcyBub3QgZXhpc3QgaW4gdGhlIGRhdGFiYXNlIHlldC4KIAotICAgICAgICBpZiAoIW9iamVj
dFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0
b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpdC0+c2Vjb25kLT5pZCgpLCBy
ZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgeworICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlSW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5tX2RhdGFi
YXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgcmVjb3JkSWRlbnRpZmllci5n
ZXQoKSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVj
aWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVy
cm9ycy4KICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBk
YXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dCgpOwpAQCAtMjgwLDExICsyOTMsMjYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogICAg
ICAgICBpZiAoIWluZGV4S2V5c1tpXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBp
ZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+cHV0SW5kZXhEYXRhRm9yUmVjb3JkKG9i
amVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpdC0+c2Vjb25kLT5p
ZCgpLCAqaW5kZXhLZXlzW2ldLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3Qg
aGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgotICAgICAgICAgICAg
Y2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3Jh
Z2UuIikpOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGluZGV4S2V5ID0gaW5kZXhLZXlzW2ldOwor
CisgICAgICAgIGlmICghaW5kZXgtPm11bHRpZW50cnkoKSB8fCBpbmRleEtleS0+dHlwZSgpICE9
IElEQktleTo6QXJyYXlUeXBlKSB7CisgICAgICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2Jh
Y2tpbmdTdG9yZS0+cHV0SW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNl
SWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgKmluZGV4S2V5LCByZWNvcmRJZGVu
dGlmaWVyLmdldCgpKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBE
YXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0
ZWQgdG8gSS9PIGVycm9ycy4KKyAgICAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
IkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7CisgICAgICAgICAgICAg
ICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGluZGV4LT5tdWx0
aWVudHJ5KCkpOworICAgICAgICAgICAgQVNTRVJUKGluZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5
OjpBcnJheVR5cGUpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBpbmRleEtl
eS0+YXJyYXkoKS5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIGlmICghb2JqZWN0U3Rv
cmUtPm1fYmFja2luZ1N0b3JlLT5wdXRJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1f
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCAqaW5kZXhLZXktPmFy
cmF5KClbal0sIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhh
dmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KKyAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxl
IHN0b3JhZ2UuIikpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzUzLDQ2ICszODEsNTMgQEAgdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHQKIG5hbWVzcGFjZSB7CiBjbGFzcyBQb3B1bGF0ZUluZGV4Q2FsbGJhY2sg
OiBwdWJsaWMgSURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrIHsKIHB1
YmxpYzoKLSAgICBQb3B1bGF0ZUluZGV4Q2FsbGJhY2soSURCQmFja2luZ1N0b3JlJiBiYWNraW5n
U3RvcmUsIGNvbnN0IFN0cmluZyYgaW5kZXhLZXlQYXRoLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQorICAgIFBvcHVsYXRlSW5kZXhD
YWxsYmFjayhJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4g
aW5kZXgpCiAgICAgICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQotICAgICAgICAs
IG1faW5kZXhLZXlQYXRoKGluZGV4S2V5UGF0aCkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0
YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKLSAgICAg
ICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKKyAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAgIHsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2soY29uc3QgSURCQmFja2luZ1N0b3Jl
OjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBvYmplY3RWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUodmFs
dWUpOwotICAgICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGZldGNoS2V5RnJvbUtleVBh
dGgob2JqZWN0VmFsdWUuZ2V0KCksIG1faW5kZXhLZXlQYXRoKTsKKyAgICAgICAgUmVmUHRyPElE
QktleT4gaW5kZXhLZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKG9iamVjdFZhbHVlLmdldCgpLCBt
X2luZGV4LT5rZXlQYXRoKCkpOwogCiAgICAgICAgIGlmICghaW5kZXhLZXkpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS5wdXRJbmRleERhdGFG
b3JSZWNvcmQobV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCwgKmluZGV4
S2V5LCByZWNvcmRJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAg
ICAgICBpZiAoIW1faW5kZXgtPm11bHRpZW50cnkoKSB8fCBpbmRleEtleS0+dHlwZSgpICE9IElE
QktleTo6QXJyYXlUeXBlKSB7CisgICAgICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLnB1dElu
ZGV4RGF0YUZvclJlY29yZChtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleC0+
aWQoKSwgKmluZGV4S2V5LCByZWNvcmRJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV9pbmRleC0+
bXVsdGllbnRyeSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IElE
QktleTo6QXJyYXlUeXBlKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5k
ZXhLZXktPmFycmF5KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fYmFj
a2luZ1N0b3JlLnB1dEluZGV4RGF0YUZvclJlY29yZChtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3Rv
cmVJZCwgbV9pbmRleC0+aWQoKSwgKmluZGV4S2V5LT5hcnJheSgpW2ldLCByZWNvcmRJZGVudGlm
aWVyKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBJ
REJCYWNraW5nU3RvcmUmIG1fYmFja2luZ1N0b3JlOwotICAgIGNvbnN0IFN0cmluZyYgbV9pbmRl
eEtleVBhdGg7CiAgICAgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgaW50NjRfdCBtX29iamVj
dFN0b3JlSWQ7Ci0gICAgaW50NjRfdCBtX2luZGV4SWQ7CisgICAgUmVmUHRyPElEQkluZGV4QmFj
a2VuZEltcGw+IG1faW5kZXg7CiB9OwogfQogCi1ib29sIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OnBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IFN0cmluZyYgaW5kZXhLZXlQYXRoKQorYm9vbCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpw
b3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bXBsPiBpbmRleCkKIHsKLSAgICBQb3B1bGF0ZUluZGV4Q2FsbGJhY2sgY2FsbGJhY2soYmFja2lu
Z1N0b3JlLCBpbmRleEtleVBhdGgsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQp
OworICAgIFBvcHVsYXRlSW5kZXhDYWxsYmFjayBjYWxsYmFjayhiYWNraW5nU3RvcmUsIGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZS5mb3JF
YWNoT2JqZWN0U3RvcmVSZWNvcmQoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2sp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKQEAgLTQwNyw3ICs0NDIsNyBAQCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXgoY29ucwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUo
bV9iYWNraW5nU3RvcmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgdGhpcywgbmFtZSwgbV9uYW1lLCBr
ZXlQYXRoLCB1bmlxdWUpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9
IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2JhY2tpbmdTdG9yZS5nZXQoKSwgbV9kYXRh
YmFzZUlkLCB0aGlzLCBuYW1lLCBtX25hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGllbnRyeSk7
CiAgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7CiAKICAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwpAQCAtNDI4LDE0ICs0NjMs
MTQgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnMKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y3JlYXRlSW5kZXhJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewogICAgIGludDY0X3QgaWQ7Ci0gICAgaWYgKCFv
YmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KG9iamVjdFN0b3JlLT5tX2Rh
dGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0
aCgpLCBpbmRleC0+dW5pcXVlKCksIGlkKSkgeworICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFj
a2luZ1N0b3JlLT5jcmVhdGVJbmRleChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RT
dG9yZS0+aWQoKSwgaW5kZXgtPm5hbWUoKSwgaW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1
ZSgpLCBpbmRleC0+bXVsdGllbnRyeSgpLCBpZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFi
b3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpbmRleC0+c2V0SWQoaWQpOwog
Ci0gICAgaWYgKCFwb3B1bGF0ZUluZGV4KCpvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUsIG9i
amVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5tX2lkLCBpZCwgaW5kZXgtPmtl
eVBhdGgoKSkpIHsKKyAgICBpZiAoIXBvcHVsYXRlSW5kZXgoKm9iamVjdFN0b3JlLT5tX2JhY2tp
bmdTdG9yZSwgb2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPm1faWQsIGlu
ZGV4KSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTUxOCwxNCArNTUzLDE2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6bG9hZEluZGV4ZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIFZlY3RvcjxT
dHJpbmc+IGtleVBhdGhzOwogICAgIFZlY3Rvcjxib29sPiB1bmlxdWVGbGFnczsKLSAgICBtX2Jh
Y2tpbmdTdG9yZS0+Z2V0SW5kZXhlcyhtX2RhdGFiYXNlSWQsIG1faWQsIGlkcywgbmFtZXMsIGtl
eVBhdGhzLCB1bmlxdWVGbGFncyk7CisgICAgVmVjdG9yPGJvb2w+IG11bHRpZW50cnlGbGFnczsK
KyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0SW5kZXhlcyhtX2RhdGFiYXNlSWQsIG1faWQsIGlkcywg
bmFtZXMsIGtleVBhdGhzLCB1bmlxdWVGbGFncywgbXVsdGllbnRyeUZsYWdzKTsKIAogICAgIEFT
U0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJUKGtleVBhdGhzLnNp
emUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQodW5pcXVlRmxhZ3Muc2l6ZSgpID09IGlk
cy5zaXplKCkpOworICAgIEFTU0VSVChtdWx0aWVudHJ5RmxhZ3Muc2l6ZSgpID09IGlkcy5zaXpl
KCkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpZHMuc2l6ZSgpOyBpKyspCi0gICAg
ICAgIG1faW5kZXhlcy5zZXQobmFtZXNbaV0sIElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZSht
X2JhY2tpbmdTdG9yZS5nZXQoKSwgbV9kYXRhYmFzZUlkLCB0aGlzLCBpZHNbaV0sIG5hbWVzW2ld
LCBtX25hbWUsIGtleVBhdGhzW2ldLCB1bmlxdWVGbGFnc1tpXSkpOworICAgICAgICBtX2luZGV4
ZXMuc2V0KG5hbWVzW2ldLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9iYWNraW5nU3Rv
cmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgdGhpcywgaWRzW2ldLCBuYW1lc1tpXSwgbV9uYW1lLCBr
ZXlQYXRoc1tpXSwgdW5pcXVlRmxhZ3NbaV0sIG11bHRpZW50cnlGbGFnc1tpXSkpOwogfQogCiB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBv
YmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5k
ZXggNTdkOTMxMzFlMzY2ZjEyZWJlMjJhMWZlNDA0MzM2YTZkMmIyYzdmNS4uMzgwYzdlMTQxZDY2
MTBhMDAyOGI4ODM2MGQ0NjdhNzc0ZDZlZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTcxLDEzICs3MSwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmly
dHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBzdGF0aWMgYm9v
bCBwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgaW5kZXhL
ZXlQYXRoKTsKKyAgICBzdGF0aWMgYm9vbCBwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+KTsKIAogcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBpZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCA0MDRkYzRjYjEwODM4YzM1NTk2ZDJiMjZjY2FmOTcz
NGEyOTE2MjFiLi43OWQ0YmQ2MmQwODQ4Zjc4OWEzYWE0ODgzNWIzZDAyMjVjMjJkNmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkluZGV4LmgKaW5kZXggZGVkMjg5NTllMDE1YWNmMjhkZDQ2YWI4N2E5ZDcwNDYwNThk
OTQ1Yi4uODMzYTA2YzYwY2JjYjdhM2Y1OGMzNDQ4YzViNDdlZDIxODZkZGUzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCkBAIC02MSw2ICs2MSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0
CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihj
b25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2Fs
bGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1
cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCmluZGV4IDQ3NTVmNTE0NzFlMTE3
OTU2YzcwOGZlY2IxMGU5ZWQzYjA4ZTU0ZDIuLjU3YzhjMThhMzAzNzgwNjc5ZDNmZTZjMGRjZTVm
NjY4Mjg3OGRmMDYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCT2JqZWN0U3RvcmUuaApAQCAtNzAsNyArNzAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2ViSURCS2V5
JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoV2ViSURC
Q2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4
KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpCisgICAgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCisg
ICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgZmFsc2UsIHRyYW5z
YWN0aW9uLCBlYyk7CisgICAgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKQogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCA1NTZjOWI2YzRiOWFlMmY0ZmIxNWM2MTdhNTdk
YWZkZmUyNWRjNWFiLi4wODJlZGUxZTU5OTY4ZWU3M2QwZTQ0MjMzNGExMjg2M2Y2MTRhZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJv
eHkuY3BwCkBAIC03NSw2ICs3NSwxMSBAQCBib29sIElEQkluZGV4QmFja2VuZFByb3h5Ojp1bmlx
dWUoKQogICAgIHJldHVybiBtX3dlYklEQkluZGV4LT51bmlxdWUoKTsKIH0KIAorYm9vbCBJREJJ
bmRleEJhY2tlbmRQcm94eTo6bXVsdGllbnRyeSgpCit7CisgICAgcmV0dXJuIG1fd2ViSURCSW5k
ZXgtPm11bHRpZW50cnkoKTsKK30KKwogdm9pZCBJREJJbmRleEJhY2tlbmRQcm94eTo6b3BlbkN1
cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRl
ciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKaW5kZXggYjYzNjQwZmFj
NDgxOTdjZmJiM2QzZWRiZDJjNjcxODI0ZDJhN2E2Yy4uNzI3ZTM3ZjE4YTEzZGUzZDYxMDhkZDJi
OWIyYWFkMGRkNjNiMGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCSW5kZXhCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJJbmRleEJhY2tlbmRQcm94eS5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBzdG9yZU5hbWUoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCk7CiAg
ICAgdmlydHVhbCBib29sIHVuaXF1ZSgpOworICAgIHZpcnR1YWwgYm9vbCBtdWx0aWVudHJ5KCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5LmNwcAppbmRleCA3Yzg1M2U5YjRiZGNjNGM0Y2U0YjdkMGM2YzM4MjdiNDg3Mjg0MTdlLi43
MGMwNGVmMjgwNzQ5Y2MwOWVkMDBlNmNlY2ViODdkNTY5MmJmOTdmIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
Y3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcgogICAgIG1f
d2ViSURCT2JqZWN0U3RvcmUtPmNsZWFyKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAK
LVBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
ZW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJv
eHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Q
cm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rp
b24pOwotICAgIE93blB0cjxXZWJJREJJbmRleD4gaW5kZXggPSBhZG9wdFB0cihtX3dlYklEQk9i
amVjdFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsICp0cmFuc2FjdGlv
blByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOworICAgIE93blB0cjxXZWJJREJJ
bmRleD4gaW5kZXggPSBhZG9wdFB0cihtX3dlYklEQk9iamVjdFN0b3JlLT5jcmVhdGVJbmRleChu
YW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpZW50cnksICp0cmFuc2FjdGlvblByb3h5LT5nZXRX
ZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOwogICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiBJREJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4LnJlbGVh
c2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuaAppbmRleCBjYjBlZTMyODhiOTAxMWRlM2Q5NDJjNzA4YmE5NDIy
ZGZkZTFiNDI3Li4yZDYyZjBhOTVlOWY0MzBjZmE2NWY1YjA1MDk1YmM2Y2U0Mjg4YjljIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkluZGV4SW1wbC5jcHAKaW5kZXggMjIwZDVlNDE2MzY4ZmU4ZWI5Y2QyY2IyMjJhNTA3
OGIwOTc5Y2I0OS4uNDkzY2I0YWQ3OGYxMTU2Yjk2YTMzZDliYWE2ZDQzMzI1MTM2NjVlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCkBAIC02
OCw2ICs2OCwxMSBAQCBib29sIFdlYklEQkluZGV4SW1wbDo6dW5pcXVlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsKIH0KIAorYm9vbCBXZWJJREJJbmRleEltcGw6Om11
bHRpZW50cnkoKSBjb25zdAoreworICAgIHJldHVybiBtX2JhY2tlbmQtPm11bHRpZW50cnkoKTsK
K30KKwogdm9pZCBXZWJJREJJbmRleEltcGw6Om9wZW5PYmplY3RDdXJzb3IoY29uc3QgV2ViSURC
S2V5UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdl
YkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIG1fYmFja2VuZC0+b3BlbkN1cnNvcihrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNr
cykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAppbmRleCBi
MDQ3YzJmODU5NmZlMWZmMGFiYjBlMzkyNDgxNzc4YmM3NzE5MGU4Li43MDhlZjgzODcwZDIyZjk1
YmFjMDg0NWM4NzcyMTE4ZDM4ZTZjNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJJbmRleEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJJbmRleEltcGwuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgc3RvcmVOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcga2V5
UGF0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmpl
Y3RDdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpOyAKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihjb25zdCBXZWJJREJLZXlS
YW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA3OTlm
OTRiOTNmOGVmY2RlNmQzOGE5MjIzYjE3NmFjZDk3MGExMzEwLi41NWUzN2IyNWFhYmVlMmQ1MjJm
ZTg0OWM2YzRkNDE2ODNkNjdkZjYwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTg3LDkgKzg3LDkgQEAgdm9pZCBX
ZWJJREJPYmplY3RTdG9yZUltcGw6OmNsZWFyKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBj
b25zdCBXZWJJREJUcmFuc2EKICAgICBtX29iamVjdFN0b3JlLT5jbGVhcihJREJDYWxsYmFja3NQ
cm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwogfQogCi1XZWJJREJJbmRleCogV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJJREJJbmRleCogV2ViSURC
T2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgY29uc3Qg
V2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3Rv
cmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKKyAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUs
IGtleVBhdGgsIHVuaXF1ZSwgbXVsdGllbnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IGYx
MDkzZWQ1YmM1NDA0ZTJiNzJhMzJjZDFlNmVkOGFkZDc5MTM3N2MuLjg4NGEwN2YwZjc1ODNlNzQ3
NzE4YjYyZmQ5ZmNhOTY3NTgyNTYyYmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01NCw3ICs1NCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYga2V5LCBXZWJJREJDYWxs
YmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgLy8gRklY
TUU6IFJlbW92ZSBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCisgICAgV2ViSURCSW5kZXgqIGNy
ZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5p
cXVlLCBmYWxzZSwgdHJhbnNhY3Rpb24sIGVjKTsgfQorICAgIFdlYklEQkluZGV4KiBjcmVhdGVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJik7CiAgICAgV2ViSURCSW5kZXgqIGluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDk3YWE1YTBiODFhM2ZlNjZjMDMxNWI0ZjhkN2FhN2ZjZTUwZTY1NmEuLjQy
NmNjNzFmOGVlZWFmMzc3NDY0ZTdjOWI5NzIzM2M0OGZhZWJiNjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0xMS0yOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogSW1wbGVtZW50IElEQkluZGV4IG11bHRpZW50cnkgZmVhdHVyZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMyMzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
aW5kZXgtbXVsdGllbnRyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnkuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjUgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlc291cmNlLXRyZWUtZXJyb3JzLXJlbG9hZC5odG1sIGlzIGZsYWt5LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50
eHQKaW5kZXggZmRhOGRiZjNmYjYwZTU3ODA0YjcyOTIwMDUyZDYxZWFmZmE0YjI5Yi4uMGE2MWMz
MjRmYWEwOWQzY2Y2OTgwMDdkZWRkYTIyNWJkNDViNTJhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0y
MSw3ICsyMSw5IEBAIFBBU1MgaW5kZXhPYmplY3Qub2JqZWN0U3RvcmUubmFtZSBpcyAic3RvcmVO
YW1lIgogUEFTUyAna2V5UGF0aCcgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyBpbmRleE9i
amVjdC5rZXlQYXRoIGlzICJ4IgogUEFTUyAndW5pcXVlJyBpbiBpbmRleE9iamVjdCBpcyB0cnVl
CitQQVNTICdtdWx0aWVudHJ5JyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTIGluZGV4T2Jq
ZWN0LnVuaXF1ZSBpcyBmYWxzZQorUEFTUyBpbmRleE9iamVjdC5tdWx0aWVudHJ5IGlzIGZhbHNl
CiBQQVNTICdvcGVuS2V5Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTICdvcGVu
Q3Vyc29yJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTICdnZXRLZXknIGluIGluZGV4T2Jq
ZWN0IGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2lu
ZGV4LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFz
aWNzLmh0bWwKaW5kZXggOGJhMzdmMzRhNWU4YTliNDk1MzRjMmZmOThlMTI0MTA0ZWQ3ZDAzZC4u
MzA5ZTc1ZWQzOThkZGZjYjQ1MDU2NjRkNmViYWE3ODQzZjEwYTQ3ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0bWwKQEAgLTUzLDcgKzUzLDkg
QEAgZnVuY3Rpb24gYWRkRGF0YSgpCiAgICAgc2hvdWxkQmVUcnVlKCIna2V5UGF0aCcgaW4gaW5k
ZXhPYmplY3QiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImluZGV4T2JqZWN0LmtleVBh
dGgiLCAieCIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ3VuaXF1ZScgaW4gaW5kZXhPYmplY3QiKTsK
KyAgICBzaG91bGRCZVRydWUoIidtdWx0aWVudHJ5JyBpbiBpbmRleE9iamVjdCIpOwogICAgIHNo
b3VsZEJlRmFsc2UoImluZGV4T2JqZWN0LnVuaXF1ZSIpOworICAgIHNob3VsZEJlRmFsc2UoImlu
ZGV4T2JqZWN0Lm11bHRpZW50cnkiKTsKICAgICBzaG91bGRCZVRydWUoIidvcGVuS2V5Q3Vyc29y
JyBpbiBpbmRleE9iamVjdCIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5DdXJzb3InIGluIGlu
ZGV4T2JqZWN0Iik7CiAgICAgc2hvdWxkQmVUcnVlKCInZ2V0S2V5JyBpbiBpbmRleE9iamVjdCIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGll
bnRyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1t
dWx0aWVudHJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjFiZTRkZTZhYzQxODU0MjVlYTNj
OWMxYWFkYmE0Y2Q3YTg5NDdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTgg
QEAKK1Rlc3QgZmVhdHVyZXMgb2YgSW5kZXhlZERCJ3MgbXVsdGllbnRyeSBpbmRpY2VzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKword2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVs
bCBpcyB0cnVlCit3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24g
fHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCitQQVNTIElEQlRyYW5zYWN0aW9uICE9IG51
bGwgaXMgdHJ1ZQoraW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpZW50cnknKQorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCcxJykKKworQ3JlYXRpbmcgZW1wdHkgc3Rv
cmVzIGFuZCBpbmRleGVzCit0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgdHJhbnMg
IT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KK3N0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4
Jywge211bHRpZW50cnk6IHRydWV9KQorc3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlLXVuaXF1ZScpCitzdG9yZTIuY3JlYXRlSW5kZXgoJ2luZGV4LXVuaXF1ZScsICd4Jywge211
bHRpZW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pCisKK1BvcHVsYXRpbmcgc3RvcmVzIChhbmQg
aW5kZXhlcykKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0
KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlJykucHV0KHt4OiBbNCwgNSwgNl0sIHk6ICdiJ30sICdiYXInKQorCitWZXJpZnlpbmcg
aW5kZXg6IGluZGV4Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9PTkxZKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJyku
aW5kZXgoJ2luZGV4Jykub3BlbkN1cnNvcigpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDEKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBj
dXJzb3Iua2V5IGlzIDIKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImZvbyIKK1BBU1MgY3Vy
c29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5
IGlzIDQKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVl
LnkgaXMgImIiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMg
ImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIiCitjdXJzb3IgPSBldmVudC50YXJnZXQu
cmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDYKK1BB
U1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIi
CitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4cGVjdGVkLmxlbmd0aCA9PT0g
MCBpcyB0cnVlCisKK1ZlcmlmeWluZyB1bmlxdWUgY29uc3RyYWludCBvbiBtdWx0aWVudHJ5IGlu
ZGV4Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtdW5pcXVlJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfV1JJVEUpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtdW5p
cXVlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKQordHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzQsIDUsIDZdLCB5OiAnYid9LCAnYmFy
JykKK1RoaXMgc2hvdWxkIGZhaWwgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWludCBvbiB0aGUgaW5k
ZXgsIGFuZCBmYWlsOgordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1
dCh7eDogWzIsIDVdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKQorUmVxdWVzdCBmYWlsZWQsIGFz
IGV4cGVjdGVkCitUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkCisKK0NyZWF0ZSBhbiBp
bmRleCBvbiBhIHBvcHVsYXRlZCBzdG9yZQorZGIuc2V0VmVyc2lvbignMicpCit0cmFucyA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorc3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW5ldycs
ICd4Jywge211bHRpZW50cnk6IHRydWV9KQorCitWZXJpZnlpbmcgaW5kZXg6IGluZGV4LW5ldwor
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJF
QURfT05MWSkKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmluZGV4KCdpbmRleC1u
ZXcnKS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXgg
IT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMQorUEFTUyBjdXJzb3IucHJpbWFy
eUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2ZW50
LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkg
aXMgMgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUu
eSBpcyAiYSIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBp
cyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAi
Zm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNAorUEFT
UyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYiIK
K2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQ
QVNTIGN1cnNvci5rZXkgaXMgNQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFT
UyBjdXJzb3IudmFsdWUueSBpcyAiYiIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BB
U1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNgorUEFTUyBjdXJzb3Iu
cHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYiIKK2N1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXhwZWN0ZWQubGVuZ3RoID09PSAwIGlzIHRydWUK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDM3MTkxNzhjZDQzMWNhMjFlNmY1YTViNTI5Mzg2OGMyNzFkMzA1MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRp
ZW50cnkuaHRtbApAQCAtMCwwICsxLDE0NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJbmRleGVkREIncyBtdWx0aWVu
dHJ5IGluZGljZXMuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgZXZhbEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwg
d2luZG93LndlYmtpdEluZGV4ZWREQiIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCICE9
IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cu
SURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgc2hv
dWxkQmVUcnVlKCJJREJUcmFuc2FjdGlvbiAhPSBudWxsIik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpZW50cnknKSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Iik7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNldFZl
cnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJlRGF0YWJhc2U7Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhlcyIpOworICAgIHZh
ciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAg
IHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IGFkZERhdGE7CisK
KyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUgPSBldmFsQW5kTG9n
KCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGllbnRyeTogdHJ1ZX0pIik7
CisKKyAgICBzdG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUtdW5pcXVlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZTIuY3JlYXRlSW5kZXgo
J2luZGV4LXVuaXF1ZScsICd4Jywge211bHRpZW50cnk6IHRydWUsIHVuaXF1ZTogdHJ1ZX0pIik7
Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
UG9wdWxhdGluZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOworICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5z
YWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsgdmVyaWZ5SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJhaW50KTsgfTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2co
InRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzQsIDUsIDZdLCB5OiAn
Yid9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKK30KKworZnVuY3Rpb24gdmVyaWZ5SW5kZXhlcyhpbmRleE5hbWUsIGNhbGxiYWNrKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIGluZGV4OiAiICsgaW5kZXhO
YW1lKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09OTFkpIik7CisgICAgdHJh
bnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBjYWxsYmFjazsKKworICAgIGV4cGVjdGVkID0gWworICAgICAgICB7
IGtleTogMSwgcHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMiwg
cHJpbWFyeUtleTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogMywgcHJpbWFyeUtl
eTogJ2ZvbycsIHk6ICdhJyB9LAorICAgICAgICB7IGtleTogNCwgcHJpbWFyeUtleTogJ2Jhcics
IHk6ICdiJyB9LAorICAgICAgICB7IGtleTogNSwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9
LAorICAgICAgICB7IGtleTogNiwgcHJpbWFyeUtleTogJ2JhcicsIHk6ICdiJyB9LAorICAgIF07
CisKKyAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZScpLmluZGV4KCciICsgaW5kZXhOYW1lICsgIicpLm9wZW5DdXJzb3IoKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgY3Vyc29yID0gZXZhbEFuZExv
ZygiY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBpZiAoY3Vyc29yKSB7
CisgICAgICAgICAgICBleCA9IGV4cGVjdGVkLnNoaWZ0KCk7CisgICAgICAgICAgICBzaG91bGRC
ZVRydWUoImV4ICE9IG51bGwiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5Iiwg
U3RyaW5nKGV4LmtleSkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjdXJz
b3IucHJpbWFyeUtleSIsIGV4LnByaW1hcnlLZXkpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJjdXJzb3IudmFsdWUueSIsIGV4LnkpOworICAgICAgICAgICAgY3Vyc29yLmNv
bnRpbnVlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4
cGVjdGVkLmxlbmd0aCA9PT0gMCIpOworICAgICAgICB9CisgICAgfTsKK30KKworZnVuY3Rpb24g
dmVyaWZ5VW5pcXVlQ29uc3RyYWludCgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJW
ZXJpZnlpbmcgdW5pcXVlIGNvbnN0cmFpbnQgb24gbXVsdGllbnRyeSBpbmRleCIpOworICAgIHRy
YW5zYWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0
b3JlLXVuaXF1ZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRlYnVnKCJUcmFuc2FjdGlvbiBh
Ym9ydGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIGNyZWF0ZUluZGV4T25TdG9yZVdpdGhEYXRh
KCk7CisgICAgfTsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBs
ZXRlQ2FsbGJhY2s7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDNdLCB5OiAnYSd9LCAnZm9v
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlLXVu
aXF1ZScpLnB1dCh7eDogWzQsIDUsIDZdLCB5OiAnYid9LCAnYmFyJykiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBkZWJ1ZygiVGhpcyBzaG91
bGQgZmFpbCB0aGUgdW5pcXVlbmVzcyBjb25zdHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6
Iik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdz
dG9yZS11bmlxdWUnKS5wdXQoe3g6IFsyLCA1XSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJykiKTsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IHVuZXhwZWN0ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJSZXF1ZXN0IGZhaWxlZCwgYXMg
ZXhwZWN0ZWQiKTsgfTsKK30KKworZnVuY3Rpb24gY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEo
KQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3JlYXRlIGFuIGluZGV4IG9uIGEgcG9w
dWxhdGVkIHN0b3JlIik7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lv
bignMicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKworICAgICAgICB2YXIgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAgICAgICB0cmFucy5vbmFib3J0ID0g
dW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5j
dGlvbigpIHsgdmVyaWZ5SW5kZXhlcygnaW5kZXgtbmV3JywgZG9uZSk7IH07CisKKyAgICAgICAg
c3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpIik7
CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAneCcs
IHttdWx0aWVudHJ5OiB0cnVlfSkiKTsKKyAgICB9OworfQorCit0ZXN0KCk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117204</attachid>
            <date>2011-11-30 09:13:57 -0800</date>
            <delta_ts>2011-11-30 12:39:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73232-20111130091356.patch</filename>
            <type>text/plain</type>
            <size>60178</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxOTRiMjkwNWQwNDll
OGQ1MjZlMmRmYzMyMmY5Mjc4ZDg1NzQzZS4uMTMyZWI3OWE4ZGI5NDJiOTY1ZTBhNDUyM2E4NzAy
ZDE5ZjNhZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTExLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtdWx0aWVudHJ5IGZsYWcgaXMgdXNlZCB3aGVu
IHBvcHVsYXRpbmcgaW5kZXhlcywgZWl0aGVyIHdoZW4gdGhlIGluZGV4CisgICAgICAgIGlzIGNy
ZWF0ZWQgb24gYW4gZXhpc3Rpbmcgc3RvcmUgb3IgYXMgbmV3IHZhbHVlcyBhcmUgYWRkZWQgdG8g
dGhlIHN0b3JlLgorICAgICAgICBQZXIgdGhlIHNwZWMgdGhlIHNlbWFudGljcyBhcmU6IGlmIHRo
ZSBmbGFnIGlzIHNldCBhbmQgdGhlIGluZGV4IGtleSBpcworICAgICAgICBjYWxjdWxhdGVkIHRv
IGJlIGFuIGFycmF5LCBlYWNoIG1lbWJlciBvZiB0aGUgYXJyYXkgaXMgdXNlZCBhcyBhbiBpbmRl
eCBrZXkKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQmFja2luZ1N0
b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om11bHRpZW50cnkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaWRsOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tl
bmRJbXBsOjptdWx0aWVudHJ5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja0luZGV4QW5kTWV0YURhdGFLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJM
ZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2Fk
SW5kZXhlcyk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6
CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwog
MjAxMS0xMS0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgV2ViRGV2VG9vbHNGcm9u
dGVuZENsaWVudDo6c2VuZEZyb250ZW5kTG9hZGVkIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmOTg0NWU1Y2UzODUxODk2NTJiOTk2MWViNTM4ODI3MzdhYzI0MWE1Li4zZWRk
MjM5YWVhMTY0ZDkxYmQyZGM2NmUyZDIyOTQ5ZTdjMmY0OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTI5ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCSW5kZXgg
bXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgdGhlIG11bHRpZW50cnkgSURCSW5kZXggZmxhZyB0byB0aGUgV2ViS2l0
IEFQSS4gQSB2ZXJzaW9uIG9mIHRoZQorICAgICAgICBjcmVhdGVJbmRleCgpIG1ldGhvZCB3aXRo
b3V0IHRoaXMgZmxhZyBpcyByZXRhaW5lZCB1bnRpbCBhbGwgY2FsbGVycworICAgICAgICBhcmUg
dXBkYXRlZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJJbmRleC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJJbmRleDo6bXVsdGllbnRyeSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6Om11bHRpZW50cnkpOgorICAgICAgICAqIHNy
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkluZGV4SW1wbDo6bXVsdGllbnRyeSk6CisgICAgICAgICogc3JjL1dlYklEQklu
ZGV4SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorCiAyMDExLTExLTI1ICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENocm9t
aXVtIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjYxZTIzYThjY2Q3
NDQ0NGE4M2Q1ZGE1MzdlZmM5NzY2OGE3NzBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJCYWNraW5nU3RvcmUuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2
aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+
JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+
JiBmb3VuZFVuaXF1ZUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5kZXhJ
ZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlG
bGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aWVudHJ5LCBpbnQ2NF90JiBp
bmRleElkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlSW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAppbmRleCAyYWYxODA1M2QwMzZkZWZl
MjVhZTQwNjJhOTk1MGJlZDYyZTVmYTgyLi4wYTZiNGIzZmFiM2JjZmYxZmJiMTI5MzE4MWFhZWJm
MGM2NDAzNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdFN0b3JlLmdldCgpOyB9CiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQorICAgIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGllbnRyeSgpOyB9CiAKICAgICAvLyBGSVhNRTogVHJ5
IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
MCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmluZGV4IDUxZWQ2NGExMTI3
ZGE1MDUwMDE3OTkwOTM0ODJmOTgyYzFhMGRiYTAuLjk5ZTM4MmZjYWIzN2NmMzEzNjc0MGNkMWI1
NzJlYjQ1ZTg3OTdlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC0zMiw2
ICszMiw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElE
Qk9iamVjdFN0b3JlIG9iamVjdFN0b3JlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGllbnRyeTsKIAogICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA1MTI1NjQzZDQ4MDYyMTJjODFjMzYwNDIwZWNhYTNkZDBjNTNiOWU2Li5hMzI5OGI1
Mjc0ZDYzMjBjM2Q1ZmYxZTA1YWEwZjM1OWQwYmVlOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVO
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkp
CiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2Vu
ZCkKQEAgLTQ5LDEwICs0OSwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90CiAgICAgLCBtX3N0
b3JlTmFtZShzdG9yZU5hbWUpCiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICAsIG1fdW5p
cXVlKHVuaXF1ZSkKKyAgICAsIG1fbXVsdGllbnRyeShtdWx0aWVudHJ5KQogewogfQogCi1JREJJ
bmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQklu
ZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpZW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2Rh
dGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0
b3JlQmFja2VuZCkKQEAgLTYxLDYgKzYyLDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5k
ZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogICAg
ICwgbV9zdG9yZU5hbWUoc3RvcmVOYW1lKQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCiAgICAg
LCBtX3VuaXF1ZSh1bmlxdWUpCisgICAgLCBtX211bHRpZW50cnkobXVsdGllbnRyeSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCAx
OTk5MDBjMzA0ZDZmNDIzODYyNWRmNzJkMGZkNjI4MDA2YjEyODE3Li40MGQzMzMzNGI5NTE1NTMx
YzIxMzM2MmI1OTJmOTBmMTlhYmY3NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4QmFja2VuZEltcGwuaApAQCAtNDAsMTMgKzQwLDEzIEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0
U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5n
U3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFt
ZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aWVudHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJ
bmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVCYWNr
ZW5kLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUJhY2tlbmQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlLCBt
dWx0aWVudHJ5KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsK
IApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1l
KCkgeyByZXR1cm4gbV9zdG9yZU5hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkg
eyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJu
IG1fdW5pcXVlOyB9CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSB7IHJldHVybiBtX211
bHRpZW50cnk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzIsOCArNzMs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQkluZGV4QmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7Ci0gICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSk7CisgICAgSURCSW5kZXhCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
c3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
ZW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPik7CkBAIC04OSw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3RvcmVOYW1lOwogICAgIFN0cmluZyBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKKyAg
ICBib29sIG1fbXVsdGllbnRyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGY3ODhmZWM2NjQ1ODllY2M0N2YyNmIzMTNjM2Y3YjM1YjE0MmE1ZTguLmE5NGRmODI1YjVhNDI5
OGU5MzBmMDgwNTI0NTRlZjRlZTZkMzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGtleVBhdGgoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgbXVsdGllbnRyeSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRj
Li44YTZmMmZjMzFmMGNmNjAwYzQ3N2MxNzNlZWM0YWExNWJlM2E0ZGQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY2NSw3
ICs2NjUsMjMgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmb3JFYWNoT2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBW
ZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMs
IFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncykKK3N0YXRpYyBib29sIGNoZWNrSW5kZXhB
bmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWN0b3I8Y2hh
cj4mIHN0b3BLZXksIGludDY0X3QgaW5kZXhJZCwgdW5zaWduZWQgY2hhciBtZXRhRGF0YVR5cGUp
Cit7CisgICAgaWYgKCFpdC0+aXNWYWxpZCgpIHx8IGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3Rv
cEtleSkgPj0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW5kZXhNZXRhRGF0YUtl
eSBtZXRhRGF0YUtleTsKKyAgICBjb25zdCBjaGFyKiBwID0gSW5kZXhNZXRhRGF0YUtleTo6ZGVj
b2RlKGl0LT5rZXkoKS5iZWdpbigpLCBpdC0+a2V5KCkuZW5kKCksICZtZXRhRGF0YUtleSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChwLCBwKTsKKyAgICBpZiAobWV0YURhdGFLZXkuaW5kZXhJZCgpICE9
IGluZGV4SWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobWV0YURhdGFLZXkubWV0
YURhdGFUeXBlKCkgIT0gbWV0YURhdGFUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKKwordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRl
eGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50
NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9y
PGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncykKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
c3RhcnRLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgMCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBJbmRleE1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCArIDEsIDAsIDApOwpAQCAt
Njc0LDkgKzY5MCwxMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogICAgIEFTU0VSVChmb3Vu
ZE5hbWVzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsK
ICAgICBBU1NFUlQoZm91bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChmb3Vu
ZE11bHRpZW50cnlGbGFncy5pc0VtcHR5KCkpOwogCiAgICAgT3duUHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwotICAgIGZvciAoaXQtPnNlZWsoc3RhcnRL
ZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAw
OyBpdC0+bmV4dCgpKSB7CisgICAgaXQtPnNlZWsoc3RhcnRLZXkpOworICAgIHdoaWxlIChpdC0+
aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwKSB7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKICAgICAgICAgY29uc3QgY2hh
ciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CiAKQEAgLTY4OCwyNSArNzA2LDM1IEBAIHZvaWQg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgICAgIEFTU0VSVCghbWV0YURhdGFLZXkubWV0YURhdGFU
eXBlKCkpOwogCiAgICAgICAgIFN0cmluZyBpbmRleE5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZh
bHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwotICAgICAgICBpdC0+bmV4dCgpOwot
ICAgICAgICBpZiAoIWl0LT5pc1ZhbGlkKCkpIHsKKworICAgICAgICBpdC0+bmV4dCgpOyAvLyB1
bmlxdWUgZmxhZworICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQo
KSwgc3RvcEtleSwgaW5kZXhJZCwgMSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJu
YWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9yIGJvb2xz
CiAgICAgICAgIGJvb2wgaW5kZXhVbmlxdWUgPSAqaXQtPnZhbHVlKCkuYmVnaW4oKTsKLSAgICAg
ICAgaXQtPm5leHQoKTsKLSAgICAgICAgaWYgKCFpdC0+aXNWYWxpZCgpKSB7CisKKyAgICAgICAg
aXQtPm5leHQoKTsgLy8ga2V5UGF0aAorICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0
YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMikpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCiAgICAgICAgIFN0cmluZyBrZXlQYXRoID0gZGVjb2RlU3RyaW5nKGl0LT52
YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAorICAgICAgICBpdC0+bmV4dCgp
OyAvLyBbb3B0aW9uYWxdIG11bHRpZW50cnkgZmxhZworICAgICAgICBib29sIGluZGV4TXVsdGll
bnRyeSA9IGZhbHNlOworICAgICAgICBpZiAoY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0Lmdl
dCgpLCBzdG9wS2V5LCBpbmRleElkLCAzKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBl
bmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBmb3IgYm9vbHMKKyAgICAgICAgICAgIGluZGV4TXVsdGll
bnRyeSA9ICppdC0+dmFsdWUoKS5iZWdpbigpOworICAgICAgICAgICAgaXQtPm5leHQoKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGZvdW5kSWRzLmFwcGVuZChpbmRleElkKTsKICAgICAgICAgZm91
bmROYW1lcy5hcHBlbmQoaW5kZXhOYW1lKTsKICAgICAgICAgZm91bmRLZXlQYXRocy5hcHBlbmQo
a2V5UGF0aCk7CiAgICAgICAgIGZvdW5kVW5pcXVlRmxhZ3MuYXBwZW5kKGluZGV4VW5pcXVlKTsK
KyAgICAgICAgZm91bmRNdWx0aWVudHJ5RmxhZ3MuYXBwZW5kKGluZGV4TXVsdGllbnRyeSk7CiAg
ICAgfQogfQogCkBAIC03MjYsNyArNzU0LDcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJ
ZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAg
ICByZXR1cm4gaW5kZXhJZDsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGludDY0
X3QmIGluZGV4SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpZW50
cnksIGludDY0X3QmIGluZGV4SWQpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9u
KTsKICAgICBpbmRleElkID0gZ2V0TmV3SW5kZXhJZChtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQo
KSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCk7CkBAIC03MzYsNiArNzY0LDcgQEAgYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmUKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IEluZGV4
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCAw
KTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdW5pcXVlS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDEpOwogICAgIGNvbnN0
IFZlY3RvcjxjaGFyPiBrZXlQYXRoS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIDIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBtdWx0aWVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIDMpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CiAgICAgaWYgKCFvaykgewpA
QCAtNzU1LDYgKzc4NCwxMiBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlu
ZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgb2sgPSBwdXRJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24u
Z2V0KCksIG11bHRpZW50cnlLZXksIGlzTXVsdGllbnRyeSk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBkYjI0ZTUxYTIw
MGYzY2E4NWM3NjBlOTBlOTIzYjZkMmQxNDMxYWFhLi4wNmY3NTg2NDE0NTUxNDlmMmE0YTQxNmMx
MzY0YWY5OGI3ZjA5ZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5p
cXVlRmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGludDY0X3QmIGluZGV4SWQpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncyk7CisgICAgdmlydHVh
bCBib29sIGNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1Vu
aXF1ZSwgYm9vbCBpc011bHRpZW50cnksIGludDY0X3QmIGluZGV4SWQpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVJbmRleChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVj
b3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciop
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJM
ZXZlbERCQ29kaW5nLmNwcAppbmRleCAxY2NhYzFlZDk2ZmVjNTBkNDU2ODgyZDc4NThmZjkyYjA2
NzMzMDUxLi5mNzRjMmM3MmEwOTgxYmExOGYxZTZmYmI3YzM2MGFiYzBmYzJkM2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTgxLDYgKzgxLDcg
QEAKIC8vICAgICA8ZGF0YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRl
eCBpZCwgMD4gPT4gdXRmMTYgaW5kZXggbmFtZSBbSW5kZXhNZXRhRGF0YUtleV0KIC8vICAgICA8
ZGF0YWJhc2UgaWQsIDAsIDAsIDEwMCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMT4gPT4g
YXJlIGluZGV4IGtleXMgdW5pcXVlIFtJbmRleE1ldGFEYXRhS2V5XQogLy8gICAgIDxkYXRhYmFz
ZSBpZCwgMCwgMCwgMTAwLCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCAyPiA9PiB1dGYxNiBr
ZXkgcGF0aCBbSW5kZXhNZXRhRGF0YUtleV0KKy8vICAgICA8ZGF0YWJhc2UgaWQsIDAsIDAsIDEw
MCwgb2JqZWN0IHN0b3JlIGlkLCBpbmRleCBpZCwgMz4gPT4gaXMgaW5kZXggbXVsdGllbnRyeSBb
SW5kZXhNZXRhRGF0YUtleV0KIC8vCiAvLwogLy8gT3RoZXIgb2JqZWN0IHN0b3JlIGFuZCBpbmRl
eCBtZXRhLWRhdGE6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmlu
ZGV4IDEyNGEwMjNmZjdhOWJmMmVkYjM0Mzk2MGEyZWEyODMzZmNjZWU1NGUuLmNmZWExNTNjOWQ1
Y2U3MDM0NTI5OGMwNDk5MGI5YWY3MWFhYjhjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCT2JqZWN0U3RvcmUuY3BwCkBAIC0xNTgsNyArMTU4LDEyIEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdldCgidW5pcXVl
IiwgdW5pcXVlKTsKIAotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4
ID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGJvb2wgbXVsdGllbnRyeSA9IGZhbHNlOworICAg
IG9wdGlvbnMuZ2V0KCJtdWx0aWVudHJ5IiwgbXVsdGllbnRyeSk7CisKKyAgICAvLyBGSVhNRTog
V2hlbiBBcnJheS10eXBlIGtleVBhdGhzIGFyZSBzdXBwb3J0ZWQsIHRocm93IGV4Y2VwdGlvbiBp
ZiBrZXlQYXRoIGlzIEFycmF5IGFuZCBtdWx0aWVudHJ5IGlzIHRydWUuCisKKyAgICBSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgo
bmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQg
YW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZp
Y2UgdmVyc2EuCiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCBjZDBmNThiMmYyMWViNGVkMDUwM2EwOWY3MDBiY2Y4MmE0ZTVmODY3Li5iZDBjM2YwMDNkYWI2
MWZjN2NmODdhYjQ0NzY3YzU4YzFhYjczNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTI0MiwxMCArMjQyLDIx
IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VS
UiwgIk9uZSBvZiB0aGUgZGVyaXZlZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4
IGlzIG5vdCB2YWxpZC4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKCFpbmRleC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS5nZXQoKSwga2V5LmdldCgp
KSkgeyAvLyBTbyBwcm9ibGVtIGlzIHRoYXQgaWYga2V5KCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9s
ZCBrZXkgZm9yIHRoaXMgcmVjb3JkIGluIHRoaXMgaW5kZXgsIHRoZW4gd2UncmUgbm90IHJlYWxs
eSAqYWRkaW5nIGl0KiwganVzdCB1cGRhdGluZyBpdC4uLgorCisgICAgICAgIGlmICgoIWluZGV4
LT5tdWx0aWVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUoKSAhPSBJREJLZXk6OkFycmF5VHlwZSkg
JiYgIWluZGV4LT5hZGRpbmdLZXlBbGxvd2VkKGluZGV4S2V5LmdldCgpLCBrZXkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwgIk9uZSBvZiB0aGUgZGVyaXZl
ZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRvZXMgbm90IHNhdGlzZnkgaXRz
IHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorCisgICAgICAgaWYgKGluZGV4LT5tdWx0aWVudHJ5KCkgJiYgaW5kZXhLZXktPnR5cGUo
KSA9PSBJREJLZXk6OkFycmF5VHlwZSkgeworICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aiA8IGluZGV4S2V5LT5hcnJheSgpLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFpbmRleC0+YWRkaW5nS2V5QWxsb3dlZChpbmRleEtleS0+YXJyYXkoKVtqXS5nZXQoKSwga2V5
LmdldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUiwg
Ik9uZSBvZiB0aGUgZGVyaXZlZCAoZnJvbSBhIGtleVBhdGgpIGtleXMgZm9yIGFuIGluZGV4IGRv
ZXMgbm90IHNhdGlzZnkgaXRzIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCiAgICAgICAgIGluZGV4S2V5cy5hcHBlbmQoaW5kZXhLZXkucmVsZWFzZSgpKTsK
ICAgICB9CiAKQEAgLTI2OCwxMCArMjc5LDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAK
ICAgICBpbnQgaSA9IDA7CiAgICAgZm9yIChJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBvYmplY3RT
dG9yZS0+bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuZW5k
KCk7ICsraXQsICsraSkgewotICAgICAgICBpZiAoIWl0LT5zZWNvbmQtPmhhc1ZhbGlkSWQoKSkK
KyAgICAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+JiBpbmRleCA9IGl0LT5zZWNvbmQ7
CisgICAgICAgIGlmICghaW5kZXgtPmhhc1ZhbGlkSWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OyAvLyBUaGUgaW5kZXggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGJ1dCBkb2VzIG5vdCBleGlz
dCBpbiB0aGUgZGF0YWJhc2UgeWV0LgogCi0gICAgICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFj
a2luZ1N0b3JlLT5kZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5zZWNvbmQtPmlkKCksIHJlY29yZElkZW50aWZp
ZXIuZ2V0KCkpKSB7CisgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5k
ZWxldGVJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmUtPmlkKCksIGluZGV4LT5pZCgpLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9l
cyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxl
IHN0b3JhZ2UuIikpOwogICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CkBAIC0yODAs
MTEgKzI5MiwyNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiAgICAgICAgIGlmICghaW5k
ZXhLZXlzW2ldKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghb2JqZWN0U3Rv
cmUtPm1fYmFja2luZ1N0b3JlLT5wdXRJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1f
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksIGl0LT5zZWNvbmQtPmlkKCksICppbmRleEtl
eXNbaV0sIHJlY29yZElkZW50aWZpZXIuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
VGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9y
IGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCi0gICAgICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7Ci0gICAg
ICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBpbmRleEtleXNbaV07CisKKyAgICAgICAgaWYg
KCFpbmRleC0+bXVsdGllbnRyeSgpIHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJh
eVR5cGUpIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5w
dXRJbmRleERhdGFGb3JSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmUtPmlkKCksIGluZGV4LT5pZCgpLCAqaW5kZXhLZXksIHJlY29yZElkZW50aWZpZXIuZ2V0KCkp
KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBJbmRleGVkIERhdGFiYXNlIHNwZWNp
ZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBjb2RlIGRlZGljYXRlZCB0byBJL08gZXJy
b3JzLgorICAgICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGlu
ZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2FjdGlv
bi0+YWJvcnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXgtPm11bHRpZW50cnkoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoaW5kZXhLZXktPnR5cGUoKSA9PSBJREJLZXk6OkFycmF5VHlwZSk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGluZGV4S2V5LT5hcnJheSgpLnNp
emUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFvYmplY3RTdG9yZS0+bV9iYWNraW5n
U3RvcmUtPnB1dEluZGV4RGF0YUZvclJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBv
YmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksICppbmRleEtleS0+YXJyYXkoKVtqXSwgcmVj
b3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRo
ZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBj
b2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7
CisgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCkBAIC0zNTMsNDYgKzM4MCw1MyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNsZWFySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dAogbmFtZXNwYWNlIHsKIGNsYXNzIFBvcHVsYXRlSW5kZXhDYWxsYmFjayA6IHB1YmxpYyBJREJC
YWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2sgewogcHVibGljOgotICAgIFBv
cHVsYXRlSW5kZXhDYWxsYmFjayhJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3Qg
U3RyaW5nJiBpbmRleEtleVBhdGgsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCisgICAgUG9wdWxhdGVJbmRleENhbGxiYWNrKElEQkJh
Y2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCkKICAgICAg
ICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgICAgICwgbV9pbmRleEtleVBh
dGgoaW5kZXhLZXlQYXRoKQogICAgICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAg
ICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQotICAgICAgICAsIG1faW5kZXhJ
ZChpbmRleElkKQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgewogICAgIH0KIAogICAg
IHZpcnR1YWwgYm9vbCBjYWxsYmFjayhjb25zdCBJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG9iamVjdFZhbHVl
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZSh2YWx1ZSk7Ci0gICAgICAg
IFJlZlB0cjxJREJLZXk+IGluZGV4S2V5ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aChvYmplY3RWYWx1
ZS5nZXQoKSwgbV9pbmRleEtleVBhdGgpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtl
eSA9IGZldGNoS2V5RnJvbUtleVBhdGgob2JqZWN0VmFsdWUuZ2V0KCksIG1faW5kZXgtPmtleVBh
dGgoKSk7CiAKICAgICAgICAgaWYgKCFpbmRleEtleSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLnB1dEluZGV4RGF0YUZvclJlY29yZChtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCAqaW5kZXhLZXksIHJlY29yZElk
ZW50aWZpZXIpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGlmICghbV9p
bmRleC0+bXVsdGllbnRyeSgpIHx8IGluZGV4S2V5LT50eXBlKCkgIT0gSURCS2V5OjpBcnJheVR5
cGUpIHsKKyAgICAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUucHV0SW5kZXhEYXRhRm9yUmVj
b3JkKG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4LT5pZCgpLCAqaW5kZXhL
ZXksIHJlY29yZElkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2luZGV4LT5tdWx0aWVudHJ5KCkp
OworICAgICAgICAgICAgQVNTRVJUKGluZGV4S2V5LT50eXBlKCkgPT0gSURCS2V5OjpBcnJheVR5
cGUpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleEtleS0+YXJyYXko
KS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUucHV0
SW5kZXhEYXRhRm9yUmVjb3JkKG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4
LT5pZCgpLCAqaW5kZXhLZXktPmFycmF5KClbaV0sIHJlY29yZElkZW50aWZpZXIpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiBwcml2YXRlOgogICAgIElEQkJhY2tpbmdTdG9y
ZSYgbV9iYWNraW5nU3RvcmU7Ci0gICAgY29uc3QgU3RyaW5nJiBtX2luZGV4S2V5UGF0aDsKICAg
ICBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKLSAg
ICBpbnQ2NF90IG1faW5kZXhJZDsKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gbV9p
bmRleDsKIH07CiB9CiAKLWJvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cG9wdWxhdGVJ
bmRleChJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBpbmRl
eEtleVBhdGgpCitib29sIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgo
SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4KQog
ewotICAgIFBvcHVsYXRlSW5kZXhDYWxsYmFjayBjYWxsYmFjayhiYWNraW5nU3RvcmUsIGluZGV4
S2V5UGF0aCwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCk7CisgICAgUG9wdWxh
dGVJbmRleENhbGxiYWNrIGNhbGxiYWNrKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgaW5kZXgpOwogICAgIGlmICghYmFja2luZ1N0b3JlLmZvckVhY2hPYmplY3RTdG9y
ZVJlY29yZChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFjaykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
IChuYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
Tl9UUkFOU0lFTlRfRVJSOwpAQCAtNDA3LDcgKzQ0MSw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChj
b25zCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJJbmRleEJhY2tl
bmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2JhY2tpbmdTdG9y
ZS5nZXQoKSwgbV9kYXRhYmFzZUlkLCB0aGlzLCBuYW1lLCBtX25hbWUsIGtleVBhdGgsIHVuaXF1
ZSk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNr
ZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLmdldCgpLCBtX2RhdGFiYXNlSWQsIHRoaXMs
IG5hbWUsIG1fbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5KTsKICAgICBBU1NFUlQo
aW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CkBAIC00MjgsMTQgKzQ2MiwxNCBAQCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXgoY29ucwogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJ
bmRleEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24pCiB7CiAgICAgaW50NjRfdCBpZDsKLSAgICBpZiAoIW9iamVjdFN0b3JlLT5t
X2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmUtPmlkKCksIGluZGV4LT5uYW1lKCksIGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51
bmlxdWUoKSwgaWQpKSB7CisgICAgaWYgKCFvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmNy
ZWF0ZUluZGV4KG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBp
bmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBpbmRleC0+dW5pcXVlKCksIGluZGV4LT5t
dWx0aWVudHJ5KCksIGlkKSkgewogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGluZGV4LT5zZXRJZChpZCk7CiAKLSAgICBpZiAoIXBv
cHVsYXRlSW5kZXgoKm9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmUtPm1f
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPm1faWQsIGlkLCBpbmRleC0+a2V5UGF0aCgpKSkgewor
ICAgIGlmICghcG9wdWxhdGVJbmRleCgqb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLCBvYmpl
Y3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+bV9pZCwgaW5kZXgpKSB7CiAgICAg
ICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE4
LDE0ICs1NTIsMTYgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhl
cygpCiAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0
aHM7CiAgICAgVmVjdG9yPGJvb2w+IHVuaXF1ZUZsYWdzOwotICAgIG1fYmFja2luZ1N0b3JlLT5n
ZXRJbmRleGVzKG1fZGF0YWJhc2VJZCwgbV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIHVuaXF1
ZUZsYWdzKTsKKyAgICBWZWN0b3I8Ym9vbD4gbXVsdGllbnRyeUZsYWdzOworICAgIG1fYmFja2lu
Z1N0b3JlLT5nZXRJbmRleGVzKG1fZGF0YWJhc2VJZCwgbV9pZCwgaWRzLCBuYW1lcywga2V5UGF0
aHMsIHVuaXF1ZUZsYWdzLCBtdWx0aWVudHJ5RmxhZ3MpOwogCiAgICAgQVNTRVJUKG5hbWVzLnNp
emUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoa2V5UGF0aHMuc2l6ZSgpID09IGlkcy5z
aXplKCkpOwogICAgIEFTU0VSVCh1bmlxdWVGbGFncy5zaXplKCkgPT0gaWRzLnNpemUoKSk7Cisg
ICAgQVNTRVJUKG11bHRpZW50cnlGbGFncy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9pbmRleGVz
LnNldChuYW1lc1tpXSwgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2luZ1N0b3Jl
LmdldCgpLCBtX2RhdGFiYXNlSWQsIHRoaXMsIGlkc1tpXSwgbmFtZXNbaV0sIG1fbmFtZSwga2V5
UGF0aHNbaV0sIHVuaXF1ZUZsYWdzW2ldKSk7CisgICAgICAgIG1faW5kZXhlcy5zZXQobmFtZXNb
aV0sIElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2JhY2tpbmdTdG9yZS5nZXQoKSwgbV9k
YXRhYmFzZUlkLCB0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBtX25hbWUsIGtleVBhdGhzW2ldLCB1
bmlxdWVGbGFnc1tpXSwgbXVsdGllbnRyeUZsYWdzW2ldKSk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6cmVtb3ZlSW5kZXhGcm9tTWFwKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCA1N2Q5MzEzMWUz
NjZmMTJlYmUyMmExZmU0MDQzMzZhNmQyYjJjN2Y1Li4zODBjN2UxNDFkNjYxMGEwMDI4Yjg4MzYw
ZDQ2N2E3NzRkNmVlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtNzEsMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5k
ZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpZW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Bl
bkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGly
ZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHN0YXRpYyBib29sIHBvcHVsYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBpbmRleEtleVBhdGgpOworICAg
IHN0YXRpYyBib29sIHBvcHVsYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlJiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4pOwogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFj
a2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDQwNGRjNGNiMTA4MzhjMzU1OTZkMmIyNmNjYWY5NzM0YTI5MTYyMWIuLjc5
ZDRiZDYyZDA4NDhmNzg5YTNhYTQ4ODM1YjNkMDIyNWMyMmQ2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJikgPSAwOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJJbmRleC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXgu
aAppbmRleCBkZWQyODk1OWUwMTVhY2YyOGRkNDZhYjg3YTlkNzA0NjA1OGQ5NDViLi44MzNhMDZj
NjBjYmNiN2EzZjU4YzM0NDhjNWI0N2VkMjE4NmRkZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKQEAgLTYxLDYgKzYxLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQorICAgIHZpcnR1YWwgYm9vbCBtdWx0aWVudHJ5KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuT2JqZWN0Q3Vyc29yKGNvbnN0IFdlYklEQktl
eVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKGNvbnN0IFdl
YklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggNDc1NWY1MTQ3MWUxMTc5NTZjNzA4ZmVjYjEw
ZTllZDNiMDhlNTRkMi4uNTdjOGMxOGEzMDM3ODA2NzlkM2ZlNmMwZGNlNWY2NjgyODc4ZGYwNiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oCkBAIC03MCw3ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1dChjb25z
dCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJJREJLZXkmLCBQdXRNb2RlLCBX
ZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVu
aXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIG9uY2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICB2aXJ0dWFsIFdl
YklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0
cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgeworICAgICAgICByZXR1cm4gY3Jl
YXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBmYWxzZSwgdHJhbnNhY3Rpb24sIGVjKTsK
KyAgICB9CisgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpZW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCiAg
ICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNr
ZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5k
UHJveHkuY3BwCmluZGV4IDU1NmM5YjZjNGI5YWUyZjRmYjE1YzYxN2E1N2RhZmRmZTI1ZGM1YWIu
LjA4MmVkZTFlNTk5NjhlZTczZDBlNDQyMzM0YTEyODYzZjYxNGFmOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKQEAgLTc1
LDYgKzc1LDExIEBAIGJvb2wgSURCSW5kZXhCYWNrZW5kUHJveHk6OnVuaXF1ZSgpCiAgICAgcmV0
dXJuIG1fd2ViSURCSW5kZXgtPnVuaXF1ZSgpOwogfQogCitib29sIElEQkluZGV4QmFja2VuZFBy
b3h5OjptdWx0aWVudHJ5KCkKK3sKKyAgICByZXR1cm4gbV93ZWJJREJJbmRleC0+bXVsdGllbnRy
eSgpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaAppbmRleCBiNjM2NDBmYWM0ODE5N2NmYmIzZDNl
ZGJkMmM2NzE4MjRkMmE3YTZjLi43MjdlMzdmMThhMTNkZTNkNjEwOGRkMmI5YjJhYWQwZGQ2M2Iw
ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2Vu
ZFByb3h5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN0
b3JlTmFtZSgpOwogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKTsKICAgICB2aXJ0dWFsIGJv
b2wgdW5pcXVlKCk7CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4
IDdjODUzZTliNGJkY2M0YzRjZTRiN2QwYzZjMzgyN2I0ODcyODQxN2UuLjcwYzA0ZWYyODA3NDlj
YzA5ZWQwMGU2Y2VjZWI4N2Q1NjkyYmY5N2YgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyCiAgICAgbV93ZWJJREJPYmplY3RT
dG9yZS0+Y2xlYXIobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0
aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVh
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1
bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBh
IHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKICAgICAvLyBh
bGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgog
ICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGlj
X2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAgT3du
UHRyPFdlYklEQkluZGV4PiBpbmRleCA9IGFkb3B0UHRyKG1fd2ViSURCT2JqZWN0U3RvcmUtPmNy
ZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCksIGVjKSk7CisgICAgT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCA9
IGFkb3B0UHRyKG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgbXVsdGllbnRyeSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0
aW9uKCksIGVjKSk7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5oCmluZGV4IGNiMGVlMzI4OGI5MDExZGUzZDk0MmM3MDhiYTk0MjJkZmRlMWI0MjcuLjJk
NjJmMGE5NWU5ZjQzMGNmYTY1ZjViMDUwOTViYzZjZTQyODhiOWMgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9u
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxs
YmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGllbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJJbmRleEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJ
bXBsLmNwcAppbmRleCAyMjBkNWU0MTYzNjhmZThlYjljZDJjYjIyMmE1MDc4YjA5NzljYjQ5Li40
OTNjYjRhZDc4ZjExNTZiOTZhMzNkOWJhYTZkNDMzMjUxMzY2NWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKQEAgLTY4LDYgKzY4LDExIEBA
IGJvb2wgV2ViSURCSW5kZXhJbXBsOjp1bmlxdWUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tl
bmQtPnVuaXF1ZSgpOwogfQogCitib29sIFdlYklEQkluZGV4SW1wbDo6bXVsdGllbnRyeSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGllbnRyeSgpOworfQorCiB2b2lkIFdl
YklEQkluZGV4SW1wbDo6b3Blbk9iamVjdEN1cnNvcihjb25zdCBXZWJJREJLZXlSYW5nZSYga2V5
UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgbV9iYWNrZW5kLT5vcGVuQ3Vyc29yKGtleVJhbmdlLCBkaXJlY3Rpb24s
IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0
aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCmluZGV4IGIwNDdjMmY4NTk2ZmUx
ZmYwYWJiMGUzOTI0ODE3NzhiYzc3MTkwZTguLjcwOGVmODM4NzBkMjJmOTViYWMwODQ1Yzg3NzIx
MThkMzhlNmM1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4
SW1wbC5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBz
dG9yZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBrZXlQYXRoKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBtdWx0
aWVudHJ5KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbk9iamVjdEN1cnNvcihjb25z
dCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgV2ViSURCQ2FsbGJh
Y2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7IAogICAg
IHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDc5OWY5NGI5M2Y4ZWZjZGU2
ZDM4YTkyMjNiMTc2YWNkOTcwYTEzMTAuLjU1ZTM3YjI1YWFiZWUyZDUyMmZlODQ5YzZjNGQ0MTY4
M2Q2N2RmNjAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtODcsOSArODcsOSBAQCB2b2lkIFdlYklEQk9iamVjdFN0
b3JlSW1wbDo6Y2xlYXIoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYklEQlRy
YW5zYQogICAgIG1fb2JqZWN0U3RvcmUtPmNsZWFyKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUo
YWRvcHRQdHIoY2FsbGJhY2tzKSksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLVdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK1dlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUlt
cGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5k
ZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UoKSwgZWMpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5p
cXVlLCBtdWx0aWVudHJ5LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UoKSwgZWMpOwogICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJl
dHVybiBuZXcgV2ViSURCSW5kZXhJbXBsKGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggZjEwOTNlZDViYzU0MDRl
MmI3MmEzMmNkMWU2ZWQ4YWRkNzkxMzc3Yy4uODg0YTA3ZjBmNzU4M2U3NDc3MThiNjJmZDlmY2E5
Njc1ODI1NjJiYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmgKQEAgLTU0LDcgKzU0LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGVs
ZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiBrZXksIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXIo
V2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJik7CiAKLSAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG9u
Y2UgY2FsbGVycyBhcmUgdXBkYXRlZC4KKyAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUm
IGVjKSB7IHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIGZhbHNlLCB0
cmFuc2FjdGlvbiwgZWMpOyB9CisgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aWVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKICAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTdhYTVhMGI4MWEzZmU2NmMwMzE1YjRmOGQ3YWE3ZmNlNTBlNjU2YS4uNDI2Y2M3MWY4ZWVlYWYz
Nzc0NjRlN2M5Yjk3MjMzYzQ4ZmFlYmI2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEx
LTI5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBJbXBsZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRl
eC1iYXNpY3MuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVu
dHJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtbXVsdGllbnRyeS5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0yNSAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVzb3VyY2Ut
dHJlZS1lcnJvcnMtcmVsb2FkLmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBmZGE4
ZGJmM2ZiNjBlNTc4MDRiNzI5MjAwNTJkNjFlYWZmYTRiMjliLi4wYTYxYzMyNGZhYTA5ZDNjZjY5
ODAwN2RlZGRhMjI1YmQ0NWI1MmE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTIxLDcgKzIxLDkgQEAg
UEFTUyBpbmRleE9iamVjdC5vYmplY3RTdG9yZS5uYW1lIGlzICJzdG9yZU5hbWUiCiBQQVNTICdr
ZXlQYXRoJyBpbiBpbmRleE9iamVjdCBpcyB0cnVlCiBQQVNTIGluZGV4T2JqZWN0LmtleVBhdGgg
aXMgIngiCiBQQVNTICd1bmlxdWUnIGluIGluZGV4T2JqZWN0IGlzIHRydWUKK1BBU1MgJ211bHRp
ZW50cnknIGluIGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgaW5kZXhPYmplY3QudW5pcXVlIGlz
IGZhbHNlCitQQVNTIGluZGV4T2JqZWN0Lm11bHRpZW50cnkgaXMgZmFsc2UKIFBBU1MgJ29wZW5L
ZXlDdXJzb3InIGluIGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgJ29wZW5DdXJzb3InIGluIGlu
ZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgJ2dldEtleScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAppbmRl
eCA4YmEzN2YzNGE1ZThhOWI0OTUzNGMyZmY5OGUxMjQxMDRlZDdkMDNkLi4zMDllNzVlZDM5OGRk
ZmNiNDUwNTY2NGQ2ZWJhYTc4NDNmMTBhNDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9pbmRleC1iYXNpY3MuaHRtbApAQCAtNTMsNyArNTMsOSBAQCBmdW5jdGlvbiBh
ZGREYXRhKCkKICAgICBzaG91bGRCZVRydWUoIidrZXlQYXRoJyBpbiBpbmRleE9iamVjdCIpOwog
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiaW5kZXhPYmplY3Qua2V5UGF0aCIsICJ4Iik7CiAg
ICAgc2hvdWxkQmVUcnVlKCIndW5pcXVlJyBpbiBpbmRleE9iamVjdCIpOworICAgIHNob3VsZEJl
VHJ1ZSgiJ211bHRpZW50cnknIGluIGluZGV4T2JqZWN0Iik7CiAgICAgc2hvdWxkQmVGYWxzZSgi
aW5kZXhPYmplY3QudW5pcXVlIik7CisgICAgc2hvdWxkQmVGYWxzZSgiaW5kZXhPYmplY3QubXVs
dGllbnRyeSIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ29wZW5LZXlDdXJzb3InIGluIGluZGV4T2Jq
ZWN0Iik7CiAgICAgc2hvdWxkQmVUcnVlKCInb3BlbkN1cnNvcicgaW4gaW5kZXhPYmplY3QiKTsK
ICAgICBzaG91bGRCZVRydWUoIidnZXRLZXknIGluIGluZGV4T2JqZWN0Iik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MjRhYzE1MWExZGQwMzU3NTk1YzRkNjAyMmE3MzhmYjI3
YjJjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9p
bmRleC1tdWx0aWVudHJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyNCBAQAorVGVzdCBmZWF0
dXJlcyBvZiBJbmRleGVkREIncyBtdWx0aWVudHJ5IGluZGljZXMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCit3aW5kb3cuaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3
aW5kb3cud2Via2l0SW5kZXhlZERCCitQQVNTIGluZGV4ZWREQiAhPSBudWxsIGlzIHRydWUKK3dp
bmRvdy5JREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Vi
a2l0SURCVHJhbnNhY3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVlCitp
bmRleGVkREIub3BlbignaW5kZXgtbXVsdGllbnRyeScpCitkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK2RiLnNldFZlcnNpb24oJzEnKQorCitDcmVhdGluZyBlbXB0eSBzdG9yZXMgYW5kIGluZGV4
ZXMKK3RyYW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0
cnVlCitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUnKQorc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGllbnRy
eTogdHJ1ZX0pCitzdG9yZTIgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykK
K3N0b3JlMi5jcmVhdGVJbmRleCgnaW5kZXgtdW5pcXVlJywgJ3gnLCB7bXVsdGllbnRyeTogdHJ1
ZSwgdW5pcXVlOiB0cnVlfSkKKworUG9wdWxhdGluZyBzdG9yZXMgKGFuZCBpbmRleGVzKQordHJh
bnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpCitGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdoYXQgd2UncmUgZXhwZWN0
aW5nCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs3LCA4LCA5XSwg
eTogJ2EnfSwgJ2ZvbycpCitOb3cgb3ZlcndyaXRlIHRoZW0gd2l0aCB3aGF0IHdlJ3JlIGV4cGVj
dGluZwordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbMSwgMiwgM10s
IHk6ICdhJ30sICdmb28nKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4
OiBbNCwgNSwgNl0sIHk6ICdiJ30sICdiYXInKQorCitWZXJpZnlpbmcgaW5kZXg6IGluZGV4Cit0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVB
RF9PTkxZKQordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgoJ2luZGV4Jyku
b3BlbkN1cnNvcigpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDEKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkg
aXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDIK
K1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMg
ImEiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1
ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImZvbyIK
K1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDQKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIiCitjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBj
dXJzb3Iua2V5IGlzIDUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vy
c29yLnZhbHVlLnkgaXMgImIiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDYKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIiCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGV4cGVjdGVkLmxlbmd0aCA9PT0gMCBpcyB0cnVlCisKK1Zl
cmlmeWluZyB1bmlxdWUgY29uc3RyYWludCBvbiBtdWx0aWVudHJ5IGluZGV4Cit0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtdW5pcXVlJ10sIElEQlRyYW5zYWN0aW9uLlJFQURf
V1JJVEUpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBb
MSwgMiwgM10sIHk6ICdhJ30sICdmb28nKQorc3VjY2VzcyEKK1JlcGxhY2UgYW4gZXhpc3Rpbmcg
cmVjb3JkIC0gdGhpcyBzaG91bGQgd29yawordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
LXVuaXF1ZScpLnB1dCh7eDogWzEsIDIsIDddLCB5OiAnYSd9LCAnZm9vJykKK3N1Y2Nlc3MhCitU
aGlzIHNob3VsZCBmYWlsIHRoZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgb24gdGhlIGluZGV4LCBh
bmQgZmFpbDoKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKS5wdXQoe3g6
IFs1LCAyXSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJykKK1JlcXVlc3QgZmFpbGVkLCBhcyBleHBl
Y3RlZAorVHJhbnNhY3Rpb24gYWJvcnRlZCBhcyBleHBlY3RlZAorCitDcmVhdGUgYW4gaW5kZXgg
b24gYSBwb3B1bGF0ZWQgc3RvcmUKK2RiLnNldFZlcnNpb24oJzInKQordHJhbnMgPSBldmVudC50
YXJnZXQucmVzdWx0CitQQVNTIHRyYW5zICE9PSBudWxsIGlzIHRydWUKK3N0b3JlID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlJykKK3N0b3JlLmNyZWF0ZUluZGV4KCdpbmRleC1uZXcnLCAneCcs
IHttdWx0aWVudHJ5OiB0cnVlfSkKKworVmVyaWZ5aW5nIGluZGV4OiBpbmRleC1uZXcKK3RyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlvbi5SRUFEX09O
TFkpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5pbmRleCgnaW5kZXgtbmV3Jyku
b3BlbkN1cnNvcigpCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDEKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkg
aXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVudC50YXJn
ZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDIK
K1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImZvbyIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMg
ImEiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1
ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDMKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImZvbyIK
K1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImEiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0
CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDQKK1BBU1MgY3Vy
c29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIiCitjdXJz
b3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBj
dXJzb3Iua2V5IGlzIDUKK1BBU1MgY3Vyc29yLnByaW1hcnlLZXkgaXMgImJhciIKK1BBU1MgY3Vy
c29yLnZhbHVlLnkgaXMgImIiCitjdXJzb3IgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIGV4
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBjdXJzb3Iua2V5IGlzIDYKK1BBU1MgY3Vyc29yLnByaW1h
cnlLZXkgaXMgImJhciIKK1BBU1MgY3Vyc29yLnZhbHVlLnkgaXMgImIiCitjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0CitQQVNTIGV4cGVjdGVkLmxlbmd0aCA9PT0gMCBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI1OWE3ZTkyNWYyNTEyMzg2ZjY0M2U1MTJjODU3YjRkYzkyZDUxZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5
Lmh0bWwKQEAgLTAsMCArMSwxNTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KworZGVzY3JpcHRpb24oIlRlc3QgZmVhdHVyZXMgb2YgSW5kZXhlZERCJ3MgbXVsdGllbnRyeSBp
bmRpY2VzLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGV2YWxBbmRMb2coIndpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRv
dy53ZWJraXRJbmRleGVkREIiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQiAhPSBudWxs
Iik7CisgICAgZXZhbEFuZExvZygid2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRy
YW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIHNob3VsZEJl
VHJ1ZSgiSURCVHJhbnNhY3Rpb24gIT0gbnVsbCIpOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImluZGV4ZWREQi5vcGVuKCdpbmRleC1tdWx0aWVudHJ5JykiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBkYiA9IGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdCIpOworCisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9u
KCcxJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gcHJlcGFyZURhdGFiYXNlOworICAgIH07
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJDcmVhdGluZyBlbXB0eSBzdG9yZXMgYW5kIGluZGV4ZXMiKTsKKyAgICB2YXIgdHJh
bnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICBzaG91
bGRCZVRydWUoInRyYW5zICE9PSBudWxsIik7CisgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zLm9uY29tcGxldGUgPSBhZGREYXRhOworCisgICAg
ZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiKTsKKworICAgIHN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgIGV2YWxBbmRMb2coInN0
b3JlLmNyZWF0ZUluZGV4KCdpbmRleCcsICd4Jywge211bHRpZW50cnk6IHRydWV9KSIpOworCisg
ICAgc3RvcmUyID0gZXZhbEFuZExvZygic3RvcmUyID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlLXVuaXF1ZScpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUyLmNyZWF0ZUluZGV4KCdpbmRl
eC11bmlxdWUnLCAneCcsIHttdWx0aWVudHJ5OiB0cnVlLCB1bmlxdWU6IHRydWV9KSIpOworfQor
CitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlBvcHVs
YXRpbmcgc3RvcmVzIChhbmQgaW5kZXhlcykiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRM
b2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7IHZl
cmlmeUluZGV4ZXMoJ2luZGV4JywgdmVyaWZ5VW5pcXVlQ29uc3RyYWludCk7IH07CisKKyAgICBk
ZWJ1ZygiRmlyc3QgdHJ5IHNvbWUga2V5cyB0aGF0IGFyZW4ndCB3aGF0IHdlJ3JlIGV4cGVjdGlu
ZyIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmUnKS5wdXQoe3g6IFs3LCA4LCA5XSwgeTogJ2EnfSwgJ2ZvbycpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgZGVidWcoIk5vdyBvdmVy
d3JpdGUgdGhlbSB3aXRoIHdoYXQgd2UncmUgZXhwZWN0aW5nIik7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzEsIDIs
IDNdLCB5OiAnYSd9LCAnZm9vJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlJykucHV0KHt4OiBbNCwgNSwgNl0sIHk6ICdiJ30sICdiYXInKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiB2ZXJpZnlJbmRleGVzKGluZGV4TmFtZSwgY2FsbGJhY2spCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJWZXJpZnlpbmcgaW5kZXg6ICIgKyBpbmRleE5hbWUpOworICAgIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfT05MWSkiKTsKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IGNhbGxiYWNrOworCisgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgIHsga2V5OiAxLCBwcmltYXJ5
S2V5OiAnZm9vJywgeTogJ2EnIH0sCisgICAgICAgIHsga2V5OiAyLCBwcmltYXJ5S2V5OiAnZm9v
JywgeTogJ2EnIH0sCisgICAgICAgIHsga2V5OiAzLCBwcmltYXJ5S2V5OiAnZm9vJywgeTogJ2En
IH0sCisgICAgICAgIHsga2V5OiA0LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCisgICAg
ICAgIHsga2V5OiA1LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCisgICAgICAgIHsga2V5
OiA2LCBwcmltYXJ5S2V5OiAnYmFyJywgeTogJ2InIH0sCisgICAgXTsKKworICAgIHZhciByZXF1
ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlJykuaW5kZXgo
JyIgKyBpbmRleE5hbWUgKyAiJykub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIGV4
ID0gZXhwZWN0ZWQuc2hpZnQoKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXggIT0gbnVs
bCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImN1cnNvci5rZXkiLCBTdHJpbmcoZXgua2V5KSk7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNvci5wcmltYXJ5S2V5Iiwg
ZXgucHJpbWFyeUtleSk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImN1cnNv
ci52YWx1ZS55IiwgZXgueSk7CisgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhwZWN0ZWQubGVuZ3RoID09
PSAwIik7CisgICAgICAgIH0KKyAgICB9OworfQorCitmdW5jdGlvbiB2ZXJpZnlVbmlxdWVDb25z
dHJhaW50KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeWluZyB1bmlxdWUg
Y29uc3RyYWludCBvbiBtdWx0aWVudHJ5IGluZGV4Iik7CisgICAgdHJhbnNhY3Rpb24gPSBldmFs
QW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUtdW5pcXVlJ10sIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgZGVidWcoIlRyYW5zYWN0aW9uIGFib3J0ZWQgYXMgZXhwZWN0
ZWQiKTsKKyAgICAgICAgY3JlYXRlSW5kZXhPblN0b3JlV2l0aERhdGEoKTsKKyAgICB9OworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUt
dW5pcXVlJykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRlYnVnKCJzdWNjZXNzISIpOworICAgICAgICBk
ZWJ1ZygiUmVwbGFjZSBhbiBleGlzdGluZyByZWNvcmQgLSB0aGlzIHNob3VsZCB3b3JrIik7Cisg
ICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3Rv
cmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgN10sIHk6ICdhJ30sICdmb28nKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVnKCJzdWNjZXNz
ISIpOworICAgICAgICAgICAgZGVidWcoIlRoaXMgc2hvdWxkIGZhaWwgdGhlIHVuaXF1ZW5lc3Mg
Y29uc3RyYWludCBvbiB0aGUgaW5kZXgsIGFuZCBmYWlsOiIpOworICAgICAgICAgICAgcmVxdWVz
dCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKS5w
dXQoe3g6IFs1LCAyXSwgeTogJ2MnfSwgJ3Nob3VsZCBmYWlsJykiKTsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBkZWJ1ZygiUmVxdWVzdCBmYWlsZWQsIGFz
IGV4cGVjdGVkIik7IH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gY3JlYXRl
SW5kZXhPblN0b3JlV2l0aERhdGEoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiQ3Jl
YXRlIGFuIGluZGV4IG9uIGEgcG9wdWxhdGVkIHN0b3JlIik7CisKKyAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignMicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKworICAgICAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOworICAg
ICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgIHRy
YW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5kZXhlcygnaW5kZXgtbmV3Jywg
ZG9uZSk7IH07CisKKyAgICAgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZScpIik7CisgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleC1uZXcnLCAneCcsIHttdWx0aWVudHJ5OiB0cnVlfSkiKTsKKyAgICB9OworfQor
Cit0ZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117249</attachid>
            <date>2011-11-30 12:39:35 -0800</date>
            <delta_ts>2011-11-30 21:22:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73232-20111130123934.patch</filename>
            <type>text/plain</type>
            <size>61107</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQxOTRiMjkwNWQwNDll
OGQ1MjZlMmRmYzMyMmY5Mjc4ZDg1NzQzZS4uMTMyZWI3OWE4ZGI5NDJiOTY1ZTBhNDUyM2E4NzAy
ZDE5ZjNhZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTExLTI5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBs
ZW1lbnQgSURCSW5kZXggbXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtdWx0aWVudHJ5IGZsYWcgaXMgdXNlZCB3aGVu
IHBvcHVsYXRpbmcgaW5kZXhlcywgZWl0aGVyIHdoZW4gdGhlIGluZGV4CisgICAgICAgIGlzIGNy
ZWF0ZWQgb24gYW4gZXhpc3Rpbmcgc3RvcmUgb3IgYXMgbmV3IHZhbHVlcyBhcmUgYWRkZWQgdG8g
dGhlIHN0b3JlLgorICAgICAgICBQZXIgdGhlIHNwZWMgdGhlIHNlbWFudGljcyBhcmU6IGlmIHRo
ZSBmbGFnIGlzIHNldCBhbmQgdGhlIGluZGV4IGtleSBpcworICAgICAgICBjYWxjdWxhdGVkIHRv
IGJlIGFuIGFycmF5LCBlYWNoIG1lbWJlciBvZiB0aGUgYXJyYXkgaXMgdXNlZCBhcyBhbiBpbmRl
eCBrZXkKKyAgICAgICAgaW5zdGVhZC4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1tdWx0aWVudHJ5Lmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCQmFja2luZ1N0
b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCSW5kZXg6Om11bHRpZW50cnkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguaWRsOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQklu
ZGV4QmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tl
bmRJbXBsOjptdWx0aWVudHJ5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZElu
dGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjaGVja0luZGV4QW5kTWV0YURhdGFLZXkpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJM
ZXZlbERCQ29kaW5nLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2Fk
SW5kZXhlcyk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6
CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwog
MjAxMS0xMS0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFdlYiBJbnNwZWN0b3I6IGdldCByaWQgb2YgV2ViRGV2VG9vbHNGcm9u
dGVuZENsaWVudDo6c2VuZEZyb250ZW5kTG9hZGVkIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmOTg0NWU1Y2UzODUxODk2NTJiOTk2MWViNTM4ODI3MzdhYzI0MWE1Li4zZWRk
MjM5YWVhMTY0ZDkxYmQyZGM2NmUyZDIyOTQ5ZTdjMmY0OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTI5ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBJbXBsZW1lbnQgSURCSW5kZXgg
bXVsdGllbnRyeSBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzIzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgdGhlIG11bHRpZW50cnkgSURCSW5kZXggZmxhZyB0byB0aGUgV2ViS2l0
IEFQSS4gQSB2ZXJzaW9uIG9mIHRoZQorICAgICAgICBjcmVhdGVJbmRleCgpIG1ldGhvZCB3aXRo
b3V0IHRoaXMgZmxhZyBpcyByZXRhaW5lZCB1bnRpbCBhbGwgY2FsbGVycworICAgICAgICBhcmUg
dXBkYXRlZC4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJJbmRleC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJJbmRleDo6bXVsdGllbnRyeSk6CisgICAgICAgICogcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6Om11bHRpZW50cnkpOgorICAgICAgICAqIHNy
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkluZGV4SW1wbDo6bXVsdGllbnRyeSk6CisgICAgICAgICogc3JjL1dlYklEQklu
ZGV4SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAg
ICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgpOgorCiAyMDExLTExLTI1ICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENocm9t
aXVtIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjYxZTIzYThjY2Q3
NDQ0NGE4M2Q1ZGE1MzdlZmM5NzY2OGE3NzBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJCYWNraW5nU3RvcmUuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2
aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJikgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+
JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+
JiBmb3VuZFVuaXF1ZUZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5kZXhJ
ZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlG
bGFncykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aWVudHJ5LCBpbnQ2NF90JiBp
bmRleElkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlSW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaAppbmRleCAyYWYxODA1M2QwMzZkZWZl
MjVhZTQwNjJhOTk1MGJlZDYyZTVmYTgyLi4wYTZiNGIzZmFiM2JjZmYxZmJiMTI5MzE4MWFhZWJm
MGM2NDAzNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5oCkBAIC01Miw2ICs1Miw3IEBA
IHB1YmxpYzoKICAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX29iamVjdFN0b3JlLmdldCgpOyB9CiAgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQogICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQorICAgIGJvb2wgbXVsdGllbnRyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGllbnRyeSgpOyB9CiAKICAgICAvLyBGSVhNRTogVHJ5
IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwg
MCwgZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCmluZGV4IDUxZWQ2NGExMTI3
ZGE1MDUwMDE3OTkwOTM0ODJmOTgyYzFhMGRiYTAuLjk5ZTM4MmZjYWIzN2NmMzEzNjc0MGNkMWI1
NzJlYjQ1ZTg3OTdlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5k
ZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguaWRsCkBAIC0zMiw2
ICszMiw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElE
Qk9iamVjdFN0b3JlIG9iamVjdFN0b3JlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGtleVBhdGg7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbXVsdGllbnRyeTsKIAogICAg
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKGluIFtPcHRpb25hbF0gSURCS2V5UmFuZ2UgcmFuZ2UsIGluIFtPcHRpb25hbF0gdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uKQogICAgICAgICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA1MTI1NjQzZDQ4MDYyMTJjODFjMzYwNDIwZWNhYTNkZDBjNTNiOWU2Li5hMzI5OGI1
Mjc0ZDYzMjBjM2Q1ZmYxZTA1YWEwZjM1OWQwYmVlOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1JREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNv
bnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNr
ZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVO
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnkp
CiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2RhdGFiYXNlSWQo
ZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3JlQmFja2Vu
ZCkKQEAgLTQ5LDEwICs0OSwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90CiAgICAgLCBtX3N0
b3JlTmFtZShzdG9yZU5hbWUpCiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICAsIG1fdW5p
cXVlKHVuaXF1ZSkKKyAgICAsIG1fbXVsdGllbnRyeShtdWx0aWVudHJ5KQogewogfQogCi1JREJJ
bmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKK0lEQklu
ZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpZW50cnkpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2Rh
dGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0
b3JlQmFja2VuZCkKQEAgLTYxLDYgKzYyLDcgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5k
ZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdAogICAg
ICwgbV9zdG9yZU5hbWUoc3RvcmVOYW1lKQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCiAgICAg
LCBtX3VuaXF1ZSh1bmlxdWUpCisgICAgLCBtX211bHRpZW50cnkobXVsdGllbnRyeSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCAx
OTk5MDBjMzA0ZDZmNDIzODYyNWRmNzJkMGZkNjI4MDA2YjEyODE3Li40MGQzMzMzNGI5NTE1NTMx
YzIxMzM2MmI1OTJmOTBmMTlhYmY3NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4QmFja2VuZEltcGwuaApAQCAtNDAsMTMgKzQwLDEzIEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwgOiBwdWJsaWMgSURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0
U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5n
U3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlQmFja2VuZCwgaWQsIG5hbWUsIHN0b3JlTmFt
ZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aWVudHJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJ
bmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVCYWNr
ZW5kLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUJhY2tlbmQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlLCBt
dWx0aWVudHJ5KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsK
IApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1l
KCkgeyByZXR1cm4gbV9zdG9yZU5hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkg
eyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJu
IG1fdW5pcXVlOyB9CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSB7IHJldHVybiBtX211
bHRpZW50cnk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzIsOCArNzMs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQkluZGV4QmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7Ci0gICAg
SURCSW5kZXhCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
KTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0X3QgZGF0
YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSk7CisgICAgSURCSW5kZXhCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
c3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
ZW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgYm9vbCBnZXRPYmplY3QsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPik7CkBAIC04OSw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3RvcmVOYW1lOwogICAgIFN0cmluZyBtX2tleVBhdGg7CiAgICAgYm9vbCBtX3VuaXF1ZTsKKyAg
ICBib29sIG1fbXVsdGllbnRyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEludGVyZmFjZS5oCmluZGV4
IGY3ODhmZWM2NjQ1ODllY2M0N2YyNmIzMTNjM2Y3YjM1YjE0MmE1ZTguLmE5NGRmODI1YjVhNDI5
OGU5MzBmMDgwNTI0NTRlZjRlZTZkMzUyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGtleVBhdGgoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgbXVsdGllbnRyeSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29y
KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRj
Li5kMmEwNmE1NWFhNDYxYjI2OTU3ZDdmM2I5NzcyOTkzN2U2OTMyMDY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTMzNSw3
ICszMzUsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9y
IGJvb2xzCisgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9y
IGJvb2xzLgogICAgICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSAqaXQtPnZhbHVlKCkuYmVnaW4o
KTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBJcyBldmljYXRibGUuCkBAIC0zNTgsNyArMzU4
LDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBb
b3B0aW9uYWxdIGhhcyBrZXkgcGF0aCAoaXMgbm90IG51bGwpCiAgICAgICAgIGlmIChjaGVja09i
amVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlk
LCA2KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9u
cyBmb3IgYm9vbHMKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5j
dGlvbnMgZm9yIGJvb2xzLgogICAgICAgICAgICAgaGFzS2V5UGF0aCA9ICppdC0+dmFsdWUoKS5i
ZWdpbigpOwogICAgICAgICAgICAgaWYgKCFoYXNLZXlQYXRoICYmICFrZXlQYXRoLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKQEAgLTY2NSw3ICs2NjUsMjMgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpm
b3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF8KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVz
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRf
dD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4m
IGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlxdWVGbGFncykKK3N0YXRpYyBi
b29sIGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBj
b25zdCBWZWN0b3I8Y2hhcj4mIHN0b3BLZXksIGludDY0X3QgaW5kZXhJZCwgdW5zaWduZWQgY2hh
ciBtZXRhRGF0YVR5cGUpCit7CisgICAgaWYgKCFpdC0+aXNWYWxpZCgpIHx8IGNvbXBhcmVLZXlz
KGl0LT5rZXkoKSwgc3RvcEtleSkgPj0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
SW5kZXhNZXRhRGF0YUtleSBtZXRhRGF0YUtleTsKKyAgICBjb25zdCBjaGFyKiBwID0gSW5kZXhN
ZXRhRGF0YUtleTo6ZGVjb2RlKGl0LT5rZXkoKS5iZWdpbigpLCBpdC0+a2V5KCkuZW5kKCksICZt
ZXRhRGF0YUtleSk7CisgICAgQVNTRVJUX1VOVVNFRChwLCBwKTsKKyAgICBpZiAobWV0YURhdGFL
ZXkuaW5kZXhJZCgpICE9IGluZGV4SWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gbWV0YURhdGFUeXBlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKwordm9pZCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1l
cywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRVbmlx
dWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpZW50cnlGbGFncykKIHsKICAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgMCwgMCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BL
ZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCAr
IDEsIDAsIDApOwpAQCAtNjc0LDkgKzY5MCwxMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQog
ICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0
aHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoZm91bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVChmb3VuZE11bHRpZW50cnlGbGFncy5pc0VtcHR5KCkpOwogCiAgICAgT3duUHRy
PExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwotICAgIGZvciAo
aXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXko
KSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CisgICAgaXQtPnNlZWsoc3RhcnRLZXkpOwor
ICAgIHdoaWxlIChpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtl
eSkgPCAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKICAg
ICAgICAgY29uc3QgY2hhciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CiAKQEAgLTY4OCwyNSAr
NzA2LDM1IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgICAgIEFTU0VSVCghbWV0YURh
dGFLZXkubWV0YURhdGFUeXBlKCkpOwogCiAgICAgICAgIFN0cmluZyBpbmRleE5hbWUgPSBkZWNv
ZGVTdHJpbmcoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwotICAgICAg
ICBpdC0+bmV4dCgpOwotICAgICAgICBpZiAoIWl0LT5pc1ZhbGlkKCkpIHsKKworICAgICAgICBp
dC0+bmV4dCgpOyAvLyB1bmlxdWUgZmxhZworICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRh
RGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMSkpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotCisgICAgICAgIC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5j
dGlvbnMgZm9yIGJvb2xzLgogICAgICAgICBib29sIGluZGV4VW5pcXVlID0gKml0LT52YWx1ZSgp
LmJlZ2luKCk7Ci0gICAgICAgIGl0LT5uZXh0KCk7Ci0gICAgICAgIGlmICghaXQtPmlzVmFsaWQo
KSkgeworCisgICAgICAgIGl0LT5uZXh0KCk7IC8vIGtleVBhdGgKKyAgICAgICAgaWYgKCFjaGVj
a0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4SWQsIDIpKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQogICAgICAgICBTdHJpbmcga2V5UGF0aCA9IGRl
Y29kZVN0cmluZyhpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKKyAg
ICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBtdWx0aWVudHJ5IGZsYWcKKyAgICAgICAg
Ym9vbCBpbmRleE11bHRpZW50cnkgPSBmYWxzZTsKKyAgICAgICAgaWYgKGNoZWNrSW5kZXhBbmRN
ZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwgaW5kZXhJZCwgMykpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBBZGQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMgZm9yIGJvb2xzLgorICAgICAg
ICAgICAgaW5kZXhNdWx0aWVudHJ5ID0gKml0LT52YWx1ZSgpLmJlZ2luKCk7CisgICAgICAgICAg
ICBpdC0+bmV4dCgpOworICAgICAgICB9CisKICAgICAgICAgZm91bmRJZHMuYXBwZW5kKGluZGV4
SWQpOwogICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChpbmRleE5hbWUpOwogICAgICAgICBmb3Vu
ZEtleVBhdGhzLmFwcGVuZChrZXlQYXRoKTsKICAgICAgICAgZm91bmRVbmlxdWVGbGFncy5hcHBl
bmQoaW5kZXhVbmlxdWUpOworICAgICAgICBmb3VuZE11bHRpZW50cnlGbGFncy5hcHBlbmQoaW5k
ZXhNdWx0aWVudHJ5KTsKICAgICB9CiB9CiAKQEAgLTcyNiw3ICs3NTQsNyBAQCBzdGF0aWMgaW50
NjRfdCBnZXROZXdJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZAogICAgIHJldHVybiBpbmRleElkOwogfQogCi1ib29sIElEQkxldmVsREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9v
bCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5kZXhJZCkKK2Jvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGlzVW5pcXVl
LCBib29sIGlzTXVsdGllbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKIHsKICAgICBBU1NFUlQobV9j
dXJyZW50VHJhbnNhY3Rpb24pOwogICAgIGluZGV4SWQgPSBnZXROZXdJbmRleElkKG1fY3VycmVu
dFRyYW5zYWN0aW9uLmdldCgpLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKTsKQEAgLTczNiw2
ICs3NjQsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBuYW1lS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIGluZGV4SWQsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB1bmlxdWVLZXkgPSBJ
bmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJ
ZCwgMSk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleVBhdGhLZXkgPSBJbmRleE1ldGFEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMik7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IG11bHRpZW50cnlLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgMyk7CiAKICAgICBib29sIG9r
ID0gcHV0U3RyaW5nKG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBuYW1lS2V5LCBuYW1lKTsK
ICAgICBpZiAoIW9rKSB7CkBAIC03NTUsNiArNzg0LDEyIEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBvayA9IHB1dEludChtX2N1
cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbXVsdGllbnRyeUtleSwgaXNNdWx0aWVudHJ5KTsKKyAg
ICBpZiAoIW9rKSB7CisgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJv
ci4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IGRiMjRlNTFhMjAwZjNjYTg1Yzc2MGU5MGU5MjNiNmQyZDE0MzFhYWEuLjA2Zjc1ODY0
MTQ1NTE0OWYyYTRhNDE2YzEzNjRhZjk4YjdmMDlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC02Myw4ICs2Myw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJh
Y2smKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRVbmlxdWVGbGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgaW50NjRfdCYgaW5k
ZXhJZCk7CisgICAgdmlydHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxT
dHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRLZXlQYXRocywgVmVjdG9y
PGJvb2w+JiBmb3VuZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGllbnRyeUZs
YWdzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGllbnRyeSwgaW50NjRfdCYgaW5kZXhJ
ZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZpcnR1YWwgYm9vbCBw
dXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVS
ZWNvcmRJZGVudGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJl
Y29yZChpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDFjY2FjMWVkOTZmZWM1MGQ0
NTY4ODJkNzg1OGZmOTJiMDY3MzMwNTEuLmY3NGMyYzcyYTA5ODFiYTE4ZjFlNmZiYjdjMzYwYWJj
MGZjMmQzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNv
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNw
cApAQCAtODEsNiArODEsNyBAQAogLy8gICAgIDxkYXRhYmFzZSBpZCwgMCwgMCwgMTAwLCBvYmpl
Y3Qgc3RvcmUgaWQsIGluZGV4IGlkLCAwPiA9PiB1dGYxNiBpbmRleCBuYW1lIFtJbmRleE1ldGFE
YXRhS2V5XQogLy8gICAgIDxkYXRhYmFzZSBpZCwgMCwgMCwgMTAwLCBvYmplY3Qgc3RvcmUgaWQs
IGluZGV4IGlkLCAxPiA9PiBhcmUgaW5kZXgga2V5cyB1bmlxdWUgW0luZGV4TWV0YURhdGFLZXld
CiAvLyAgICAgPGRhdGFiYXNlIGlkLCAwLCAwLCAxMDAsIG9iamVjdCBzdG9yZSBpZCwgaW5kZXgg
aWQsIDI+ID0+IHV0ZjE2IGtleSBwYXRoIFtJbmRleE1ldGFEYXRhS2V5XQorLy8gICAgIDxkYXRh
YmFzZSBpZCwgMCwgMCwgMTAwLCBvYmplY3Qgc3RvcmUgaWQsIGluZGV4IGlkLCAzPiA9PiBpcyBp
bmRleCBtdWx0aWVudHJ5IFtJbmRleE1ldGFEYXRhS2V5XQogLy8KIC8vCiAvLyBPdGhlciBvYmpl
Y3Qgc3RvcmUgYW5kIGluZGV4IG1ldGEtZGF0YToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJP
YmplY3RTdG9yZS5jcHAKaW5kZXggMTI0YTAyM2ZmN2E5YmYyZWRiMzQzOTYwYTJlYTI4MzNmY2Nl
ZTU0ZS4uY2ZlYTE1M2M5ZDVjZTcwMzQ1Mjk4YzA0OTkwYjlhZjcxYWFiOGM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTE1OCw3ICsxNTgsMTIgQEAg
UGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW4KICAgICBib29sIHVuaXF1ZSA9IGZhbHNlOwogICAgIG9w
dGlvbnMuZ2V0KCJ1bmlxdWUiLCB1bmlxdWUpOwogCi0gICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gaW5kZXggPSBtX2JhY2tlbmQtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CisgICAgYm9vbCBtdWx0aWVu
dHJ5ID0gZmFsc2U7CisgICAgb3B0aW9ucy5nZXQoIm11bHRpZW50cnkiLCBtdWx0aWVudHJ5KTsK
KworICAgIC8vIEZJWE1FOiBXaGVuIEFycmF5LXR5cGUga2V5UGF0aHMgYXJlIHN1cHBvcnRlZCwg
dGhyb3cgZXhjZXB0aW9uIGlmIGtleVBhdGggaXMgQXJyYXkgYW5kIG11bHRpZW50cnkgaXMgdHJ1
ZS4KKworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9iYWNr
ZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpZW50cnksIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIEFTU0VSVCghaW5kZXggIT0gIWVjKTsgLy8g
SWYgd2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2Vw
dGlvbiBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCmluZGV4IGNkMGY1OGIyZjIxZWI0ZWQwNTAzYTA5ZjcwMGJjZjgyYTRlNWY4
NjcuLmJkMGMzZjAwM2RhYjYxZmM3Y2Y4N2FiNDQ3NjdjNThjMWFiNzM2NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtMjQyLDEwICsyNDIsMjEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkg
a2V5cyBmb3IgYW4gaW5kZXggaXMgbm90IHZhbGlkLiIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAoIWluZGV4LT5hZGRpbmdLZXlBbGxvd2VkKGluZGV4S2V5
LmdldCgpLCBrZXkuZ2V0KCkpKSB7IC8vIFNvIHByb2JsZW0gaXMgdGhhdCBpZiBrZXkoKSBpcyB0
aGUgc2FtZSBhcyB0aGUgb2xkIGtleSBmb3IgdGhpcyByZWNvcmQgaW4gdGhpcyBpbmRleCwgdGhl
biB3ZSdyZSBub3QgcmVhbGx5ICphZGRpbmcgaXQqLCBqdXN0IHVwZGF0aW5nIGl0Li4uCisKKyAg
ICAgICAgaWYgKCghaW5kZXgtPm11bHRpZW50cnkoKSB8fCBpbmRleEtleS0+dHlwZSgpICE9IElE
QktleTo6QXJyYXlUeXBlKSAmJiAhaW5kZXgtPmFkZGluZ0tleUFsbG93ZWQoaW5kZXhLZXkuZ2V0
KCksIGtleS5nZXQoKSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSLCAi
T25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5cyBmb3IgYW4gaW5kZXggZG9l
cyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMuIikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICBpZiAoaW5kZXgtPm11bHRpZW50cnkoKSAm
JiBpbmRleEtleS0+dHlwZSgpID09IElEQktleTo6QXJyYXlUeXBlKSB7CisgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kZXhLZXktPmFycmF5KCkuc2l6ZSgpOyArK2opIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWluZGV4LT5hZGRpbmdLZXlBbGxvd2VkKGluZGV4S2V5LT5hcnJh
eSgpW2pdLmdldCgpLCBrZXkuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSLCAiT25lIG9mIHRoZSBkZXJpdmVkIChmcm9tIGEga2V5UGF0aCkga2V5
cyBmb3IgYW4gaW5kZXggZG9lcyBub3Qgc2F0aXNmeSBpdHMgdW5pcXVlbmVzcyByZXF1aXJlbWVu
dHMuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChpbmRl
eEtleS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMjY4LDEwICsyNzksMTEgQEAgdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjwKIAogICAgIGludCBpID0gMDsKICAgICBmb3IgKEluZGV4TWFwOjppdGVy
YXRvciBpdCA9IG9iamVjdFN0b3JlLT5tX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3Rv
cmUtPm1faW5kZXhlcy5lbmQoKTsgKytpdCwgKytpKSB7Ci0gICAgICAgIGlmICghaXQtPnNlY29u
ZC0+aGFzVmFsaWRJZCgpKQorICAgICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4mIGlu
ZGV4ID0gaXQtPnNlY29uZDsKKyAgICAgICAgaWYgKCFpbmRleC0+aGFzVmFsaWRJZCgpKQogICAg
ICAgICAgICAgY29udGludWU7IC8vIFRoZSBpbmRleCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwg
YnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBkYXRhYmFzZSB5ZXQuCiAKLSAgICAgICAgaWYgKCFv
YmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChvYmpl
Y3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPnNlY29uZC0+aWQo
KSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFvYmplY3RTdG9yZS0+
bV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChvYmplY3RTdG9yZS0+bV9k
YXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksIHJlY29yZElkZW50aWZp
ZXIuZ2V0KCkpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ug
c3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkv
TyBlcnJvcnMuCiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkVycm9yIHdyaXRp
bmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7CiAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoKTsKQEAgLTI4MCwxMSArMjkyLDI2IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAK
ICAgICAgICAgaWYgKCFpbmRleEtleXNbaV0pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCFvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPnB1dEluZGV4RGF0YUZvclJlY29y
ZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaXQtPnNlY29u
ZC0+aWQoKSwgKmluZGV4S2V5c1tpXSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSkpIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGUgSW5kZXhlZCBEYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGRvZXMg
bm90IGhhdmUgYW4gZXJyb3IgY29kZSBkZWRpY2F0ZWQgdG8gSS9PIGVycm9ycy4KLSAgICAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBz
dG9yYWdlLiIpKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBSZWZQdHI8SURCS2V5PiBpbmRleEtleSA9IGluZGV4S2V5c1tp
XTsKKworICAgICAgICBpZiAoIWluZGV4LT5tdWx0aWVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUo
KSAhPSBJREJLZXk6OkFycmF5VHlwZSkgeworICAgICAgICAgICAgaWYgKCFvYmplY3RTdG9yZS0+
bV9iYWNraW5nU3RvcmUtPnB1dEluZGV4RGF0YUZvclJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRh
YmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksICppbmRleEtleSwgcmVjb3Jk
SWRlbnRpZmllci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIEluZGV4
ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUgZGVk
aWNhdGVkIHRvIEkvTyBlcnJvcnMuCisgICAgICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9y
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9F
UlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIikpOworICAgICAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleC0+
bXVsdGllbnRyeSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleEtleS0+dHlwZSgpID09IElE
QktleTo6QXJyYXlUeXBlKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5k
ZXhLZXktPmFycmF5KCkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoIW9iamVj
dFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+cHV0SW5kZXhEYXRhRm9yUmVjb3JkKG9iamVjdFN0b3Jl
LT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgKmluZGV4S2V5
LT5hcnJheSgpW2pdLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogVGhlIEluZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5v
dCBoYXZlIGFuIGVycm9yIGNvZGUgZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCisgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0
YWJsZSBzdG9yYWdlLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM1Myw0NiArMzgwLDUzIEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0CiBuYW1lc3BhY2UgewogY2xhc3MgUG9wdWxhdGVJbmRleENhbGxi
YWNrIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayB7
CiBwdWJsaWM6Ci0gICAgUG9wdWxhdGVJbmRleENhbGxiYWNrKElEQkJhY2tpbmdTdG9yZSYgYmFj
a2luZ1N0b3JlLCBjb25zdCBTdHJpbmcmIGluZGV4S2V5UGF0aCwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKKyAgICBQb3B1bGF0ZUlu
ZGV4Q2FsbGJhY2soSURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElt
cGw+IGluZGV4KQogICAgICAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKLSAgICAg
ICAgLCBtX2luZGV4S2V5UGF0aChpbmRleEtleVBhdGgpCiAgICAgICAgICwgbV9kYXRhYmFzZUlk
KGRhdGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCi0g
ICAgICAgICwgbV9pbmRleElkKGluZGV4SWQpCisgICAgICAgICwgbV9pbmRleChpbmRleCkKICAg
ICB7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrKGNvbnN0IElEQkJhY2tpbmdT
dG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKiByZWNvcmRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gb2JqZWN0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJl
KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPElEQktleT4gaW5kZXhLZXkgPSBmZXRjaEtleUZyb21L
ZXlQYXRoKG9iamVjdFZhbHVlLmdldCgpLCBtX2luZGV4S2V5UGF0aCk7CisgICAgICAgIFJlZlB0
cjxJREJLZXk+IGluZGV4S2V5ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aChvYmplY3RWYWx1ZS5nZXQo
KSwgbV9pbmRleC0+a2V5UGF0aCgpKTsKIAogICAgICAgICBpZiAoIWluZGV4S2V5KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUucHV0SW5kZXhE
YXRhRm9yUmVjb3JkKG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsICpp
bmRleEtleSwgcmVjb3JkSWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgaWYgKCFtX2luZGV4LT5tdWx0aWVudHJ5KCkgfHwgaW5kZXhLZXktPnR5cGUoKSAh
PSBJREJLZXk6OkFycmF5VHlwZSkgeworICAgICAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS5w
dXRJbmRleERhdGFGb3JSZWNvcmQobV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5k
ZXgtPmlkKCksICppbmRleEtleSwgcmVjb3JkSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKG1faW5k
ZXgtPm11bHRpZW50cnkoKSk7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXhLZXktPnR5cGUoKSA9
PSBJREJLZXk6OkFycmF5VHlwZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4S2V5LT5hcnJheSgpLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFt
X2JhY2tpbmdTdG9yZS5wdXRJbmRleERhdGFGb3JSZWNvcmQobV9kYXRhYmFzZUlkLCBtX29iamVj
dFN0b3JlSWQsIG1faW5kZXgtPmlkKCksICppbmRleEtleS0+YXJyYXkoKVtpXSwgcmVjb3JkSWRl
bnRpZmllcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6CiAg
ICAgSURCQmFja2luZ1N0b3JlJiBtX2JhY2tpbmdTdG9yZTsKLSAgICBjb25zdCBTdHJpbmcmIG1f
aW5kZXhLZXlQYXRoOwogICAgIGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGludDY0X3QgbV9v
YmplY3RTdG9yZUlkOwotICAgIGludDY0X3QgbV9pbmRleElkOworICAgIFJlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiBtX2luZGV4OwogfTsKIH0KIAotYm9vbCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpwb3B1bGF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBTdHJpbmcmIGluZGV4S2V5UGF0aCkKK2Jvb2wgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6cG9wdWxhdGVJbmRleChJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW1wbD4gaW5kZXgpCiB7Ci0gICAgUG9wdWxhdGVJbmRleENhbGxiYWNrIGNhbGxiYWNrKGJh
Y2tpbmdTdG9yZSwgaW5kZXhLZXlQYXRoLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkKTsKKyAgICBQb3B1bGF0ZUluZGV4Q2FsbGJhY2sgY2FsbGJhY2soYmFja2luZ1N0b3JlLCBk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleCk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUu
Zm9yRWFjaE9iamVjdFN0b3JlUmVjb3JkKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGNhbGxi
YWNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CkBAIC00MDcsNyArNDQxLDcgQEAgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNyZWF0ZUluZGV4KGNvbnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3Jl
YXRlKG1fYmFja2luZ1N0b3JlLmdldCgpLCBtX2RhdGFiYXNlSWQsIHRoaXMsIG5hbWUsIG1fbmFt
ZSwga2V5UGF0aCwgdW5pcXVlKTsKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5k
ZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9iYWNraW5nU3RvcmUuZ2V0KCksIG1f
ZGF0YWJhc2VJZCwgdGhpcywgbmFtZSwgbV9uYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpZW50
cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKQEAgLTQyOCwxNCAr
NDYyLDE0IEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsKICAgICBpbnQ2NF90IGlkOwotICAgIGlm
ICghb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbmRleChvYmplY3RTdG9yZS0+
bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPm5hbWUoKSwgaW5kZXgtPmtl
eVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpZCkpIHsKKyAgICBpZiAoIW9iamVjdFN0b3JlLT5t
X2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmUtPmlkKCksIGluZGV4LT5uYW1lKCksIGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51
bmlxdWUoKSwgaW5kZXgtPm11bHRpZW50cnkoKSwgaWQpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9u
LT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaW5kZXgtPnNldElkKGlk
KTsKIAotICAgIGlmICghcG9wdWxhdGVJbmRleCgqb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3Jl
LCBvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+bV9pZCwgaWQsIGluZGV4
LT5rZXlQYXRoKCkpKSB7CisgICAgaWYgKCFwb3B1bGF0ZUluZGV4KCpvYmplY3RTdG9yZS0+bV9i
YWNraW5nU3RvcmUsIG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5tX2lk
LCBpbmRleCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01MTgsMTQgKzU1MiwxNiBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OmxvYWRJbmRleGVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAgICBWZWN0
b3I8U3RyaW5nPiBrZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gdW5pcXVlRmxhZ3M7Ci0gICAg
bV9iYWNraW5nU3RvcmUtPmdldEluZGV4ZXMobV9kYXRhYmFzZUlkLCBtX2lkLCBpZHMsIG5hbWVz
LCBrZXlQYXRocywgdW5pcXVlRmxhZ3MpOworICAgIFZlY3Rvcjxib29sPiBtdWx0aWVudHJ5Rmxh
Z3M7CisgICAgbV9iYWNraW5nU3RvcmUtPmdldEluZGV4ZXMobV9kYXRhYmFzZUlkLCBtX2lkLCBp
ZHMsIG5hbWVzLCBrZXlQYXRocywgdW5pcXVlRmxhZ3MsIG11bHRpZW50cnlGbGFncyk7CiAKICAg
ICBBU1NFUlQobmFtZXMuc2l6ZSgpID09IGlkcy5zaXplKCkpOwogICAgIEFTU0VSVChrZXlQYXRo
cy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJUKHVuaXF1ZUZsYWdzLnNpemUoKSA9
PSBpZHMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobXVsdGllbnRyeUZsYWdzLnNpemUoKSA9PSBpZHMu
c2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWRzLnNpemUoKTsgaSsrKQot
ICAgICAgICBtX2luZGV4ZXMuc2V0KG5hbWVzW2ldLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVh
dGUobV9iYWNraW5nU3RvcmUuZ2V0KCksIG1fZGF0YWJhc2VJZCwgdGhpcywgaWRzW2ldLCBuYW1l
c1tpXSwgbV9uYW1lLCBrZXlQYXRoc1tpXSwgdW5pcXVlRmxhZ3NbaV0pKTsKKyAgICAgICAgbV9p
bmRleGVzLnNldChuYW1lc1tpXSwgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2lu
Z1N0b3JlLmdldCgpLCBtX2RhdGFiYXNlSWQsIHRoaXMsIGlkc1tpXSwgbmFtZXNbaV0sIG1fbmFt
ZSwga2V5UGF0aHNbaV0sIHVuaXF1ZUZsYWdzW2ldLCBtdWx0aWVudHJ5RmxhZ3NbaV0pKTsKIH0K
IAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpyZW1vdmVJbmRleEZyb21NYXAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5o
CmluZGV4IDU3ZDkzMTMxZTM2NmYxMmViZTIyYTFmZTQwNDMzNmE2ZDJiMmM3ZjUuLjM4MGM3ZTE0
MWQ2NjEwYTAwMjhiODgzNjBkNDY3YTc3NGQ2ZWUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC03MSwxMyArNzEsMTMg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgc3RhdGlj
IGJvb2wgcG9wdWxhdGVJbmRleChJREJCYWNraW5nU3RvcmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIGlu
ZGV4S2V5UGF0aCk7CisgICAgc3RhdGljIGJvb2wgcG9wdWxhdGVJbmRleChJREJCYWNraW5nU3Rv
cmUmLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKIHByaXZhdGU6CiAgICAgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
aWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDA0ZGM0Y2IxMDgzOGMzNTU5NmQyYjI2Y2Nh
Zjk3MzRhMjkxNjIxYi4uNzlkNGJkNjJkMDg0OGY3ODlhM2FhNDg4MzViM2QwMjI1YzIyZDZkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnks
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJJbmRleC5oCmluZGV4IGRlZDI4OTU5ZTAxNWFjZjI4ZGQ0NmFiODdhOWQ3MDQ2
MDU4ZDk0NWIuLjgzM2EwNmM2MGNiY2I3YTNmNThjMzQ0OGM1YjQ3ZWQyMTg2ZGRlMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaApAQCAtNjEsNiArNjEs
MTEgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgdmlydHVhbCBib29sIG11bHRpZW50cnkoKSBj
b25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJz
b3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklE
QkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9wZW5L
ZXlDdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAppbmRleCA0NzU1ZjUxNDcx
ZTExNzk1NmM3MDhmZWNiMTBlOWVkM2IwOGU1NGQyLi41N2M4YzE4YTMwMzc4MDY3OWQzZmU2YzBk
Y2U1ZjY2ODI4NzhkZjA2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgKQEAgLTcwLDcgKzcwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcHV0KGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklE
QktleSYsIFB1dE1vZGUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNh
bGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFdl
YklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCBXZWJJREJJ
bmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKQorICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVk
LgorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIGZhbHNlLCB0
cmFuc2FjdGlvbiwgZWMpOworICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJ
bmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGllbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJF
eGNlcHRpb25Db2RlJikKICAgICB7CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKaW5kZXggNTU2YzliNmM0YjlhZTJmNGZiMTVjNjE3
YTU3ZGFmZGZlMjVkYzVhYi4uMDgyZWRlMWU1OTk2OGVlNzNkMGU0NDIzMzRhMTI4NjNmNjE0YWY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5k
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2Vu
ZFByb3h5LmNwcApAQCAtNzUsNiArNzUsMTEgQEAgYm9vbCBJREJJbmRleEJhY2tlbmRQcm94eTo6
dW5pcXVlKCkKICAgICByZXR1cm4gbV93ZWJJREJJbmRleC0+dW5pcXVlKCk7CiB9CiAKK2Jvb2wg
SURCSW5kZXhCYWNrZW5kUHJveHk6Om11bHRpZW50cnkoKQoreworICAgIHJldHVybiBtX3dlYklE
QkluZGV4LT5tdWx0aWVudHJ5KCk7Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kUHJveHk6Om9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBv
aW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCmluZGV4IGI2MzY0
MGZhYzQ4MTk3Y2ZiYjNkM2VkYmQyYzY3MTgyNGQyYTdhNmMuLjcyN2UzN2YxOGExM2RlM2Q2MTA4
ZGQyYjliMmFhZDBkZDYzYjBkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgc3RvcmVOYW1lKCk7CiAgICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgp
OwogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGllbnRy
eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJz
b3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eS5jcHAKaW5kZXggN2M4NTNlOWI0YmRjYzRjNGNlNGI3ZDBjNmMzODI3YjQ4NzI4NDE3
ZS4uNzBjMDRlZjI4MDc0OWNjMDllZDAwZTZjZWNlYjg3ZDU2OTJiZjk3ZiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFBy
b3h5LmNwcApAQCAtMTA2LDEyICsxMDYsMTIgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eTo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHIKICAg
ICBtX3dlYklEQk9iamVjdFN0b3JlLT5jbGVhcihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxs
YmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwog
fQogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aWVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJl
bmRlcmVyLAogICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJl
IHByb3h5IG9iamVjdHMuCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0
aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5z
YWN0aW9uKTsKLSAgICBPd25QdHI8V2ViSURCSW5kZXg+IGluZGV4ID0gYWRvcHRQdHIobV93ZWJJ
REJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpKTsKKyAgICBPd25QdHI8V2Vi
SURCSW5kZXg+IGluZGV4ID0gYWRvcHRQdHIobV93ZWJJREJPYmplY3RTdG9yZS0+Y3JlYXRlSW5k
ZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aWVudHJ5LCAqdHJhbnNhY3Rpb25Qcm94eS0+
Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpKTsKICAgICBpZiAoIWluZGV4KQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleC5y
ZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggY2IwZWUzMjg4YjkwMTFkZTNkOTQyYzcwOGJh
OTQyMmRmZGUxYjQyNy4uMmQ2MmYwYTk1ZTlmNDMwY2ZhNjVmNWIwNTA5NWJjNmNlNDI4OGI5YyAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKLSAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
LCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aWVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDIyMGQ1ZTQxNjM2OGZlOGViOWNkMmNiMjIy
YTUwNzhiMDk3OWNiNDkuLjQ5M2NiNGFkNzhmMTE1NmI5NmEzM2Q5YmFhNmQ0MzMyNTEzNjY1ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApA
QCAtNjgsNiArNjgsMTEgQEAgYm9vbCBXZWJJREJJbmRleEltcGw6OnVuaXF1ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7CiB9CiAKK2Jvb2wgV2ViSURCSW5kZXhJbXBs
OjptdWx0aWVudHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iYWNrZW5kLT5tdWx0aWVudHJ5
KCk7Cit9CisKIHZvaWQgV2ViSURCSW5kZXhJbXBsOjpvcGVuT2JqZWN0Q3Vyc29yKGNvbnN0IFdl
YklEQktleVJhbmdlJiBrZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBtX2JhY2tlbmQtPm9wZW5DdXJzb3Ioa2V5
UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxs
YmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCks
IGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKaW5k
ZXggYjA0N2MyZjg1OTZmZTFmZjBhYmIwZTM5MjQ4MTc3OGJjNzcxOTBlOC4uNzA4ZWY4Mzg3MGQy
MmY5NWJhYzA4NDVjODc3MjExOGQzOGU2YzVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCSW5kZXhJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViU3RyaW5nIHN0b3JlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGtleVBhdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIG11bHRpZW50cnkoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVu
T2JqZWN0Q3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsgCiAgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoY29uc3QgV2ViSURC
S2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXgg
Nzk5Zjk0YjkzZjhlZmNkZTZkMzhhOTIyM2IxNzZhY2Q5NzBhMTMxMC4uNTVlMzdiMjVhYWJlZTJk
NTIyZmU4NDljNmM0ZDQxNjgzZDY3ZGY2MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC04Nyw5ICs4Nyw5IEBAIHZv
aWQgV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjbGVhcihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViSURCVHJhbnNhCiAgICAgbV9vYmplY3RTdG9yZS0+Y2xlYXIoSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgdHJhbnNhY3Rpb24uZ2V0SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAotV2ViSURCSW5kZXgqIFdl
YklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViSURCSW5kZXgqIFdl
YklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVj
dFN0b3JlLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIHRyYW5zYWN0aW9uLmdl
dElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CisgICAgUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChu
YW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpZW50cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiAgICAgaWYgKCFpbmRleCkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRl
eCBmMTA5M2VkNWJjNTQwNGUyYjcyYTMyY2QxZTZlZDhhZGQ3OTEzNzdjLi44ODRhMDdmMGY3NTgz
ZTc0NzcxOGI2MmZkOWZjYTk2NzU4MjU2MmJhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNTQsNyArNTQsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkZWxldGVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmIGtleSwgV2ViSURC
Q2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlv
biYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIC8v
IEZJWE1FOiBSZW1vdmUgb25jZSBjYWxsZXJzIGFyZSB1cGRhdGVkLgorICAgIFdlYklEQkluZGV4
KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYga2V5
UGF0aCwgYm9vbCB1bmlxdWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgZmFsc2UsIHRyYW5zYWN0aW9uLCBlYyk7IH0KKyAgICBXZWJJREJJbmRleCogY3Jl
YXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpZW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5N2FhNWEwYjgxYTNmZTY2YzAzMTViNGY4ZDdhYTdmY2U1MGU2NTZh
Li40MjZjYzcxZjhlZWVhZjM3NzQ2NGU3YzliOTcyMzNjNDhmYWViYjY1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMTEtMjkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IEltcGxlbWVudCBJREJJbmRleCBtdWx0aWVudHJ5IGZlYXR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMjMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2luZGV4LW11bHRpZW50cnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5Lmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTI1
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiByZXNvdXJjZS10cmVlLWVycm9ycy1yZWxvYWQuaHRtbCBpcyBmbGFreS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3MtZXhwZWN0
ZWQudHh0CmluZGV4IGZkYThkYmYzZmI2MGU1NzgwNGI3MjkyMDA1MmQ2MWVhZmZhNGIyOWIuLjBh
NjFjMzI0ZmFhMDlkM2NmNjk4MDA3ZGVkZGEyMjViZDQ1YjUyYTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLWV4cGVjdGVkLnR4dApA
QCAtMjEsNyArMjEsOSBAQCBQQVNTIGluZGV4T2JqZWN0Lm9iamVjdFN0b3JlLm5hbWUgaXMgInN0
b3JlTmFtZSIKIFBBU1MgJ2tleVBhdGgnIGluIGluZGV4T2JqZWN0IGlzIHRydWUKIFBBU1MgaW5k
ZXhPYmplY3Qua2V5UGF0aCBpcyAieCIKIFBBU1MgJ3VuaXF1ZScgaW4gaW5kZXhPYmplY3QgaXMg
dHJ1ZQorUEFTUyAnbXVsdGllbnRyeScgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyBpbmRl
eE9iamVjdC51bmlxdWUgaXMgZmFsc2UKK1BBU1MgaW5kZXhPYmplY3QubXVsdGllbnRyeSBpcyBm
YWxzZQogUEFTUyAnb3BlbktleUN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyAn
b3BlbkN1cnNvcicgaW4gaW5kZXhPYmplY3QgaXMgdHJ1ZQogUEFTUyAnZ2V0S2V5JyBpbiBpbmRl
eE9iamVjdCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9pbmRleC1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4
LWJhc2ljcy5odG1sCmluZGV4IDhiYTM3ZjM0YTVlOGE5YjQ5NTM0YzJmZjk4ZTEyNDEwNGVkN2Qw
M2QuLjMwOWU3NWVkMzk4ZGRmY2I0NTA1NjY0ZDZlYmFhNzg0M2YxMGE0N2YgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWJhc2ljcy5odG1sCkBAIC01Myw3ICs1
Myw5IEBAIGZ1bmN0aW9uIGFkZERhdGEoKQogICAgIHNob3VsZEJlVHJ1ZSgiJ2tleVBhdGgnIGlu
IGluZGV4T2JqZWN0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbmRleE9iamVjdC5r
ZXlQYXRoIiwgIngiKTsKICAgICBzaG91bGRCZVRydWUoIid1bmlxdWUnIGluIGluZGV4T2JqZWN0
Iik7CisgICAgc2hvdWxkQmVUcnVlKCInbXVsdGllbnRyeScgaW4gaW5kZXhPYmplY3QiKTsKICAg
ICBzaG91bGRCZUZhbHNlKCJpbmRleE9iamVjdC51bmlxdWUiKTsKKyAgICBzaG91bGRCZUZhbHNl
KCJpbmRleE9iamVjdC5tdWx0aWVudHJ5Iik7CiAgICAgc2hvdWxkQmVUcnVlKCInb3BlbktleUN1
cnNvcicgaW4gaW5kZXhPYmplY3QiKTsKICAgICBzaG91bGRCZVRydWUoIidvcGVuQ3Vyc29yJyBp
biBpbmRleE9iamVjdCIpOwogICAgIHNob3VsZEJlVHJ1ZSgiJ2dldEtleScgaW4gaW5kZXhPYmpl
Y3QiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11
bHRpZW50cnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtbXVsdGllbnRyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUyNGFjMTUxYTFkZDAzNTc1
OTVjNGQ2MDIyYTczOGZiMjdiMmNjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2luZGV4LW11bHRpZW50cnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTI0IEBACitUZXN0IGZlYXR1cmVzIG9mIEluZGV4ZWREQidzIG11bHRpZW50cnkgaW5kaWNlcy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3dpbmRvdy5pbmRleGVkREIgPSB3aW5k
b3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIKK1BBU1MgaW5kZXhlZERCICE9
IG51bGwgaXMgdHJ1ZQord2luZG93LklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0
aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgorUEFTUyBJREJUcmFuc2FjdGlvbiAh
PSBudWxsIGlzIHRydWUKK2luZGV4ZWREQi5vcGVuKCdpbmRleC1tdWx0aWVudHJ5JykKK2RiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdAorZGIuc2V0VmVyc2lvbignMScpCisKK0NyZWF0aW5nIGVtcHR5
IHN0b3JlcyBhbmQgaW5kZXhlcwordHJhbnMgPSBldmVudC50YXJnZXQucmVzdWx0CitQQVNTIHRy
YW5zICE9PSBudWxsIGlzIHRydWUKK0RlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCitzdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCitzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCAneCcsIHttdWx0aWVudHJ5OiB0cnVlfSkKK3N0b3JlMiA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZS11bmlxdWUnKQorc3RvcmUyLmNyZWF0ZUluZGV4KCdpbmRleC11bmlxdWUnLCAneCcs
IHttdWx0aWVudHJ5OiB0cnVlLCB1bmlxdWU6IHRydWV9KQorCitQb3B1bGF0aW5nIHN0b3JlcyAo
YW5kIGluZGV4ZXMpCit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKFsnc3RvcmUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK0ZpcnN0IHRyeSBzb21lIGtleXMgdGhhdCBhcmVuJ3Qg
d2hhdCB3ZSdyZSBleHBlY3RpbmcKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1
dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9vJykKK05vdyBvdmVyd3JpdGUgdGhlbSB3aXRo
IHdoYXQgd2UncmUgZXhwZWN0aW5nCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5w
dXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTogJ2InfSwgJ2JhcicpCisKK1ZlcmlmeWlu
ZyBpbmRleDogaW5kZXgKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZSddLCBJ
REJUcmFuc2FjdGlvbi5SRUFEX09OTFkpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUn
KS5pbmRleCgnaW5kZXgnKS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMQorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNT
IGN1cnNvci5rZXkgaXMgMgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiZm9vIgorUEFTUyBj
dXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1Mg
ZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5r
ZXkgaXMgNAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFs
dWUueSBpcyAiYiIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVs
bCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYiIKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNgor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAi
YiIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXhwZWN0ZWQubGVuZ3RoID09
PSAwIGlzIHRydWUKKworVmVyaWZ5aW5nIHVuaXF1ZSBjb25zdHJhaW50IG9uIG11bHRpZW50cnkg
aW5kZXgKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydzdG9yZS11bmlxdWUnXSwgSURC
VHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZS11
bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2ZvbycpCitzdWNjZXNzIQorUmVw
bGFjZSBhbiBleGlzdGluZyByZWNvcmQgLSB0aGlzIHNob3VsZCB3b3JrCit0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykucHV0KHt4OiBbMSwgMiwgN10sIHk6ICdhJ30sICdm
b28nKQorc3VjY2VzcyEKK1RoaXMgc2hvdWxkIGZhaWwgdGhlIHVuaXF1ZW5lc3MgY29uc3RyYWlu
dCBvbiB0aGUgaW5kZXgsIGFuZCBmYWlsOgordHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
LXVuaXF1ZScpLnB1dCh7eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKQorUmVxdWVz
dCBmYWlsZWQsIGFzIGV4cGVjdGVkCitUcmFuc2FjdGlvbiBhYm9ydGVkIGFzIGV4cGVjdGVkCisK
K0NyZWF0ZSBhbiBpbmRleCBvbiBhIHBvcHVsYXRlZCBzdG9yZQorZGIuc2V0VmVyc2lvbignMicp
Cit0cmFucyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1
ZQorc3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUnKQorc3RvcmUuY3JlYXRlSW5kZXgo
J2luZGV4LW5ldycsICd4Jywge211bHRpZW50cnk6IHRydWV9KQorCitWZXJpZnlpbmcgaW5kZXg6
IGluZGV4LW5ldwordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3JlJ10sIElEQlRy
YW5zYWN0aW9uLlJFQURfT05MWSkKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLmlu
ZGV4KCdpbmRleC1uZXcnKS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1
bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMQorUEFTUyBj
dXJzb3IucHJpbWFyeUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNT
IGN1cnNvci5rZXkgaXMgMgorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiZm9vIgorUEFTUyBj
dXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1Mg
ZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgMworUEFTUyBjdXJzb3IucHJp
bWFyeUtleSBpcyAiZm9vIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYSIKK2N1cnNvciA9IGV2
ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5r
ZXkgaXMgNAorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFs
dWUueSBpcyAiYiIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXggIT0gbnVs
bCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNQorUEFTUyBjdXJzb3IucHJpbWFyeUtleSBp
cyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAiYiIKK2N1cnNvciA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgZXggIT0gbnVsbCBpcyB0cnVlCitQQVNTIGN1cnNvci5rZXkgaXMgNgor
UEFTUyBjdXJzb3IucHJpbWFyeUtleSBpcyAiYmFyIgorUEFTUyBjdXJzb3IudmFsdWUueSBpcyAi
YiIKK2N1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZXhwZWN0ZWQubGVuZ3RoID09
PSAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1t
dWx0aWVudHJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1tdWx0
aWVudHJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU5YTdlOTI1ZjI1MTIzODZmNjQzZTUxMmM4NTdiNGRj
OTJkNTFlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2luZGV4LW11bHRpZW50cnkuaHRtbApAQCAtMCwwICsxLDE1NSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBmZWF0dXJlcyBvZiBJbmRleGVk
REIncyBtdWx0aWVudHJ5IGluZGljZXMuIik7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygid2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5p
bmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiIpOworICAgIHNob3VsZEJlVHJ1ZSgi
aW5kZXhlZERCICE9IG51bGwiKTsKKyAgICBldmFsQW5kTG9nKCJ3aW5kb3cuSURCVHJhbnNhY3Rp
b24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9u
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJJREJUcmFuc2FjdGlvbiAhPSBudWxsIik7CisKKyAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ2luZGV4LW11bHRpZW50cnknKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRM
b2coImRiLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBwcmVwYXJl
RGF0YWJhc2U7CisgICAgfTsKK30KKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoIkNyZWF0aW5nIGVtcHR5IHN0b3JlcyBhbmQgaW5kZXhl
cyIpOworICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZXZlbnQudGFyZ2V0LnJl
c3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9
IGFkZERhdGE7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIpOworCisgICAgc3RvcmUg
PSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpIik7Cisg
ICAgZXZhbEFuZExvZygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4JywgJ3gnLCB7bXVsdGllbnRy
eTogdHJ1ZX0pIik7CisKKyAgICBzdG9yZTIgPSBldmFsQW5kTG9nKCJzdG9yZTIgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmUtdW5pcXVlJykiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZTIu
Y3JlYXRlSW5kZXgoJ2luZGV4LXVuaXF1ZScsICd4Jywge211bHRpZW50cnk6IHRydWUsIHVuaXF1
ZTogdHJ1ZX0pIik7Cit9CisKK2Z1bmN0aW9uIGFkZERhdGEoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiUG9wdWxhdGluZyBzdG9yZXMgKGFuZCBpbmRleGVzKSIpOworICAgIHRyYW5z
YWN0aW9uID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbihbJ3N0b3Jl
J10sIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgdHJhbnNhY3Rpb24ub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbigpIHsgdmVyaWZ5SW5kZXhlcygnaW5kZXgnLCB2ZXJpZnlVbmlxdWVDb25zdHJh
aW50KTsgfTsKKworICAgIGRlYnVnKCJGaXJzdCB0cnkgc29tZSBrZXlzIHRoYXQgYXJlbid0IHdo
YXQgd2UncmUgZXhwZWN0aW5nIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uLm9iamVjdFN0b3JlKCdzdG9yZScpLnB1dCh7eDogWzcsIDgsIDldLCB5OiAnYSd9LCAnZm9v
JykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICBkZWJ1ZygiTm93IG92ZXJ3cml0ZSB0aGVtIHdpdGggd2hhdCB3ZSdyZSBleHBlY3RpbmciKTsK
KyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3Jl
JykucHV0KHt4OiBbMSwgMiwgM10sIHk6ICdhJ30sICdmb28nKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmUnKS5wdXQoe3g6IFs0LCA1LCA2XSwgeTog
J2InfSwgJ2JhcicpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeUluZGV4ZXMoaW5kZXhOYW1lLCBjYWxsYmFjaykK
K3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlZlcmlmeWluZyBpbmRleDogIiArIGluZGV4
TmFtZSk7CisgICAgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKFsnc3RvcmUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9PTkxZKSIpOworICAgIHRy
YW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICB0cmFuc2Fj
dGlvbi5vbmNvbXBsZXRlID0gY2FsbGJhY2s7CisKKyAgICBleHBlY3RlZCA9IFsKKyAgICAgICAg
eyBrZXk6IDEsIHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDIs
IHByaW1hcnlLZXk6ICdmb28nLCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDMsIHByaW1hcnlL
ZXk6ICdmb28nLCB5OiAnYScgfSwKKyAgICAgICAgeyBrZXk6IDQsIHByaW1hcnlLZXk6ICdiYXIn
LCB5OiAnYicgfSwKKyAgICAgICAgeyBrZXk6IDUsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicg
fSwKKyAgICAgICAgeyBrZXk6IDYsIHByaW1hcnlLZXk6ICdiYXInLCB5OiAnYicgfSwKKyAgICBd
OworCisgICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmUnKS5pbmRleCgnIiArIGluZGV4TmFtZSArICInKS5vcGVuQ3Vyc29yKCkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGN1cnNvciA9IGV2YWxBbmRM
b2coImN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNvcikg
eworICAgICAgICAgICAgZXggPSBleHBlY3RlZC5zaGlmdCgpOworICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJleCAhPSBudWxsIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIs
IFN0cmluZyhleC5rZXkpKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY3Vy
c29yLnByaW1hcnlLZXkiLCBleC5wcmltYXJ5S2V5KTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY3Vyc29yLnZhbHVlLnkiLCBleC55KTsKKyAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJl
eHBlY3RlZC5sZW5ndGggPT09IDAiKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9u
IHZlcmlmeVVuaXF1ZUNvbnN0cmFpbnQoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
VmVyaWZ5aW5nIHVuaXF1ZSBjb25zdHJhaW50IG9uIG11bHRpZW50cnkgaW5kZXgiKTsKKyAgICB0
cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oWydz
dG9yZS11bmlxdWUnXSwgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKKyAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICBkZWJ1ZygiVHJhbnNhY3Rpb24g
YWJvcnRlZCBhcyBleHBlY3RlZCIpOworICAgICAgICBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0
YSgpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21w
bGV0ZUNhbGxiYWNrOworCisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCAzXSwgeTogJ2EnfSwgJ2Zv
bycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZGVidWcoInN1Y2Nl
c3MhIik7CisgICAgICAgIGRlYnVnKCJSZXBsYWNlIGFuIGV4aXN0aW5nIHJlY29yZCAtIHRoaXMg
c2hvdWxkIHdvcmsiKTsKKyAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coInRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZS11bmlxdWUnKS5wdXQoe3g6IFsxLCAyLCA3XSwgeTogJ2EnfSwg
J2ZvbycpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZGVidWcoInN1Y2Nlc3MhIik7CisgICAgICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFp
bCB0aGUgdW5pcXVlbmVzcyBjb25zdHJhaW50IG9uIHRoZSBpbmRleCwgYW5kIGZhaWw6Iik7Cisg
ICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygidHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
J3N0b3JlLXVuaXF1ZScpLnB1dCh7eDogWzUsIDJdLCB5OiAnYyd9LCAnc2hvdWxkIGZhaWwnKSIp
OworICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxi
YWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGRlYnVnKCJS
ZXF1ZXN0IGZhaWxlZCwgYXMgZXhwZWN0ZWQiKTsgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQor
CitmdW5jdGlvbiBjcmVhdGVJbmRleE9uU3RvcmVXaXRoRGF0YSgpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJDcmVhdGUgYW4gaW5kZXggb24gYSBwb3B1bGF0ZWQgc3RvcmUiKTsKKwor
ICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcyJykiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworCisgICAgICAgIHZhciB0cmFucyA9IGV2YWxBbmRMb2coInRy
YW5zID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgICAgICBzaG91bGRCZVRydWUoInRyYW5z
ICE9PSBudWxsIik7CisgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsKKyAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeyB2ZXJpZnlJbmRl
eGVzKCdpbmRleC1uZXcnLCBkb25lKTsgfTsKKworICAgICAgICBzdG9yZSA9IGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKyAgICAgICAgZXZhbEFuZExv
Zygic3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4LW5ldycsICd4Jywge211bHRpZW50cnk6IHRydWV9
KSIpOworICAgIH07Cit9CisKK3Rlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>