<?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>32689</bug_id>
          
          <creation_ts>2009-12-17 18:10:46 -0800</creation_ts>
          <short_desc>Fix the leak of ThreadIdentifiers in threadMap across threads.</short_desc>
          <delta_ts>2010-09-30 15:56:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>31639</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173008</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-17 18:10:46 -0800</bug_when>
    <thetext>Working on adding asserts to RefCounted, I&apos;ve added more calls to WTF::currentThread() around. This made a problem we had before more pronounced and caused crashes.

Currently, thread identifiers in Pthread-based ports are stored in a threadMap which maps them to OS-provided thread handles. WTF::currentThread() automatically generates a new ThreadIdentifier if the current thread does not yet have a map entry. Unfortunately, some OSes (OSX at least, see test in the discussion for bug 25348) reuse thread handles as soon as previous thread terminates. If the thread does not call WTF::detachThread() which removes the map entry, the new thread will have the same ThreadIdentifier which makes comparing them bug-prone. This also causes existing assertion when a new thread is created by WTF::createThread and finds out there is already ThreadIdentifier from the previously existing non-WTF thread.

In addition, current WTF::detachThread(ThreadIdentifier) is often called from another thread, which can happen after a thread with given ThreadIdentifier already finished and a new one created, with the same OS handle. If the ThreadIdentifier leaks in threadMap, it may cause detachThread to &apos;detach&apos; the new thread instead of old one.

Proposed modification is to add a thread-specific memory slot to store ThreadIdentifier and remove the ThreadIdentifier from the threadMap in its thread-specific destructor call. Since other thread-specific destructors can invoke &apos;currentThread()&apos; and re-establish the identifier, trigger the second pass of the destructor which happens after all regular destructors already were called. This way, the threads won&apos;t leave their ThreadIdentifiers in the map.

Other ports info: Windows threading does not have this issue because it uses unique ThreadIdentifiers supplied by OS. Chromium uses Pthreads or Windows threading so it&apos;s covered. So it leaves GTK and Qt ports which also use threadMap, but I don&apos;t know GTK not Qt API well enough to provide a fix, and hope the folks who maintain them will be able to see what, if anything, should be done there. For example, if the respected OSes do not reuse thread handles then there is no problem.

This patch will enable another attempt to fix bug 31639.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173018</commentid>
    <comment_count>1</comment_count>
      <attachid>45119</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-17 18:47:33 -0800</bug_when>
    <thetext>Created attachment 45119
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173628</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-12-19 18:41:53 -0800</bug_when>
    <thetext>One more comment on the patch: it might look that removing threadMap mapping in thread-specific destructor will cause calls like detachThread(threadID) or waitForThreadCompletion(threadID) made from other threads fail if they happen to be made just after the tread identified by threadID terminates. From what I see in debugger, Safari that uses WTF to start threads can realize this call pattern.
This is ok, actually.  Since resolving threadID via map will return 0 pthread handle, the pthread methods will simply return error and do nothing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175495</commentid>
    <comment_count>3</comment_count>
      <attachid>45119</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-29 04:37:20 -0800</bug_when>
    <thetext>Comment on attachment 45119
Proposed patch.

The code change and your explanation look good to me, but is it possible to provide a test case? It&apos;s ok if the test case only fails in debug builds with the relevant asserts enabled. If it&apos;s not possible to create a test case, please explain why in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177500</commentid>
    <comment_count>4</comment_count>
      <attachid>45951</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-05 18:00:07 -0800</bug_when>
    <thetext>Created attachment 45951
Patch with test.

Same change, with a test.

See DumRenderTree.mm and WebKitTools/ChangeLog for the description of the test. Basically, it starts couple of trivial threads that use WTF::currentThread() method. Without the fix, there are at least 2 ASSERTS on the way of DRT to completion.
It simulates scenarios when embedders like Safari run threads not created by WTF that call into JSC/WebKit code which can use currentThread(), or  DRT running with &apos;--threaded&apos;, to name a couple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177508</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 18:12:28 -0800</bug_when>
    <thetext>Attachment 45951 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/wtf/ThreadIdentifierDataPthreads.cpp:35:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
JavaScriptCore/wtf/ThreadIdentifierDataPthreads.cpp:52:  this_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/ThreadIdentifierDataPthreads.cpp:67:  this_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177735</commentid>
    <comment_count>6</comment_count>
      <attachid>45988</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-06 13:46:11 -0800</bug_when>
    <thetext>Created attachment 45988
Patch with test and style fix.

Fixed style issue noticed by style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177737</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 13:48:05 -0800</bug_when>
    <thetext>Attachment 45988 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/wtf/ThreadIdentifierDataPthreads.cpp:35:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177820</commentid>
    <comment_count>8</comment_count>
      <attachid>46004</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-06 15:52:36 -0800</bug_when>
    <thetext>Created attachment 46004
Updated patch.

I should have used check-webkit-style before... Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177822</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 15:55:29 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46004 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177833</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-06 16:04:56 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=46004) [details]
&gt; Updated patch.
&gt; 
&gt; I should have used check-webkit-style before... Updated patch.

I&apos;ve filed bug 33275 on your behalf. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183547</commentid>
    <comment_count>11</comment_count>
      <attachid>46004</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-22 01:53:57 -0800</bug_when>
    <thetext>Comment on attachment 46004
Updated patch.

r=me

I was hoping for a test that shows what goes wrong in actual browsing if this bug is not fixed, but the unit test you added seems fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183770</commentid>
    <comment_count>12</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-22 13:28:38 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 46004 [details])
&gt; r=me
&gt; 
&gt; I was hoping for a test that shows what goes wrong in actual browsing if this
&gt; bug is not fixed, but the unit test you added seems fine too.

Today, it doesn&apos;t fail in browsing (at least I don&apos;t have a repro case) but it prevents adding more ASSERTS with CurrentThread() verification (for example, a patch for bug 31639 is blocked by this). 

Thanks a lot for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183795</commentid>
    <comment_count>13</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-22 14:03:22 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/53714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184031</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-01-23 14:59:33 -0800</bug_when>
    <thetext>This appears to have caused Tiger nightly builds to crash after loading a page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184032</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-01-23 14:59:52 -0800</bug_when>
    <thetext>Please see bug 34039.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184161</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-24 22:25:29 -0800</bug_when>
    <thetext>Seems we should roll out this change then.  The only reason I haven&apos;t already is that the Tiger bug is not confirmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184436</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-25 16:06:09 -0800</bug_when>
    <thetext>Bug 34039 has been confirmed.  I think this should be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184440</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-25 16:12:33 -0800</bug_when>
    <thetext>Alexey reports the regression as being fixed in r53815.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287898</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-30 15:56:40 -0700</bug_when>
    <thetext>The GTK+ port seems to be hitting a lot of ASSERTs that look like this:

ASSERTION FAILED: m_thread == currentThread()

Is this related to this bug at all? Perhaps we are still missing some code? I&apos;m happy to implement it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45119</attachid>
            <date>2009-12-17 18:47:33 -0800</date>
            <delta_ts>2010-01-05 18:00:07 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>23931</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsgYi9KYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCmluZGV4IDA2MTViY2QuLjMzZjQwYzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0FuZHJvaWQubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawpAQCAtMTYwLDYg
KzE2MCw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1JhbmRvbU51bWJlci5jcHAgXAog
CXd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAl3dGYvVENTeXN0ZW1BbGxvYy5jcHAg
XAorCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAogCVwKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52
OC53dGYubWsKaW5kZXggMGM5NzgwZS4uMWFjYWRiNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQW5kcm9pZC52OC53dGYubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52OC53dGYu
bWsKQEAgLTQyLDYgKzQyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvUmFuZG9tTnVt
YmVyLmNwcCBcCiAJd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogCXd0Zi9UQ1N5c3Rl
bUFsbG9jLmNwcCBcCisJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAl3
dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCiAJXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IGRlZGRjYmQuLjE5NWNlNDcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAor
MjAwOS0xMi0xNyAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2Yg
VGhyZWFkSWRlbnRpZmllcnMgaW4gdGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICAq
IEFuZHJvaWQubWs6IEFkZGVkIGZpbGUgVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy4oaHxj
cHApIHRvIGJ1aWxkLgorICAgICAgICAqIEFuZHJvaWQudjgud3RmLm1rOiBEaXR0by4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
L0phdmFTY3JpcHRDb3JlLmd5cDogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
aTogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5jcHA6IEFkZGVkLiBDb250YWlucyBjdXN0b20gaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkLXNw
ZWNpZmljIGRhdGEgdGhhdCB1c2VzIGN1c3RvbSBkZXN0cnVjdG9yLgorICAgICAgICAoV1RGOjpU
aHJlYWRJZGVudGlmaWVyRGF0YTo6flRocmVhZElkZW50aWZpZXJEYXRhKTogUmVtb3ZlcyB0aGUg
VGhyZWFkSWRlbnRpZmllciBmcm9tIHRoZSB0aHJlYWRNYXAuCisgICAgICAgIChXVEY6OlRocmVh
ZElkZW50aWZpZXJEYXRhOjppZGVudGlmaWVyKToKKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRp
ZmllckRhdGE6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0
YTo6ZGVzdHJ1Y3QpOiBDdXN0b20gdGhyZWFkLXNwZWNpZmljIGRlc3RydWN0b3IuIFJlc2V0cyB0
aGUgdmFsdWUgZm9yIHRoZSBrZXkgYWdhaW4gdG8gY2F1c2Ugc2Vjb25kIGludm9rZS4KKyAgICAg
ICAgKFdURjo6VGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVLZXlPbmNlSGVscGVyKToK
KyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVLZXlPbmNlKTog
TmVlZCB0byB1c2UgcHRocmVhZF9vbmNlIHNpbmNlIGluaXRpYWxpemF0aW9uIG1heSBjb21lIG9u
IGFueSB0aHJlYWQocykuCisgICAgICAgICogd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVh
ZHMuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlRocmVhZElkZW50aWZpZXJEYXRhOjpUaHJlYWRJ
ZGVudGlmaWVyRGF0YSk6CisKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAg
KFdURjo6dGhyZWFkRW50cnlQb2ludCk6IE1vdmUgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRl
cm5hbCB0byBhZnRlciB0aGUgbG9jayB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdXJlIGl0IGlzIGludm9rZWQgd2hlbiBUaHJlYWRJZGVudGlmaWVyIGlzIGFscmVh
ZHkgZXN0YWJsaXNoZWQuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IFJlbmFtZSBzZXRU
aHJlYWROYW1lSW50ZXJuYWwgLT4gaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCBzaW5j
ZSBpdCBkb2VzIG1vcmUgdGhlbiBvbmx5IHNldCB0aGUgbmFtZSBub3cuCisgICAgICAgICogd3Rm
L1RocmVhZGluZ05vbmUuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplQ3VycmVudFRocmVh
ZEludGVybmFsKTogRGl0dG8uCisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAg
ICAgIChXVEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6IERpdHRvLgorICAgICAgICAqIHd0Zi9ndGsv
VGhyZWFkaW5nR3RrLmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJ
bnRlcm5hbCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6CisgICAg
ICAgIChXVEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwpOiBEaXR0by4KKworICAg
ICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OmVzdGFibGlz
aElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKToKKyAgICAgICAgKFdURjo6Y2xlYXJQdGhyZWFk
SGFuZGxlRm9ySWRlbnRpZmllcik6IE1ha2UgaXQgbm90ICdzdGF0aWMnIHNvIHRoZSB+VGhyZWFk
SWRlbnRpZmllckRhdGEoKSBpbiBhbm90aGVyIGZpbGUgY2FuIGNhbGwgaXQuCisgICAgICAgIChX
VEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwpOiBTZXQgdGhlIHRocmVhZC1zcGVj
aWZpYyBkYXRhLiBUaGUgVGhyZWFkSWRlbnRpZmllciBpcyBhbHJlYWR5IGVzdGFibGlzaGVkIGJ5
IGNyZWF0aW5nIHRocmVhZC4KKyAgICAgICAgKFdURjo6d2FpdEZvclRocmVhZENvbXBsZXRpb24p
OiBSZW1vdmUgY2FsbCB0byBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKHRocmVhZElE
KSBzaW5jZSBpdCBpcyBub3cgZG9uZSBpbiB+VGhyZWFkSWRlbnRpZmllckRhdGEoKS4KKyAgICAg
ICAgKFdURjo6ZGV0YWNoVGhyZWFkKTogRGl0dG8uCisgICAgICAgIChXVEY6OmN1cnJlbnRUaHJl
YWQpOiBVc2UgdGhlIHRocmVhZC1zcGVjaWZpYyBkYXRhIHRvIGdldCB0aGUgVGhyZWFkSWRlbnRp
Zmllci4gSXQncyBtYW55IHRpbWVzIGZhc3RlciB0aGVuIE11dGV4LXByb3RlY3RlZCBpdGVyYXRp
b24gdGhyb3VnaCB0aGUgbWFwLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywg
c2V0IHRoZSB0aHJlYWQtc3BlY2lmaWMgZGF0YSBpZiBjYWxsZWQgZmlyc3QgdGltZSBvbiB0aGUg
dGhyZWFkLgorCiAyMDA5LTEyLTA4ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCAyMTMyZjc3Li5mZWFiZGVlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjc3
LDEwICsyNzcsMTIgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENv
cmUvd3RmL1RDUGFja2VkQ2FjaGUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1RDUGFnZU1hcC5o
IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENTcGluTG9jay5oIFwKLQlKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkU3BlY2lmaWMuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZp
ZXJEYXRhUHRocmVhZHMuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJE
YXRhUHRocmVhZHMuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggXAogCUph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nUHRocmVhZHMuY3BwIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMu
aCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1R5cGVUcmFpdHMuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvVHlwZVRyYWl0cy5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVW51c2VkUGFyYW0uaCBc
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlw
dENvcmUuZ3lwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwL0phdmFTY3JpcHRD
b3JlLmd5cAppbmRleCA2NGUyMGEyLi42NmY0MGU5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlwdENvcmUuZ3lwCisrKyBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAKQEAgLTEzNCw2ICsxMzQs
NyBAQAogICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgIFsnT1M9PSJ3aW4iJywgewogICAg
ICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgIFsnZXhjbHVkZScsICdUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzXFwuKGh8Y3BwKSQnXSwKICAgICAgICAgICAgIFsnZXhjbHVkZScs
ICdUaHJlYWRpbmdQdGhyZWFkc1xcLmNwcCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdU
aHJlYWQoaW5nfFNwZWNpZmljKVdpblxcLmNwcCQnXQogICAgICAgICAgIF0sCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpIGIvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZ3lwaQppbmRleCAzODA5N2M5Li5mMmNiNWY2IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkKQEAgLTQyMCw2ICs0MjAsOCBAQAogICAgICAgICAgICAgJ3d0Zi9UQ1Nw
aW5Mb2NrLmgnLAogICAgICAgICAgICAgJ3d0Zi9UQ1N5c3RlbUFsbG9jLmNwcCcsCiAgICAgICAg
ICAgICAnd3RmL1RDU3lzdGVtQWxsb2MuaCcsCisgICAgICAgICAgICAnd3RmL1RocmVhZElkZW50
aWZpZXJEYXRhUHRocmVhZHMuY3BwJywKKyAgICAgICAgICAgICd3dGYvVGhyZWFkSWRlbnRpZmll
ckRhdGFQdGhyZWFkcy5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkaW5nLmNwcCcsCiAgICAg
ICAgICAgICAnd3RmL1RocmVhZGluZy5oJywKICAgICAgICAgICAgICd3dGYvVGhyZWFkaW5nTm9u
ZS5jcHAnLApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzk2OWY0Ny4uOWYxNTBjNSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzUsNiArMTc1LDggQEAKIAkJMTRGOEJBNEYxMDdFQzg5OTAwOTg5MkRDIC8qIENv
bGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNjkyQTg1MjAyNTU1OTdEMDFGRjYwRjcgLyogQ29sbGVjdG9yLmNwcCAqLzsgfTsKIAkJMTgw
QjlCMDgwRjE2RDk0RjAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxODBCOUJGRTBGMTZFOTREMDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTgwQjlBRUYwRjE2QzU2
OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmNwcCAqLzsgfTsKKwkJMThCQUI1NTMxMERBRTA1NDAw
MEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThCQUI1MjcxMERBREZDRDAwMEQ5NDVC
IC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwICovOyB9OworCQkxOEJBQjU1NDEw
REFFMDY2MDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThCQUI1MjgxMERBREZDRDAw
MEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCAqLzsgfTsKIAkJMUM2MTUx
NkMwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8q
IFByb2ZpbGVyU2VydmVyLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItZm5v
LXN0cmljdC1hbGlhc2luZyI7IH07IH07CiAJCTFDNjE1MTZEMEVCQUM3QTAwMDMxMzc2RiAvKiBQ
cm9maWxlclNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM2MTUxNkIwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLmggKi87IH07
CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAw
RUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CkBAIC02NDQsNiArNjQ2LDggQEAKIAkJ
MTRGMzQ4OEUwRTk1RUY4QTAwMzY0OEJDIC8qIENvbGxlY3RvckhlYXBJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0b3JIZWFwSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTgwQjlBRUYwRjE2QzU2OTAwOUJEQkM1IC8qIEN1
cnJlbnRUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1cnJl
bnRUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTgwQjlBRjAwRjE2QzU2
OTAwOUJEQkM1IC8qIEN1cnJlbnRUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEN1cnJlbnRUaW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4QkFCNTI3
MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOEJBQjUyODEwREFERkNE
MDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjE1MTZBMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9m
aWxlclNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBy
b2ZpbGVyU2VydmVyLm1tOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJTZXJ2ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjE1MTZCMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9m
aWxlclNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclNl
cnZlci5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5MDUxNDIwQkE5RThBNzAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTMsNiArMTM1Nyw4IEBACiAJCQkJNjU0MUJE
NkYwOEU4MEExNzAwMkNCRUU3IC8qIFRDU3BpbkxvY2suaCAqLywKIAkJCQk2NTQxQkQ3MDA4RTgw
QTE3MDAyQ0JFRTcgLyogVENTeXN0ZW1BbGxvYy5jcHAgKi8sCiAJCQkJNjU0MUJENzEwOEU4MEEx
NzAwMkNCRUU3IC8qIFRDU3lzdGVtQWxsb2MuaCAqLywKKwkJCQkxOEJBQjUyNzEwREFERkNEMDAw
RDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgKi8sCisJCQkJMThCQUI1
MjgxMERBREZDRDAwMEQ5NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCAqLywK
IAkJCQk1RDZBNTY2QTBGMDU5OTU1MDAyNjYxNDUgLyogVGhyZWFkaW5nLmNwcCAqLywKIAkJCQlF
MUVFNzkyMjBENkM5NUNEMDBGRUEzQkEgLyogVGhyZWFkaW5nLmggKi8sCiAJCQkJRTFFRTc5M0Mw
RDZDOUI5MjAwRkVBM0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLywKQEAgLTIwMTEsNiAr
MjAxNyw3IEBACiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTE1NjMyMTA5NjYzNjUwMDZGQTI2MCAvKiBE
YXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyMEJFN0IxMEFBNkREQjAw
RjQ1NUQyIC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAorCQkJCTE4QkFCNTU0MTBEQUUw
NjYwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI0NDMsNiArMjQ1MCw3IEBACiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0YwRDBDMEVGMEI4QTUw
MDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEY4
QkE0MzEwN0VDODhDMDA5ODkyREMgLyogVENTeXN0ZW1BbGxvYy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxOEJBQjU1MzEwREFFMDU0MDAwRDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDZBNTY2QjBGMDU5OTU1MDAyNjYxNDUgLyog
VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU3OTNEMEQ2QzlCOTIwMEZFQTNC
QSAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEE0MkUzRjBG
NEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5j
cHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY3OWVhMAotLS0gL2Rldi9udWxs
CisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNw
cApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKFBUSFJFQURT
KQorCisjaW5jbHVkZSAiVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIgorI2luY2x1ZGUg
IlRocmVhZGluZy5oIgorCituYW1lc3BhY2UgV1RGIHsKKworcHRocmVhZF9rZXlfdCBUaHJlYWRJ
ZGVudGlmaWVyRGF0YTo6bV9rZXk7CisKK3ZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRp
ZmllcihUaHJlYWRJZGVudGlmaWVyKTsKKworVGhyZWFkSWRlbnRpZmllckRhdGE6On5UaHJlYWRJ
ZGVudGlmaWVyRGF0YSgpCit7CisgICAgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllciht
X2lkZW50aWZpZXIpOworfQorCitUaHJlYWRJZGVudGlmaWVyIFRocmVhZElkZW50aWZpZXJEYXRh
OjppZGVudGlmaWVyKCkKK3sKKyAgICBpbml0aWFsaXplS2V5T25jZSgpOworICAgIFRocmVhZElk
ZW50aWZpZXJEYXRhKiB0aGlzX3B0ciA9IHN0YXRpY19jYXN0PFRocmVhZElkZW50aWZpZXJEYXRh
Kj4ocHRocmVhZF9nZXRzcGVjaWZpYyhtX2tleSkpOworCisgICAgcmV0dXJuIHRoaXNfcHRyID8g
dGhpc19wdHItPm1faWRlbnRpZmllciA6IDA7Cit9CisKK3ZvaWQgVGhyZWFkSWRlbnRpZmllckRh
dGE6OmluaXRpYWxpemUoVGhyZWFkSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQoIWlkZW50
aWZpZXIoKSk7CisKKyAgICBpbml0aWFsaXplS2V5T25jZSgpOworICAgIHB0aHJlYWRfc2V0c3Bl
Y2lmaWMobV9rZXksIG5ldyBUaHJlYWRJZGVudGlmaWVyRGF0YShpZCkpOworfQorCit2b2lkIFRo
cmVhZElkZW50aWZpZXJEYXRhOjpkZXN0cnVjdCh2b2lkKiBkYXRhKQoreworICAgIFRocmVhZElk
ZW50aWZpZXJEYXRhKiB0aGlzX3B0ciA9IHN0YXRpY19jYXN0PFRocmVhZElkZW50aWZpZXJEYXRh
Kj4oZGF0YSk7CisgICAgQVNTRVJUKHRoaXNfcHRyKTsKKworICAgIGlmICh0aGlzX3B0ci0+bV9p
c0Rlc3Ryb3llZE9uY2UpIHsKKyAgICAgICAgZGVsZXRlIHRoaXNfcHRyOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdGhpc19wdHItPm1faXNEZXN0cm95ZWRPbmNlID0gdHJ1ZTsKKyAg
ICAvLyBSZS1zZXR0aW5nIHRoZSB2YWx1ZSBmb3Iga2V5IGNhdXNlcyBhbm90aGVyIGRlc3RydWN0
KCkgY2FsbCBhZnRlciBhbGwgb3RoZXIgdGhyZWFkLXNwZWNpZmljIGRlc3RydWN0b3JzIHdlcmUg
Y2FsbGVkLgorICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMobV9rZXksIHRoaXNfcHRyKTsKK30KKwor
dm9pZCBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIoKQorewor
ICAgIGlmIChwdGhyZWFkX2tleV9jcmVhdGUoJm1fa2V5LCBkZXN0cnVjdCkpCisgICAgICAgIENS
QVNIKCk7Cit9CisKK3ZvaWQgVGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVLZXlPbmNl
KCkKK3sKKyAgICBzdGF0aWMgcHRocmVhZF9vbmNlX3Qgb25jZUNvbnRyb2wgPSBQVEhSRUFEX09O
Q0VfSU5JVDsKKyAgICBpZiAocHRocmVhZF9vbmNlKCZvbmNlQ29udHJvbCwgaW5pdGlhbGl6ZUtl
eU9uY2VIZWxwZXIpKQorICAgICAgICBDUkFTSCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KworI2VuZGlmIC8vIFVTRShQVEhSRUFEUykKKwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uM2FmODdhOAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkc19oCisjZGVmaW5lIFRocmVhZElkZW50aWZpZXJEYXRh
UHRocmVhZHNfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gSG9sZHMgVGhyZWFkSWRlbnRp
ZmllciBpbiB0aGUgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UgYW5kIGVtcGxveXMgcHRocmVhZHMt
c3BlY2lmaWMgMi1wYXNzIGRlc3RydWN0aW9uIHRvIHJlbGlhYmx5IHJlbW92ZQorLy8gVGhyZWFk
SWRlbnRpZmllciBmcm9tIHRocmVhZE1hcC4gSXQgYXNzdW1lcyByZWd1bGFyIFRocmVhZFNwZWNp
ZmljIHR5cGVzIGRvbid0IHVzZSBtdWx0aXBsZS1wYXNzIGRlc3RydWN0aW9uLgorY2xhc3MgVGhy
ZWFkSWRlbnRpZmllckRhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIH5U
aHJlYWRJZGVudGlmaWVyRGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbmQgcHV0cyBhbiBpbnN0
YW5jZSBvZiBUaHJlYWRJZGVudGlmaWVyRGF0YSBpbnRvIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdl
LgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVy
KTsKKworICAgIC8vIFJldHVybnMgMCBpZiB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSB3YXMgbm90
IGluaXRpYWxpemVkLgorICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKTsK
KworcHJpdmF0ZToKKyAgICBUaHJlYWRJZGVudGlmaWVyRGF0YShUaHJlYWRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgICAgICwg
bV9pc0Rlc3Ryb3llZE9uY2UoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIC8vIFRoaXMgdGhy
ZWFkLXNwZWNpZmljIGRlc3RydWN0b3IgaXMgY2FsbGVkIDIgdGltZXMgd2hlbiB0aHJlYWQgdGVy
bWluYXRlczoKKyAgICAvLyAtIGZpcnN0LCB3aGVuIGFsbCB0aGUgb3RoZXIgdGhyZWFkLXNwZWNp
ZmljIGRlc3RydWN0b3JzIGFyZSBjYWxsZWQsIGl0IHNpbXBseSByZW1lbWJlcnMgaXQgd2FzICdk
ZXN0cm95ZWQgb25jZScKKyAgICAvLyBhbmQgcmUtc2V0cyBpdHNlbGYgaW50byB0aGUgdGhyZWFk
LXNwZWNpZmljIHNsb3QgdG8gbWFrZSBQdGhyZWFkcyB0byBjYWxsIGl0IGFnYWluIGxhdGVyLgor
ICAgIC8vIC0gc2Vjb25kLCBhZnRlciBhbGwgdGhyZWFkLXNwZWNpZmljIGRlc3RydWN0b3JzIHdl
cmUgaW52b2tlZCwgaXQgZ2V0cyBjYWxsZWQgYWdhaW4gLSB0aGlzIHRpbWUsIHdlIHJlbW92ZSB0
aGUKKyAgICAvLyBUaHJlYWRJZGVudGlmaWVyIGZyb20gdGhlIHRocmVhZE1hcCwgY29tcGxldGlu
ZyB0aGUgY2xlYW51cC4KKyAgICBzdGF0aWMgdm9pZCBkZXN0cnVjdCh2b2lkKiBkYXRhKTsKKwor
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVLZXlPbmNlSGVscGVyKCk7CisgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZUtleU9uY2UoKTsKKworICAgIFRocmVhZElkZW50aWZpZXIgbV9pZGVudGlm
aWVyOworICAgIGJvb2wgbV9pc0Rlc3Ryb3llZE9uY2U7CisgICAgc3RhdGljIHB0aHJlYWRfa2V5
X3QgbV9rZXk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFRocmVhZElk
ZW50aWZpZXJEYXRhUHRocmVhZHNfaAorCisKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKaW5kZXgg
NzRjNDdmNC4uNDlkZTU5ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKQEAgLTQ5LDEzICs0
OSwxNCBAQCBzdGF0aWMgdm9pZCogdGhyZWFkRW50cnlQb2ludCh2b2lkKiBjb250ZXh0RGF0YSkK
IHsKICAgICBOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOZXdU
aHJlYWRDb250ZXh0Kj4oY29udGV4dERhdGEpOwogCi0gICAgc2V0VGhyZWFkTmFtZUludGVybmFs
KGNvbnRleHQtPm5hbWUpOwotCi0gICAgLy8gQmxvY2sgdW50aWwgb3VyIGNyZWF0aW5nIHRocmVh
ZCBoYXMgY29tcGxldGVkIGFueSBleHRyYSBzZXR1cCB3b3JrLgorICAgIC8vIEJsb2NrIHVudGls
IG91ciBjcmVhdGluZyB0aHJlYWQgaGFzIGNvbXBsZXRlZCBhbnkgZXh0cmEgc2V0dXAgd29yaywg
aW5jbHVkaW5nCisgICAgLy8gZXN0YWJsaXNoaW5nIFRocmVhZElkZW50aWZpZXIuCiAgICAgewog
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC0+Y3JlYXRpb25NdXRleCk7CiAgICAg
fQogCisgICAgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb250ZXh0LT5uYW1lKTsK
KwogICAgIC8vIEdyYWIgdGhlIGluZm8gdGhhdCB3ZSBuZWVkIG91dCBvZiB0aGUgY29udGV4dCwg
dGhlbiBkZWFsbG9jYXRlIGl0LgogICAgIFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQgPSBjb250
ZXh0LT5lbnRyeVBvaW50OwogICAgIHZvaWQqIGRhdGEgPSBjb250ZXh0LT5kYXRhOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZy5oCmluZGV4IDJhMmU5YzQuLmQ5ZTAzYmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
LmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVy
bmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFkTgogCiAvLyBDYWxs
ZWQgaW4gdGhlIHRocmVhZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCiAvLyBIZWxwZnVsIGZvciBw
bGF0Zm9ybXMgd2hlcmUgdGhlIHRocmVhZCBuYW1lIG11c3QgYmUgc2V0IGZyb20gd2l0aGluIHRo
ZSB0aHJlYWQuCi12b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKTsKK3ZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0
aHJlYWROYW1lKTsKIAogVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCk7CiBib29sIGlz
TWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05v
bmUuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05vbmUuY3BwCmluZGV4IDQ2ZjIz
ZDIuLjI5MzhlMGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25l
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpIHsg
fQogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiwg
dm9pZCosIGNvbnN0IGNoYXIqKSB7IHJldHVybiBUaHJlYWRJZGVudGlmaWVyKCk7IH0KLXZvaWQg
c2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqKSB7IH0KK3ZvaWQgaW5pdGlhbGl6ZUN1
cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikgeyB9CiBpbnQgd2FpdEZvclRocmVhZENv
bXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKSB7IHJldHVybiAwOyB9CiB2b2lkIGRl
dGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKSB7IH0KIFRocmVhZElkZW50aWZpZXIgY3VycmVu
dFRocmVhZCgpIHsgcmV0dXJuIFRocmVhZElkZW50aWZpZXIoKTsgfQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggZmU3YjI2YS4uNjhmM2Q3MSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5j
bHVkZSAiTWFpblRocmVhZC5oIgogI2luY2x1ZGUgIlJhbmRvbU51bWJlclNlZWQuaCIKICNpbmNs
dWRlICJTdGRMaWJFeHRyYXMuaCIKKyNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJl
YWRzLmgiCisjaW5jbHVkZSAiVGhyZWFkU3BlY2lmaWMuaCIKICNpbmNsdWRlICJVbnVzZWRQYXJh
bS5oIgogI2luY2x1ZGUgPGVycm5vLmg+CiAKQEAgLTEwOCw3ICsxMTAsNyBAQCBzdGF0aWMgVGhy
ZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQnlQdGhyZWFkSGFuZGxlKGNvbnN0IHB0aHJlYWRfdCYg
cHRocmVhZEhhbmRsZQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmll
ciBlc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhhbmRsZShwdGhyZWFkX3QmIHB0aHJlYWRI
YW5kbGUpCitzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBlc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRo
cmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0aHJlYWRIYW5kbGUpCiB7CiAgICAgQVNTRVJU
KCFpZGVudGlmaWVyQnlQdGhyZWFkSGFuZGxlKHB0aHJlYWRIYW5kbGUpKTsKIApAQCAtMTI4LDcg
KzEzMCw3IEBAIHN0YXRpYyBwdGhyZWFkX3QgcHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhy
ZWFkSWRlbnRpZmllciBpZCkKICAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGlkKTsKIH0KIAot
c3RhdGljIHZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlm
aWVyIGlkKQordm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50
aWZpZXIgaWQpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwog
CkBAIC0xODUsMTMgKzE4NywxNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVy
bmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogfQogI2VuZGlm
CiAKLXZvaWQgc2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCit2
b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFt
ZSkKIHsKICNpZiBIQVZFKFBUSFJFQURfU0VUTkFNRV9OUCkKICAgICBwdGhyZWFkX3NldG5hbWVf
bnAodGhyZWFkTmFtZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0aHJlYWROYW1lKTsKICNl
bmRpZgorCisgICAgVGhyZWFkSWRlbnRpZmllciBpZCA9IGlkZW50aWZpZXJCeVB0aHJlYWRIYW5k
bGUocHRocmVhZF9zZWxmKCkpOworICAgIEFTU0VSVChpZCk7CisgICAgVGhyZWFkSWRlbnRpZmll
ckRhdGE6OmluaXRpYWxpemUoaWQpOwogfQogCiBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24o
VGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCwgdm9pZCoqIHJlc3VsdCkKQEAgLTIwNCw3ICsyMTAs
NiBAQCBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJ
RCwgdm9pZCoqIHJlc3VsdCkKICAgICBpZiAoam9pblJlc3VsdCA9PSBFREVBRExLKQogICAgICAg
ICBMT0dfRVJST1IoIlRocmVhZElkZW50aWZpZXIgJXUgd2FzIGZvdW5kIHRvIGJlIGRlYWRsb2Nr
ZWQgdHJ5aW5nIHRvIHF1aXQiLCB0aHJlYWRJRCk7CiAKLSAgICBjbGVhclB0aHJlYWRIYW5kbGVG
b3JJZGVudGlmaWVyKHRocmVhZElEKTsKICAgICByZXR1cm4gam9pblJlc3VsdDsKIH0KIApAQCAt
MjE1LDE2ICsyMjAsMTggQEAgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJl
YWRJRCkKICAgICBwdGhyZWFkX3QgcHRocmVhZEhhbmRsZSA9IHB0aHJlYWRIYW5kbGVGb3JJZGVu
dGlmaWVyKHRocmVhZElEKTsKIAogICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJlYWRIYW5kbGUpOwot
Ci0gICAgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcih0aHJlYWRJRCk7CiB9CiAKIFRo
cmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpCiB7Ci0gICAgcHRocmVhZF90IGN1cnJlbnRU
aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKLSAgICBpZiAoVGhyZWFkSWRlbnRpZmllciBpZCA9IGlk
ZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUoY3VycmVudFRocmVhZCkpCisgICAgVGhyZWFkSWRlbnRp
ZmllciBpZCA9IFRocmVhZElkZW50aWZpZXJEYXRhOjppZGVudGlmaWVyKCk7CisgICAgaWYgKGlk
KQogICAgICAgICByZXR1cm4gaWQ7Ci0gICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JQ
dGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQpOworCisgICAgLy8gTm90IGEgV1RGLWNyZWF0ZWQg
dGhyZWFkLCBUaHJlYWRJZGVudGlmaWVyIGlzIG5vdCBlc3RhYmxpc2hlZCB5ZXQuCisgICAgaWQg
PSBlc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhhbmRsZShwdGhyZWFkX3NlbGYoKSk7Cisg
ICAgVGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemUoaWQpOworICAgIHJldHVybiBpZDsK
IH0KIAogYm9vbCBpc01haW5UaHJlYWQoKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZ1dpbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcApp
bmRleCBjY2NiZGExLi5lNGRlNzA4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nV2luLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcApA
QCAtMTE4LDcgKzExOCw3IEBAIHR5cGVkZWYgc3RydWN0IHRhZ1RIUkVBRE5BTUVfSU5GTyB7CiB9
IFRIUkVBRE5BTUVfSU5GTzsKICNwcmFnbWEgcGFjayhwb3ApCiAKLXZvaWQgc2V0VGhyZWFkTmFt
ZUludGVybmFsKGNvbnN0IGNoYXIqIHN6VGhyZWFkTmFtZSkKK3ZvaWQgaW5pdGlhbGl6ZUN1cnJl
bnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiBzelRocmVhZE5hbWUpCiB7CiAgICAgVEhSRUFE
TkFNRV9JTkZPIGluZm87CiAgICAgaW5mby5kd1R5cGUgPSAweDEwMDA7CkBAIC0xNjEsNyArMTYx
LDcgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgaW5pdGlhbGl6ZVJhbmRv
bU51bWJlckdlbmVyYXRvcigpOwogICAgICAgICBpbml0aWFsaXplTWFpblRocmVhZCgpOwogICAg
ICAgICBtYWluVGhyZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKLSAgICAgICAgc2V0
VGhyZWFkTmFtZUludGVybmFsKCJNYWluIFRocmVhZCIpOworICAgICAgICBpbml0aWFsaXplQ3Vy
cmVudFRocmVhZEludGVybmFsKCJNYWluIFRocmVhZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwIGIvSmF2YVNjcmlwdENv
cmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCmluZGV4IGI0ZjRkZTEuLmE2ZWM4ZjcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBU
aHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5
UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogICAgIHJldHVybiB0aHJlYWRJRDsKIH0KIAotdm9pZCBz
ZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciopCit2b2lkIGluaXRpYWxpemVDdXJyZW50
VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhy
ZWFkaW5nUXQuY3BwCmluZGV4IDFmZGQyYmIuLmE0YzE1YzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3F0
L1RocmVhZGluZ1F0LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIFRocmVhZElkZW50aWZpZXIgY3Jl
YXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwg
Y29uCiAgICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JUaHJlYWQodGhyZWFkUmVmKTsK
IH0KIAotdm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciopCit2b2lkIGluaXRp
YWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciopCiB7CiB9CiAK
</data>
<flag name="review"
          id="27095"
          type_id="1"
          status="-"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="27096"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45951</attachid>
            <date>2010-01-05 18:00:07 -0800</date>
            <delta_ts>2010-01-06 13:46:11 -0800</delta_ts>
            <desc>Patch with test.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27136</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsgYi9KYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCmluZGV4IDFkZDVlYzAuLmU3NmRhMzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0FuZHJvaWQubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawpAQCAtMTU5LDYg
KzE1OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1JhbmRvbU51bWJlci5jcHAgXAog
CXd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAl3dGYvVENTeXN0ZW1BbGxvYy5jcHAg
XAorCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAogCVwKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52
OC53dGYubWsKaW5kZXggNTNhNTBkOS4uNjkxMjhkNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQW5kcm9pZC52OC53dGYubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52OC53dGYu
bWsKQEAgLTQyLDYgKzQyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvUmFuZG9tTnVt
YmVyLmNwcCBcCiAJd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogCXd0Zi9UQ1N5c3Rl
bUFsbG9jLmNwcCBcCisJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAl3
dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCiAJXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDlmZmIxOTkuLjFjMGNkNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAor
MjAwOS0wMS0wNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2Yg
VGhyZWFkSWRlbnRpZmllcnMgaW4gdGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICBU
ZXN0IGlzIGFkZGVkIHRvIER1bXBSZW5kZXJUcmVlLm1tLgorCisgICAgICAgICogQW5kcm9pZC5t
azogQWRkZWQgZmlsZSBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLihofGNwcCkgdG8gYnVp
bGQuCisgICAgICAgICogQW5kcm9pZC52OC53dGYubWs6IERpdHRvLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlw
dENvcmUuZ3lwOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKworICAgICAgICAqIHd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcDogQWRk
ZWQuIENvbnRhaW5zIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0
YSB0aGF0IHVzZXMgY3VzdG9tIGRlc3RydWN0b3IuCisgICAgICAgIChXVEY6OlRocmVhZElkZW50
aWZpZXJEYXRhOjp+VGhyZWFkSWRlbnRpZmllckRhdGEpOiBSZW1vdmVzIHRoZSBUaHJlYWRJZGVu
dGlmaWVyIGZyb20gdGhlIHRocmVhZE1hcC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmll
ckRhdGE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZElkZW50aWZpZXJEYXRhOjpkZXN0cnVj
dCk6IEN1c3RvbSB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3Rvci4gUmVzZXRzIHRoZSB2YWx1ZSBm
b3IgdGhlIGtleSBhZ2FpbiB0byBjYXVzZSBzZWNvbmQgaW52b2tlLgorICAgICAgICAoV1RGOjpU
aHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIpOgorICAgICAgICAo
V1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UpOiBOZWVkIHRvIHVz
ZSBwdGhyZWFkX29uY2Ugc2luY2UgaW5pdGlhbGl6YXRpb24gbWF5IGNvbWUgb24gYW55IHRocmVh
ZChzKS4KKyAgICAgICAgKiB3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmllckRhdGE6OlRocmVhZElkZW50aWZpZXJE
YXRhKToKKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjp0aHJl
YWRFbnRyeVBvaW50KTogTW92ZSBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHRvIGFm
dGVyIHRoZSBsb2NrIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
cmUgaXQgaXMgaW52b2tlZCB3aGVuIFRocmVhZElkZW50aWZpZXIgaXMgYWxyZWFkeSBlc3RhYmxp
c2hlZC4KKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogUmVuYW1lIHNldFRocmVhZE5hbWVJ
bnRlcm5hbCAtPiBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHNpbmNlIGl0IGRvZXMg
bW9yZSB0aGVuIG9ubHkgc2V0IHRoZSBuYW1lIG5vdy4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Tm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwp
OiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplVGhyZWFkaW5nKTogRGl0dG8uCisgICAgICAgICogd3RmL2d0ay9UaHJlYWRpbmdH
dGsuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKTog
RGl0dG8uCisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorCisgICAgICAgICogd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6ZXN0YWJsaXNoSWRlbnRpZmll
ckZvclB0aHJlYWRIYW5kbGUpOgorICAgICAgICAoV1RGOjpjbGVhclB0aHJlYWRIYW5kbGVGb3JJ
ZGVudGlmaWVyKTogTWFrZSBpdCBub3QgJ3N0YXRpYycgc28gdGhlIH5UaHJlYWRJZGVudGlmaWVy
RGF0YSgpIGluIGFub3RoZXIgZmlsZSBjYW4gY2FsbCBpdC4KKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IFNldCB0aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEu
IFRoZSBUaHJlYWRJZGVudGlmaWVyIGlzIGFscmVhZHkgZXN0YWJsaXNoZWQgYnkgY3JlYXRpbmcg
dGhyZWFkLgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbik6IFJlbW92ZSBj
YWxsIHRvIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIodGhyZWFkSUQpIHNpbmNlIGl0
IGlzIG5vdyBkb25lIGluIH5UaHJlYWRJZGVudGlmaWVyRGF0YSgpLgorICAgICAgICAoV1RGOjpk
ZXRhY2hUaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y3VycmVudFRocmVhZCk6IFVzZSB0
aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEgdG8gZ2V0IHRoZSBUaHJlYWRJZGVudGlmaWVyLiBJdCdz
IG1hbnkgdGltZXMgZmFzdGVyIHRoZW4gTXV0ZXgtcHJvdGVjdGVkIGl0ZXJhdGlvbiB0aHJvdWdo
IHRoZSBtYXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBzZXQgdGhlIHRo
cmVhZC1zcGVjaWZpYyBkYXRhIGlmIGNhbGxlZCBmaXJzdCB0aW1lIG9uIHRoZSB0aHJlYWQuCisK
IDIwMTAtMDEtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbSBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDEz
ZDYwOTIuLjdhYzZhOGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWNr
ZWRDYWNoZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWdlTWFwLmggXAogCUphdmFTY3Jp
cHRDb3JlL3d0Zi9UQ1NwaW5Mb2NrLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVj
aWZpYy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS93dGYvVHlwZVRyYWl0cy5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJh
aXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9VbnVzZWRQYXJhbS5oIFwKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlwdENvcmUuZ3lwCmluZGV4
IDY0ZTIwYTIuLjY2ZjQwZTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cApAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgICAn
Y29uZGl0aW9ucyc6IFsKICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgJ3NvdXJj
ZXMvJzogWworICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHNcXC4oaHxjcHApJCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZGluZ1B0
aHJlYWRzXFwuY3BwJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ1RocmVhZChpbmd8U3Bl
Y2lmaWMpV2luXFwuY3BwJCddCiAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCmluZGV4IGMzMWNmY2UuLjI0NTc3ZGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQpAQCAtNDE4LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAnd3RmL1RDU3BpbkxvY2suaCcsCiAg
ICAgICAgICAgICAnd3RmL1RDU3lzdGVtQWxsb2MuY3BwJywKICAgICAgICAgICAgICd3dGYvVENT
eXN0ZW1BbGxvYy5oJywKKyAgICAgICAgICAgICd3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuY3BwJywKICAgICAgICAgICAgICd3dGYv
VGhyZWFkaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmdOb25lLmNwcCcsCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhMTE0ODY2Li5hZGUxYmUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Nyw2
ICsxNzcsOCBAQAogCQkxNEY4QkE0RjEwN0VDODk5MDA5ODkyREMgLyogQ29sbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODUyMDI1
NTU5N0QwMUZGNjBGNyAvKiBDb2xsZWN0b3IuY3BwICovOyB9OwogCQkxODBCOUIwODBGMTZEOTRG
MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE4MEI5QUYwMEYxNkM1NjkwMDlCREJDNSAvKiBDdXJyZW50VGltZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4MEI5
QkZFMEYxNkU5NEQwMDlCREJDNSAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuY3BwICovOyB9OworCQkxOEJBQjU1MzEwREFFMDU0MDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyNzEwREFERkNEMDAwRDk0NUIgLyogVGhyZWFkSWRl
bnRpZmllckRhdGFQdGhyZWFkcy5jcHAgKi87IH07CisJCTE4QkFCNTU0MTBEQUUwNjYwMDBEOTQ1
QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyODEwREFERkNEMDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovOyB9OwogCQkxQzYxNTE2QzBFQkFDN0EwMDAz
MTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2QTBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2
ZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tc3RyaWN0LWFsaWFz
aW5nIjsgfTsgfTsKIAkJMUM2MTUxNkQwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2
QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTY1NCw2ICs2NTYsOCBAQAogCQkxNEYzNDg4RTBFOTVF
RjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VycmVudFRpbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VycmVudFRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThCQUI1MjcxMERBREZDRDAwMEQ5
NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4QkFCNTI4MTBEQURGQ0QwMDBEOTQ1QiAvKiBU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvZmlsZXJTZXJ2ZXIu
bW07IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkIwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyU2VydmVyLmg7IHBhdGgg
PSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzkwNTE0MjBCQTlFOEE3MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM3MSw2ICsxMzc1LDggQEAKIAkJCQk2NTQxQkQ2RjA4RTgwQTE3MDAy
Q0JFRTcgLyogVENTcGluTG9jay5oICovLAogCQkJCTY1NDFCRDcwMDhFODBBMTcwMDJDQkVFNyAv
KiBUQ1N5c3RlbUFsbG9jLmNwcCAqLywKIAkJCQk2NTQxQkQ3MTA4RTgwQTE3MDAyQ0JFRTcgLyog
VENTeXN0ZW1BbGxvYy5oICovLAorCQkJCTE4QkFCNTI3MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJl
YWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCAqLywKKwkJCQkxOEJBQjUyODEwREFERkNEMDAw
RDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovLAogCQkJCTVENkE1NjZB
MEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcuY3BwICovLAogCQkJCUUxRUU3OTIyMEQ2Qzk1
Q0QwMEZFQTNCQSAvKiBUaHJlYWRpbmcuaCAqLywKIAkJCQlFMUVFNzkzQzBENkM5QjkyMDBGRUEz
QkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwICovLApAQCAtMjAzOCw2ICsyMDQ0LDcgQEAKIAkJ
CQkxNDhDRDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIwQkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vh
a1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OThC
ODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4Njk4QkIzOTEwRDg2QkFGMDBEOEQwMUIgLyogVVN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDM1REIxMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFrR0NQdHIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQ3NSw2ICsyNDgyLDcgQEAKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjBEMEMwRUYwQjhB
NTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
RjhCQTQzMTA3RUM4OEMwMDk4OTJEQyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE4QkFCNTUzMTBEQUUwNTQwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0
aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAv
KiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRTc5M0QwRDZDOUI5MjAwRkVB
M0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNG
MEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjc5ZWEwCi0tLSAvZGV2L251
bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
Y3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoUFRIUkVB
RFMpCisKKyNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCisjaW5jbHVk
ZSAiVGhyZWFkaW5nLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitwdGhyZWFkX2tleV90IFRocmVh
ZElkZW50aWZpZXJEYXRhOjptX2tleTsKKwordm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVu
dGlmaWVyKFRocmVhZElkZW50aWZpZXIpOworCitUaHJlYWRJZGVudGlmaWVyRGF0YTo6flRocmVh
ZElkZW50aWZpZXJEYXRhKCkKK3sKKyAgICBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVy
KG1faWRlbnRpZmllcik7Cit9CisKK1RocmVhZElkZW50aWZpZXIgVGhyZWFkSWRlbnRpZmllckRh
dGE6OmlkZW50aWZpZXIoKQoreworICAgIGluaXRpYWxpemVLZXlPbmNlKCk7CisgICAgVGhyZWFk
SWRlbnRpZmllckRhdGEqIHRoaXNfcHRyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSWRlbnRpZmllckRh
dGEqPihwdGhyZWFkX2dldHNwZWNpZmljKG1fa2V5KSk7CisKKyAgICByZXR1cm4gdGhpc19wdHIg
PyB0aGlzX3B0ci0+bV9pZGVudGlmaWVyIDogMDsKK30KKwordm9pZCBUaHJlYWRJZGVudGlmaWVy
RGF0YTo6aW5pdGlhbGl6ZShUaHJlYWRJZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVCghaWRl
bnRpZmllcigpKTsKKworICAgIGluaXRpYWxpemVLZXlPbmNlKCk7CisgICAgcHRocmVhZF9zZXRz
cGVjaWZpYyhtX2tleSwgbmV3IFRocmVhZElkZW50aWZpZXJEYXRhKGlkKSk7Cit9CisKK3ZvaWQg
VGhyZWFkSWRlbnRpZmllckRhdGE6OmRlc3RydWN0KHZvaWQqIGRhdGEpCit7CisgICAgVGhyZWFk
SWRlbnRpZmllckRhdGEqIHRoaXNfcHRyID0gc3RhdGljX2Nhc3Q8VGhyZWFkSWRlbnRpZmllckRh
dGEqPihkYXRhKTsKKyAgICBBU1NFUlQodGhpc19wdHIpOworCisgICAgaWYgKHRoaXNfcHRyLT5t
X2lzRGVzdHJveWVkT25jZSkgeworICAgICAgICBkZWxldGUgdGhpc19wdHI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB0aGlzX3B0ci0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOwor
ICAgIC8vIFJlLXNldHRpbmcgdGhlIHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1
Y3QoKSBjYWxsIGFmdGVyIGFsbCBvdGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2Vy
ZSBjYWxsZWQuCisgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX2tleSwgdGhpc19wdHIpOworfQor
Cit2b2lkIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplS2V5T25jZUhlbHBlcigpCit7
CisgICAgaWYgKHB0aHJlYWRfa2V5X2NyZWF0ZSgmbV9rZXksIGRlc3RydWN0KSkKKyAgICAgICAg
Q1JBU0goKTsKK30KKwordm9pZCBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9u
Y2UoKQoreworICAgIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBvbmNlQ29udHJvbCA9IFBUSFJFQURf
T05DRV9JTklUOworICAgIGlmIChwdGhyZWFkX29uY2UoJm9uY2VDb250cm9sLCBpbml0aWFsaXpl
S2V5T25jZUhlbHBlcikpCisgICAgICAgIENSQVNIKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gVVNFKFBUSFJFQURTKQorCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zYWY4N2E4Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaApAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzX2gKKyNkZWZpbmUgVGhyZWFkSWRlbnRpZmllckRh
dGFQdGhyZWFkc19oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBIb2xkcyBUaHJlYWRJZGVu
dGlmaWVyIGluIHRoZSB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSBhbmQgZW1wbG95cyBwdGhyZWFk
cy1zcGVjaWZpYyAyLXBhc3MgZGVzdHJ1Y3Rpb24gdG8gcmVsaWFibHkgcmVtb3ZlCisvLyBUaHJl
YWRJZGVudGlmaWVyIGZyb20gdGhyZWFkTWFwLiBJdCBhc3N1bWVzIHJlZ3VsYXIgVGhyZWFkU3Bl
Y2lmaWMgdHlwZXMgZG9uJ3QgdXNlIG11bHRpcGxlLXBhc3MgZGVzdHJ1Y3Rpb24uCitjbGFzcyBU
aHJlYWRJZGVudGlmaWVyRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAg
flRocmVhZElkZW50aWZpZXJEYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuZCBwdXRzIGFuIGlu
c3RhbmNlIG9mIFRocmVhZElkZW50aWZpZXJEYXRhIGludG8gdGhyZWFkLXNwZWNpZmljIHN0b3Jh
Z2UuCisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUaHJlYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIpOworCisgICAgLy8gUmV0dXJucyAwIGlmIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlIHdhcyBu
b3QgaW5pdGlhbGl6ZWQuCisgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllcigp
OworCitwcml2YXRlOgorICAgIFRocmVhZElkZW50aWZpZXJEYXRhKFRocmVhZElkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAg
LCBtX2lzRGVzdHJveWVkT25jZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVGhpcyB0
aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvciBpcyBjYWxsZWQgMiB0aW1lcyB3aGVuIHRocmVhZCB0
ZXJtaW5hdGVzOgorICAgIC8vIC0gZmlyc3QsIHdoZW4gYWxsIHRoZSBvdGhlciB0aHJlYWQtc3Bl
Y2lmaWMgZGVzdHJ1Y3RvcnMgYXJlIGNhbGxlZCwgaXQgc2ltcGx5IHJlbWVtYmVycyBpdCB3YXMg
J2Rlc3Ryb3llZCBvbmNlJworICAgIC8vIGFuZCByZS1zZXRzIGl0c2VsZiBpbnRvIHRoZSB0aHJl
YWQtc3BlY2lmaWMgc2xvdCB0byBtYWtlIFB0aHJlYWRzIHRvIGNhbGwgaXQgYWdhaW4gbGF0ZXIu
CisgICAgLy8gLSBzZWNvbmQsIGFmdGVyIGFsbCB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMg
d2VyZSBpbnZva2VkLCBpdCBnZXRzIGNhbGxlZCBhZ2FpbiAtIHRoaXMgdGltZSwgd2UgcmVtb3Zl
IHRoZQorICAgIC8vIFRocmVhZElkZW50aWZpZXIgZnJvbSB0aGUgdGhyZWFkTWFwLCBjb21wbGV0
aW5nIHRoZSBjbGVhbnVwLgorICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KHZvaWQqIGRhdGEpOwor
CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIoKTsKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplS2V5T25jZSgpOworCisgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZTsKKyAgICBzdGF0aWMgcHRocmVhZF9r
ZXlfdCBtX2tleTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVGhyZWFk
SWRlbnRpZmllckRhdGFQdGhyZWFkc19oCisKKwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcAppbmRl
eCA3NGM0N2Y0Li40OWRlNTllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcApAQCAtNDksMTMg
KzQ5LDE0IEBAIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZvaWQqIGNvbnRleHREYXRh
KQogewogICAgIE5ld1RocmVhZENvbnRleHQqIGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PE5l
d1RocmVhZENvbnRleHQqPihjb250ZXh0RGF0YSk7CiAKLSAgICBzZXRUaHJlYWROYW1lSW50ZXJu
YWwoY29udGV4dC0+bmFtZSk7Ci0KLSAgICAvLyBCbG9jayB1bnRpbCBvdXIgY3JlYXRpbmcgdGhy
ZWFkIGhhcyBjb21wbGV0ZWQgYW55IGV4dHJhIHNldHVwIHdvcmsuCisgICAgLy8gQmxvY2sgdW50
aWwgb3VyIGNyZWF0aW5nIHRocmVhZCBoYXMgY29tcGxldGVkIGFueSBleHRyYSBzZXR1cCB3b3Jr
LCBpbmNsdWRpbmcKKyAgICAvLyBlc3RhYmxpc2hpbmcgVGhyZWFkSWRlbnRpZmllci4KICAgICB7
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihjb250ZXh0LT5jcmVhdGlvbk11dGV4KTsKICAg
ICB9CiAKKyAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnRleHQtPm5hbWUp
OworCiAgICAgLy8gR3JhYiB0aGUgaW5mbyB0aGF0IHdlIG5lZWQgb3V0IG9mIHRoZSBjb250ZXh0
LCB0aGVuIGRlYWxsb2NhdGUgaXQuCiAgICAgVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCA9IGNv
bnRleHQtPmVudHJ5UG9pbnQ7CiAgICAgdm9pZCogZGF0YSA9IGNvbnRleHQtPmRhdGE7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nLmgKaW5kZXggM2E2YWU1OS4uMTU5OTU2MiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuaApAQCAtMTIxLDcgKzEyMSw3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50
ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROCiAKIC8vIENh
bGxlZCBpbiB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIC8vIEhlbHBmdWwgZm9y
IHBsYXRmb3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4g
dGhlIHRocmVhZC4KLXZvaWQgc2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRocmVh
ZE5hbWUpOwordm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIq
IHRocmVhZE5hbWUpOwogCiBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKIGJvb2wg
aXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
Tm9uZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5jcHAKaW5kZXggNjNh
MGFkYS4uMmU4YTI1OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05v
bmUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25lLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkg
eyB9CiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9u
LCB2b2lkKiwgY29uc3QgY2hhciopIHsgcmV0dXJuIFRocmVhZElkZW50aWZpZXIoKTsgfQotdm9p
ZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciopIHsgfQordm9pZCBpbml0aWFsaXpl
Q3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqKSB7IH0KIGludCB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopIHsgcmV0dXJuIDA7IH0KIHZvaWQg
ZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpIHsgfQogVGhyZWFkSWRlbnRpZmllciBjdXJy
ZW50VGhyZWFkKCkgeyByZXR1cm4gVGhyZWFkSWRlbnRpZmllcigpOyB9CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCA5ZjZmZjdjLi5kNjEwZDVmIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNp
bmNsdWRlICJNYWluVGhyZWFkLmgiCiAjaW5jbHVkZSAiUmFuZG9tTnVtYmVyU2VlZC5oIgogI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHMuaCIKKyNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlVudXNlZFBh
cmFtLmgiCiAjaW5jbHVkZSA8ZXJybm8uaD4KIApAQCAtMTA4LDcgKzExMCw3IEBAIHN0YXRpYyBU
aHJlYWRJZGVudGlmaWVyIGlkZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUoY29uc3QgcHRocmVhZF90
JiBwdGhyZWFkSGFuZGxlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBUaHJlYWRJZGVudGlm
aWVyIGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHB0aHJlYWRfdCYgcHRocmVh
ZEhhbmRsZSkKK3N0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGVzdGFibGlzaElkZW50aWZpZXJGb3JQ
dGhyZWFkSGFuZGxlKGNvbnN0IHB0aHJlYWRfdCYgcHRocmVhZEhhbmRsZSkKIHsKICAgICBBU1NF
UlQoIWlkZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUocHRocmVhZEhhbmRsZSkpOwogCkBAIC0xMjgs
NyArMTMwLDcgQEAgc3RhdGljIHB0aHJlYWRfdCBwdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihU
aHJlYWRJZGVudGlmaWVyIGlkKQogICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoaWQpOwogfQog
Ci1zdGF0aWMgdm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50
aWZpZXIgaWQpCit2b2lkIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRl
bnRpZmllciBpZCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7
CiAKQEAgLTE4NSwxMyArMTg3LDE3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50
ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiB9CiAjZW5k
aWYKIAotdm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSkK
K3ZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKQogewogI2lmIEhBVkUoUFRIUkVBRF9TRVROQU1FX05QKQogICAgIHB0aHJlYWRfc2V0bmFt
ZV9ucCh0aHJlYWROYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRocmVhZE5hbWUpOwog
I2VuZGlmCisKKyAgICBUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5UHRocmVhZEhh
bmRsZShwdGhyZWFkX3NlbGYoKSk7CisgICAgQVNTRVJUKGlkKTsKKyAgICBUaHJlYWRJZGVudGlm
aWVyRGF0YTo6aW5pdGlhbGl6ZShpZCk7CiB9CiAKIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElELCB2b2lkKiogcmVzdWx0KQpAQCAtMjA0LDcgKzIx
MCw2IEBAIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVh
ZElELCB2b2lkKiogcmVzdWx0KQogICAgIGlmIChqb2luUmVzdWx0ID09IEVERUFETEspCiAgICAg
ICAgIExPR19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxv
Y2tlZCB0cnlpbmcgdG8gcXVpdCIsIHRocmVhZElEKTsKIAotICAgIGNsZWFyUHRocmVhZEhhbmRs
ZUZvcklkZW50aWZpZXIodGhyZWFkSUQpOwogICAgIHJldHVybiBqb2luUmVzdWx0OwogfQogCkBA
IC0yMTUsMTYgKzIyMCwxOCBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRo
cmVhZElEKQogICAgIHB0aHJlYWRfdCBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhhbmRsZUZvcklk
ZW50aWZpZXIodGhyZWFkSUQpOwogCiAgICAgcHRocmVhZF9kZXRhY2gocHRocmVhZEhhbmRsZSk7
Ci0KLSAgICBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKIH0KIAog
VGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKIHsKLSAgICBwdGhyZWFkX3QgY3VycmVu
dFRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwotICAgIGlmIChUaHJlYWRJZGVudGlmaWVyIGlkID0g
aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShjdXJyZW50VGhyZWFkKSkKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIGlkID0gVGhyZWFkSWRlbnRpZmllckRhdGE6OmlkZW50aWZpZXIoKTsKKyAgICBpZiAo
aWQpCiAgICAgICAgIHJldHVybiBpZDsKLSAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZv
clB0aHJlYWRIYW5kbGUoY3VycmVudFRocmVhZCk7CisKKyAgICAvLyBOb3QgYSBXVEYtY3JlYXRl
ZCB0aHJlYWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KKyAgICBp
ZCA9IGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsK
KyAgICBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZShpZCk7CisgICAgcmV0dXJuIGlk
OwogfQogCiBib29sIGlzTWFpblRocmVhZCgpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nV2luLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3Bw
CmluZGV4IDFmZDg0ZDIuLjczYzNmMGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdXaW4uY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3Bw
CkBAIC0xMTgsNyArMTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFnVEhSRUFETkFNRV9JTkZPIHsK
IH0gVEhSRUFETkFNRV9JTkZPOwogI3ByYWdtYSBwYWNrKHBvcCkKIAotdm9pZCBzZXRUaHJlYWRO
YW1lSW50ZXJuYWwoY29uc3QgY2hhciogc3pUaHJlYWROYW1lKQordm9pZCBpbml0aWFsaXplQ3Vy
cmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHN6VGhyZWFkTmFtZSkKIHsKICAgICBUSFJF
QUROQU1FX0lORk8gaW5mbzsKICAgICBpbmZvLmR3VHlwZSA9IDB4MTAwMDsKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBpbml0aWFsaXplUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAgICAgICAgIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAg
ICAgICAgIG1haW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOwotICAgICAgICBz
ZXRUaHJlYWROYW1lSW50ZXJuYWwoIk1haW4gVGhyZWFkIik7CisgICAgICAgIGluaXRpYWxpemVD
dXJyZW50VGhyZWFkSW50ZXJuYWwoIk1haW4gVGhyZWFkIik7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAgYi9KYXZhU2NyaXB0
Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKaW5kZXggYjRmNGRlMS4uYTZlYzhmNyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50
cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiAgICAgcmV0dXJuIHRocmVhZElEOwogfQogCi12b2lk
IHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKikKK3ZvaWQgaW5pdGlhbGl6ZUN1cnJl
bnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9U
aHJlYWRpbmdRdC5jcHAKaW5kZXggOWJkNDAwYy4uZGMwNGE2OCAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYv
cXQvVGhyZWFkaW5nUXQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRh
LCBjb24KICAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCh0aHJlYWRSZWYp
OwogfQogCi12b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKikKK3ZvaWQgaW5p
dGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ2Y2U3ODIuLjFlNzIwMDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wMS0wNSAgRG1p
dHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2YgVGhyZWFkSWRlbnRpZmll
cnMgaW4gdGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0
byB2ZXJpZnkgdGhlIFRocmVhZElkZW50aWZpZXJzIGFyZSBub3QgcmV1c2VkIGFjcm9zcyB0aHJl
YWRzLgorICAgICAgICBUaGUgdGVzdCBydW5zIGluIHRoZSBiZWdpbm5pbmcgb2YgRHVtcFJlbmRl
clRyZWUgYW5kIHNwYXducyAyIG5vbi1XVEYgdHJlYWRzIHNlcXVlbnRpYWxseSwKKyAgICAgICAg
d2FpdGluZyBmb3IgdGhlIHByZXZpb3VzIHRocmVhZCB0byB0ZXJtaW5hdGUgYmVmb3JlIHN0YXJ0
aW5nIHRoZSBuZXh0LgorICAgICAgICBUaGUgdHJlYWRzIHVzZSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSBpbiB0aGVpciB0aHJlYWQgZnVuY3Rpb24uIFdpdGhvdXQgYSBmaXgsIHRoaXMKKyAgICAgICAg
Y2F1c2VzIGJvdGggdGhyZWFkcyB0byBoYXZlIHRoZSBzYW1lIFRocmVhZElkZW50aWZpZXIgd2hp
Y2ggdHJpZ2dlcnMgQVNTRVJUIGluIHRocmVhZCBmdW5jdGlvbi4KKyAgICAgICAgSXQgYWxzbyBz
dGFydHMgYW5vdGhlciB0aHJlYWQgdXNpbmcgV1RGLiBXaXRob3V0IHRoZSBmaXgsIHRoaXMgZmlu
ZHMgcHRocmVhZCBoYW5kbGUgZnJvbSBwcmV2aW91cworICAgICAgICB0aHJlYWRzIGluIHRoZSBX
VEYgdGhyZWFkTWFwIGFuZCBhc3NlcnRzIGluIFdURjo6ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0
aHJlYWRIYW5kbGUoKS4KKyAgICAgICAgVGhlIHRlc3QgcHJhY3RpY2FsbHkgZG9lcyBub3QgYWZm
ZWN0IHRoZSBEUlQgcnVuIHRpbWUgYmVjYXVzZSB0aGUgdGhyZWFkcyBlbmQgaW1tZWRpYXRlbHku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAg
ICAgIChydW5UaHJlYWQpOiBUZXN0IHRocmVhZCBmdW5jdGlvbi4KKyAgICAgICAgKHRlc3RUaHJl
YWRJZGVudGlmaWVyTWFwKToKKyAgICAgICAgKGR1bXBSZW5kZXJUcmVlKToKKwogMjAxMC0wMS0w
NSAgQ2hyaXMgSmVyZG9uZWsgIDxjaHJpcy5qZXJkb25la0BnbWFpbC5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDRmZmVhYzMuLjM5MjFjNjcgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTgw
LDYgKzgwLDcgQEAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1Ro
cmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwpAQCAtNDY2LDYgKzQ2NywzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVu
dFZhbHVlc0ZvclRlc3RpbmcoKQogCiB9CiAKK3N0YXRpYyB2b2lkKiBydW5UaHJlYWQodm9pZCog
YXJnKQoreworICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHByZXZpb3VzSWQgPSAwOworICAg
IFRocmVhZElkZW50aWZpZXIgY3VycmVudElkID0gY3VycmVudFRocmVhZCgpOworICAgIC8vIFZl
cmlmeSAyIHN1Y2Nlc3NpdmUgdGhyZWFkcyBkbyBub3QgZ2V0IHRoZSBzYW1lIElkLgorICAgIEFT
U0VSVChwcmV2aW91c0lkICE9IGN1cnJlbnRJZCk7CisgICAgcHJldmlvdXNJZCA9IGN1cnJlbnRJ
ZDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVzdFRocmVhZElkZW50aWZpZXJN
YXAoKQoreworICAgIC8vIEltaXRhdGUgJ2ZvcmVpZ24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNy
ZWF0ZWQgYnkgV1RGLgorICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgIHB0aHJlYWRfY3JlYXRl
KCZwdGhyZWFkLCAwLCAmcnVuVGhyZWFkLCAwKTsKKyAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwg
MCk7CisKKyAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1blRocmVhZCwgMCk7Cisg
ICAgcHRocmVhZF9qb2luKHB0aHJlYWQsIDApOworCisgICAgLy8gTm93IGNyZWF0ZSBhbm90aGVy
IHRocmVhZCB1c2luZyBXVEYuIE9uIE9TWCwgaXQgd2lsbCBoYXZlIHRoZSBzYW1lIHB0aHJlYWQg
aGFuZGxlCisgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQgVGhyZWFkSWRlbnRpZmll
ci4KKyAgICBjcmVhdGVUaHJlYWQgKHJ1blRocmVhZCwgMCwgMCk7Cit9CisKIHN0YXRpYyB2b2lk
IGNyYXNoSGFuZGxlcihpbnQgc2lnKQogewogICAgIGNoYXIgKnNpZ25hbE5hbWUgPSBzdHJzaWdu
YWwoc2lnKTsKQEAgLTYxNCw2ICs2NDAsOSBAQCB2b2lkIGR1bXBSZW5kZXJUcmVlKGludCBhcmdj
LCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzUyMjI5MTE+CiAg
ICAgdGVzdFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKCk7CiAKKyAgICAv
LyBodHRwOi8vd2Via2l0Lm9yZy9iLzMyNjg5CisgICAgdGVzdFRocmVhZElkZW50aWZpZXJNYXAo
KTsKKwogICAgIGlmICh0aHJlYWRlZCkKICAgICAgICAgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygp
OwogCg==
</data>
<flag name="commit-queue"
          id="28131"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45988</attachid>
            <date>2010-01-06 13:46:11 -0800</date>
            <delta_ts>2010-01-06 15:52:36 -0800</delta_ts>
            <desc>Patch with test and style fix.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27264</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsgYi9KYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCmluZGV4IDFkZDVlYzAuLmU3NmRhMzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0FuZHJvaWQubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawpAQCAtMTU5LDYg
KzE1OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1JhbmRvbU51bWJlci5jcHAgXAog
CXd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAl3dGYvVENTeXN0ZW1BbGxvYy5jcHAg
XAorCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAogCVwKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52
OC53dGYubWsKaW5kZXggNTNhNTBkOS4uNjkxMjhkNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQW5kcm9pZC52OC53dGYubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52OC53dGYu
bWsKQEAgLTQyLDYgKzQyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvUmFuZG9tTnVt
YmVyLmNwcCBcCiAJd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogCXd0Zi9UQ1N5c3Rl
bUFsbG9jLmNwcCBcCisJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAl3
dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCiAJXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDlmZmIxOTkuLjFjMGNkNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAor
MjAwOS0wMS0wNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2Yg
VGhyZWFkSWRlbnRpZmllcnMgaW4gdGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICBU
ZXN0IGlzIGFkZGVkIHRvIER1bXBSZW5kZXJUcmVlLm1tLgorCisgICAgICAgICogQW5kcm9pZC5t
azogQWRkZWQgZmlsZSBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLihofGNwcCkgdG8gYnVp
bGQuCisgICAgICAgICogQW5kcm9pZC52OC53dGYubWs6IERpdHRvLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlw
dENvcmUuZ3lwOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKworICAgICAgICAqIHd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcDogQWRk
ZWQuIENvbnRhaW5zIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0
YSB0aGF0IHVzZXMgY3VzdG9tIGRlc3RydWN0b3IuCisgICAgICAgIChXVEY6OlRocmVhZElkZW50
aWZpZXJEYXRhOjp+VGhyZWFkSWRlbnRpZmllckRhdGEpOiBSZW1vdmVzIHRoZSBUaHJlYWRJZGVu
dGlmaWVyIGZyb20gdGhlIHRocmVhZE1hcC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmll
ckRhdGE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZElkZW50aWZpZXJEYXRhOjpkZXN0cnVj
dCk6IEN1c3RvbSB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3Rvci4gUmVzZXRzIHRoZSB2YWx1ZSBm
b3IgdGhlIGtleSBhZ2FpbiB0byBjYXVzZSBzZWNvbmQgaW52b2tlLgorICAgICAgICAoV1RGOjpU
aHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIpOgorICAgICAgICAo
V1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UpOiBOZWVkIHRvIHVz
ZSBwdGhyZWFkX29uY2Ugc2luY2UgaW5pdGlhbGl6YXRpb24gbWF5IGNvbWUgb24gYW55IHRocmVh
ZChzKS4KKyAgICAgICAgKiB3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmllckRhdGE6OlRocmVhZElkZW50aWZpZXJE
YXRhKToKKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjp0aHJl
YWRFbnRyeVBvaW50KTogTW92ZSBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHRvIGFm
dGVyIHRoZSBsb2NrIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
cmUgaXQgaXMgaW52b2tlZCB3aGVuIFRocmVhZElkZW50aWZpZXIgaXMgYWxyZWFkeSBlc3RhYmxp
c2hlZC4KKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogUmVuYW1lIHNldFRocmVhZE5hbWVJ
bnRlcm5hbCAtPiBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHNpbmNlIGl0IGRvZXMg
bW9yZSB0aGVuIG9ubHkgc2V0IHRoZSBuYW1lIG5vdy4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Tm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwp
OiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplVGhyZWFkaW5nKTogRGl0dG8uCisgICAgICAgICogd3RmL2d0ay9UaHJlYWRpbmdH
dGsuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKTog
RGl0dG8uCisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorCisgICAgICAgICogd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6ZXN0YWJsaXNoSWRlbnRpZmll
ckZvclB0aHJlYWRIYW5kbGUpOgorICAgICAgICAoV1RGOjpjbGVhclB0aHJlYWRIYW5kbGVGb3JJ
ZGVudGlmaWVyKTogTWFrZSBpdCBub3QgJ3N0YXRpYycgc28gdGhlIH5UaHJlYWRJZGVudGlmaWVy
RGF0YSgpIGluIGFub3RoZXIgZmlsZSBjYW4gY2FsbCBpdC4KKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IFNldCB0aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEu
IFRoZSBUaHJlYWRJZGVudGlmaWVyIGlzIGFscmVhZHkgZXN0YWJsaXNoZWQgYnkgY3JlYXRpbmcg
dGhyZWFkLgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbik6IFJlbW92ZSBj
YWxsIHRvIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIodGhyZWFkSUQpIHNpbmNlIGl0
IGlzIG5vdyBkb25lIGluIH5UaHJlYWRJZGVudGlmaWVyRGF0YSgpLgorICAgICAgICAoV1RGOjpk
ZXRhY2hUaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y3VycmVudFRocmVhZCk6IFVzZSB0
aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEgdG8gZ2V0IHRoZSBUaHJlYWRJZGVudGlmaWVyLiBJdCdz
IG1hbnkgdGltZXMgZmFzdGVyIHRoZW4gTXV0ZXgtcHJvdGVjdGVkIGl0ZXJhdGlvbiB0aHJvdWdo
IHRoZSBtYXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBzZXQgdGhlIHRo
cmVhZC1zcGVjaWZpYyBkYXRhIGlmIGNhbGxlZCBmaXJzdCB0aW1lIG9uIHRoZSB0aHJlYWQuCisK
IDIwMTAtMDEtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbSBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDEz
ZDYwOTIuLjdhYzZhOGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWNr
ZWRDYWNoZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWdlTWFwLmggXAogCUphdmFTY3Jp
cHRDb3JlL3d0Zi9UQ1NwaW5Mb2NrLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVj
aWZpYy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS93dGYvVHlwZVRyYWl0cy5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJh
aXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9VbnVzZWRQYXJhbS5oIFwKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlwdENvcmUuZ3lwCmluZGV4
IDY0ZTIwYTIuLjY2ZjQwZTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cApAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgICAn
Y29uZGl0aW9ucyc6IFsKICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgJ3NvdXJj
ZXMvJzogWworICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHNcXC4oaHxjcHApJCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZGluZ1B0
aHJlYWRzXFwuY3BwJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ1RocmVhZChpbmd8U3Bl
Y2lmaWMpV2luXFwuY3BwJCddCiAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCmluZGV4IGMzMWNmY2UuLjI0NTc3ZGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQpAQCAtNDE4LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAnd3RmL1RDU3BpbkxvY2suaCcsCiAg
ICAgICAgICAgICAnd3RmL1RDU3lzdGVtQWxsb2MuY3BwJywKICAgICAgICAgICAgICd3dGYvVENT
eXN0ZW1BbGxvYy5oJywKKyAgICAgICAgICAgICd3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuY3BwJywKICAgICAgICAgICAgICd3dGYv
VGhyZWFkaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmdOb25lLmNwcCcsCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhMTE0ODY2Li5hZGUxYmUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Nyw2
ICsxNzcsOCBAQAogCQkxNEY4QkE0RjEwN0VDODk5MDA5ODkyREMgLyogQ29sbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODUyMDI1
NTU5N0QwMUZGNjBGNyAvKiBDb2xsZWN0b3IuY3BwICovOyB9OwogCQkxODBCOUIwODBGMTZEOTRG
MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE4MEI5QUYwMEYxNkM1NjkwMDlCREJDNSAvKiBDdXJyZW50VGltZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4MEI5
QkZFMEYxNkU5NEQwMDlCREJDNSAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuY3BwICovOyB9OworCQkxOEJBQjU1MzEwREFFMDU0MDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyNzEwREFERkNEMDAwRDk0NUIgLyogVGhyZWFkSWRl
bnRpZmllckRhdGFQdGhyZWFkcy5jcHAgKi87IH07CisJCTE4QkFCNTU0MTBEQUUwNjYwMDBEOTQ1
QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyODEwREFERkNEMDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovOyB9OwogCQkxQzYxNTE2QzBFQkFDN0EwMDAz
MTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2QTBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2
ZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tc3RyaWN0LWFsaWFz
aW5nIjsgfTsgfTsKIAkJMUM2MTUxNkQwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2
QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTY1NCw2ICs2NTYsOCBAQAogCQkxNEYzNDg4RTBFOTVF
RjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VycmVudFRpbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VycmVudFRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThCQUI1MjcxMERBREZDRDAwMEQ5
NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4QkFCNTI4MTBEQURGQ0QwMDBEOTQ1QiAvKiBU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvZmlsZXJTZXJ2ZXIu
bW07IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkIwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyU2VydmVyLmg7IHBhdGgg
PSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzkwNTE0MjBCQTlFOEE3MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM3MSw2ICsxMzc1LDggQEAKIAkJCQk2NTQxQkQ2RjA4RTgwQTE3MDAy
Q0JFRTcgLyogVENTcGluTG9jay5oICovLAogCQkJCTY1NDFCRDcwMDhFODBBMTcwMDJDQkVFNyAv
KiBUQ1N5c3RlbUFsbG9jLmNwcCAqLywKIAkJCQk2NTQxQkQ3MTA4RTgwQTE3MDAyQ0JFRTcgLyog
VENTeXN0ZW1BbGxvYy5oICovLAorCQkJCTE4QkFCNTI3MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJl
YWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCAqLywKKwkJCQkxOEJBQjUyODEwREFERkNEMDAw
RDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovLAogCQkJCTVENkE1NjZB
MEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcuY3BwICovLAogCQkJCUUxRUU3OTIyMEQ2Qzk1
Q0QwMEZFQTNCQSAvKiBUaHJlYWRpbmcuaCAqLywKIAkJCQlFMUVFNzkzQzBENkM5QjkyMDBGRUEz
QkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwICovLApAQCAtMjAzOCw2ICsyMDQ0LDcgQEAKIAkJ
CQkxNDhDRDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIwQkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vh
a1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OThC
ODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4Njk4QkIzOTEwRDg2QkFGMDBEOEQwMUIgLyogVVN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDM1REIxMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFrR0NQdHIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQ3NSw2ICsyNDgyLDcgQEAKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjBEMEMwRUYwQjhB
NTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
RjhCQTQzMTA3RUM4OEMwMDk4OTJEQyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE4QkFCNTUzMTBEQUUwNTQwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0
aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAv
KiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRTc5M0QwRDZDOUI5MjAwRkVB
M0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNG
MEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODJiNDk0Ci0tLSAvZGV2L251
bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
Y3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoUFRIUkVB
RFMpCisKKyNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCisjaW5jbHVk
ZSAiVGhyZWFkaW5nLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitwdGhyZWFkX2tleV90IFRocmVh
ZElkZW50aWZpZXJEYXRhOjptX2tleTsKKwordm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVu
dGlmaWVyKFRocmVhZElkZW50aWZpZXIpOworCitUaHJlYWRJZGVudGlmaWVyRGF0YTo6flRocmVh
ZElkZW50aWZpZXJEYXRhKCkKK3sKKyAgICBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVy
KG1faWRlbnRpZmllcik7Cit9CisKK1RocmVhZElkZW50aWZpZXIgVGhyZWFkSWRlbnRpZmllckRh
dGE6OmlkZW50aWZpZXIoKQoreworICAgIGluaXRpYWxpemVLZXlPbmNlKCk7CisgICAgVGhyZWFk
SWRlbnRpZmllckRhdGEqIHRocmVhZElkZW50aWZpZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFk
SWRlbnRpZmllckRhdGEqPihwdGhyZWFkX2dldHNwZWNpZmljKG1fa2V5KSk7CisKKyAgICByZXR1
cm4gdGhyZWFkSWRlbnRpZmllckRhdGEgPyB0aHJlYWRJZGVudGlmaWVyRGF0YS0+bV9pZGVudGlm
aWVyIDogMDsKK30KKwordm9pZCBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZShUaHJl
YWRJZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVCghaWRlbnRpZmllcigpKTsKKworICAgIGlu
aXRpYWxpemVLZXlPbmNlKCk7CisgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX2tleSwgbmV3IFRo
cmVhZElkZW50aWZpZXJEYXRhKGlkKSk7Cit9CisKK3ZvaWQgVGhyZWFkSWRlbnRpZmllckRhdGE6
OmRlc3RydWN0KHZvaWQqIGRhdGEpCit7CisgICAgVGhyZWFkSWRlbnRpZmllckRhdGEqIHRocmVh
ZElkZW50aWZpZXJEYXRhID0gc3RhdGljX2Nhc3Q8VGhyZWFkSWRlbnRpZmllckRhdGEqPihkYXRh
KTsKKyAgICBBU1NFUlQodGhyZWFkSWRlbnRpZmllckRhdGEpOworCisgICAgaWYgKHRocmVhZElk
ZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSkgeworICAgICAgICBkZWxldGUgdGhyZWFk
SWRlbnRpZmllckRhdGE7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0aHJlYWRJZGVu
dGlmaWVyRGF0YS0+bV9pc0Rlc3Ryb3llZE9uY2UgPSB0cnVlOworICAgIC8vIFJlLXNldHRpbmcg
dGhlIHZhbHVlIGZvciBrZXkgY2F1c2VzIGFub3RoZXIgZGVzdHJ1Y3QoKSBjYWxsIGFmdGVyIGFs
bCBvdGhlciB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBjYWxsZWQuCisgICAgcHRo
cmVhZF9zZXRzcGVjaWZpYyhtX2tleSwgdGhyZWFkSWRlbnRpZmllckRhdGEpOworfQorCit2b2lk
IFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplS2V5T25jZUhlbHBlcigpCit7CisgICAg
aWYgKHB0aHJlYWRfa2V5X2NyZWF0ZSgmbV9rZXksIGRlc3RydWN0KSkKKyAgICAgICAgQ1JBU0go
KTsKK30KKwordm9pZCBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UoKQor
eworICAgIHN0YXRpYyBwdGhyZWFkX29uY2VfdCBvbmNlQ29udHJvbCA9IFBUSFJFQURfT05DRV9J
TklUOworICAgIGlmIChwdGhyZWFkX29uY2UoJm9uY2VDb250cm9sLCBpbml0aWFsaXplS2V5T25j
ZUhlbHBlcikpCisgICAgICAgIENSQVNIKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gVVNFKFBUSFJFQURTKQorCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zYWY4N2E4Ci0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUaHJlYWRJ
ZGVudGlmaWVyRGF0YVB0aHJlYWRzX2gKKyNkZWZpbmUgVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkc19oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBIb2xkcyBUaHJlYWRJZGVudGlmaWVy
IGluIHRoZSB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZSBhbmQgZW1wbG95cyBwdGhyZWFkcy1zcGVj
aWZpYyAyLXBhc3MgZGVzdHJ1Y3Rpb24gdG8gcmVsaWFibHkgcmVtb3ZlCisvLyBUaHJlYWRJZGVu
dGlmaWVyIGZyb20gdGhyZWFkTWFwLiBJdCBhc3N1bWVzIHJlZ3VsYXIgVGhyZWFkU3BlY2lmaWMg
dHlwZXMgZG9uJ3QgdXNlIG11bHRpcGxlLXBhc3MgZGVzdHJ1Y3Rpb24uCitjbGFzcyBUaHJlYWRJ
ZGVudGlmaWVyRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgflRocmVh
ZElkZW50aWZpZXJEYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuZCBwdXRzIGFuIGluc3RhbmNl
IG9mIFRocmVhZElkZW50aWZpZXJEYXRhIGludG8gdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2UuCisg
ICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUaHJlYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpOwor
CisgICAgLy8gUmV0dXJucyAwIGlmIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlIHdhcyBub3QgaW5p
dGlhbGl6ZWQuCisgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllcigpOworCitw
cml2YXRlOgorICAgIFRocmVhZElkZW50aWZpZXJEYXRhKFRocmVhZElkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2lz
RGVzdHJveWVkT25jZShmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVGhpcyB0aHJlYWQt
c3BlY2lmaWMgZGVzdHJ1Y3RvciBpcyBjYWxsZWQgMiB0aW1lcyB3aGVuIHRocmVhZCB0ZXJtaW5h
dGVzOgorICAgIC8vIC0gZmlyc3QsIHdoZW4gYWxsIHRoZSBvdGhlciB0aHJlYWQtc3BlY2lmaWMg
ZGVzdHJ1Y3RvcnMgYXJlIGNhbGxlZCwgaXQgc2ltcGx5IHJlbWVtYmVycyBpdCB3YXMgJ2Rlc3Ry
b3llZCBvbmNlJworICAgIC8vIGFuZCByZS1zZXRzIGl0c2VsZiBpbnRvIHRoZSB0aHJlYWQtc3Bl
Y2lmaWMgc2xvdCB0byBtYWtlIFB0aHJlYWRzIHRvIGNhbGwgaXQgYWdhaW4gbGF0ZXIuCisgICAg
Ly8gLSBzZWNvbmQsIGFmdGVyIGFsbCB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3RvcnMgd2VyZSBp
bnZva2VkLCBpdCBnZXRzIGNhbGxlZCBhZ2FpbiAtIHRoaXMgdGltZSwgd2UgcmVtb3ZlIHRoZQor
ICAgIC8vIFRocmVhZElkZW50aWZpZXIgZnJvbSB0aGUgdGhyZWFkTWFwLCBjb21wbGV0aW5nIHRo
ZSBjbGVhbnVwLgorICAgIHN0YXRpYyB2b2lkIGRlc3RydWN0KHZvaWQqIGRhdGEpOworCisgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIoKTsKKyAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplS2V5T25jZSgpOworCisgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CisgICAgYm9vbCBtX2lzRGVzdHJveWVkT25jZTsKKyAgICBzdGF0aWMgcHRocmVhZF9rZXlfdCBt
X2tleTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVGhyZWFkSWRlbnRp
ZmllckRhdGFQdGhyZWFkc19oCisKKwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcAppbmRleCA3NGM0
N2Y0Li40OWRlNTllIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcApAQCAtNDksMTMgKzQ5LDE0
IEBAIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZvaWQqIGNvbnRleHREYXRhKQogewog
ICAgIE5ld1RocmVhZENvbnRleHQqIGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PE5ld1RocmVh
ZENvbnRleHQqPihjb250ZXh0RGF0YSk7CiAKLSAgICBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29u
dGV4dC0+bmFtZSk7Ci0KLSAgICAvLyBCbG9jayB1bnRpbCBvdXIgY3JlYXRpbmcgdGhyZWFkIGhh
cyBjb21wbGV0ZWQgYW55IGV4dHJhIHNldHVwIHdvcmsuCisgICAgLy8gQmxvY2sgdW50aWwgb3Vy
IGNyZWF0aW5nIHRocmVhZCBoYXMgY29tcGxldGVkIGFueSBleHRyYSBzZXR1cCB3b3JrLCBpbmNs
dWRpbmcKKyAgICAvLyBlc3RhYmxpc2hpbmcgVGhyZWFkSWRlbnRpZmllci4KICAgICB7CiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihjb250ZXh0LT5jcmVhdGlvbk11dGV4KTsKICAgICB9CiAK
KyAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnRleHQtPm5hbWUpOworCiAg
ICAgLy8gR3JhYiB0aGUgaW5mbyB0aGF0IHdlIG5lZWQgb3V0IG9mIHRoZSBjb250ZXh0LCB0aGVu
IGRlYWxsb2NhdGUgaXQuCiAgICAgVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCA9IGNvbnRleHQt
PmVudHJ5UG9pbnQ7CiAgICAgdm9pZCogZGF0YSA9IGNvbnRleHQtPmRhdGE7CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmgKaW5kZXggM2E2YWU1OS4uMTU5OTU2MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaApA
QCAtMTIxLDcgKzEyMSw3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBjb25zdCBjaGFyKiB0aHJlYWROCiAKIC8vIENhbGxlZCBp
biB0aGUgdGhyZWFkIGR1cmluZyBpbml0aWFsaXphdGlvbi4KIC8vIEhlbHBmdWwgZm9yIHBsYXRm
b3JtcyB3aGVyZSB0aGUgdGhyZWFkIG5hbWUgbXVzdCBiZSBzZXQgZnJvbSB3aXRoaW4gdGhlIHRo
cmVhZC4KLXZvaWQgc2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
Owordm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVh
ZE5hbWUpOwogCiBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKIGJvb2wgaXNNYWlu
VGhyZWFkKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5j
cHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5jcHAKaW5kZXggNjNhMGFkYS4u
MmU4YTI1OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05vbmUuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25lLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkgeyB9CiBU
aHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lk
KiwgY29uc3QgY2hhciopIHsgcmV0dXJuIFRocmVhZElkZW50aWZpZXIoKTsgfQotdm9pZCBzZXRU
aHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciopIHsgfQordm9pZCBpbml0aWFsaXplQ3VycmVu
dFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqKSB7IH0KIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lkKiopIHsgcmV0dXJuIDA7IH0KIHZvaWQgZGV0YWNo
VGhyZWFkKFRocmVhZElkZW50aWZpZXIpIHsgfQogVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhy
ZWFkKCkgeyByZXR1cm4gVGhyZWFkSWRlbnRpZmllcigpOyB9CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCA5ZjZmZjdjLi5kNjEwZDVmIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRl
ICJNYWluVGhyZWFkLmgiCiAjaW5jbHVkZSAiUmFuZG9tTnVtYmVyU2VlZC5oIgogI2luY2x1ZGUg
IlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
aCIKKyNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgi
CiAjaW5jbHVkZSA8ZXJybm8uaD4KIApAQCAtMTA4LDcgKzExMCw3IEBAIHN0YXRpYyBUaHJlYWRJ
ZGVudGlmaWVyIGlkZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUoY29uc3QgcHRocmVhZF90JiBwdGhy
ZWFkSGFuZGxlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGVz
dGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHB0aHJlYWRfdCYgcHRocmVhZEhhbmRs
ZSkKK3N0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFk
SGFuZGxlKGNvbnN0IHB0aHJlYWRfdCYgcHRocmVhZEhhbmRsZSkKIHsKICAgICBBU1NFUlQoIWlk
ZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUocHRocmVhZEhhbmRsZSkpOwogCkBAIC0xMjgsNyArMTMw
LDcgQEAgc3RhdGljIHB0aHJlYWRfdCBwdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJlYWRJ
ZGVudGlmaWVyIGlkKQogICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoaWQpOwogfQogCi1zdGF0
aWMgdm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIg
aWQpCit2b2lkIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmll
ciBpZCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CiAKQEAg
LTE4NSwxMyArMTg3LDE3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiB9CiAjZW5kaWYKIAot
dm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFtZSkKK3ZvaWQg
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKQog
ewogI2lmIEhBVkUoUFRIUkVBRF9TRVROQU1FX05QKQogICAgIHB0aHJlYWRfc2V0bmFtZV9ucCh0
aHJlYWROYW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRocmVhZE5hbWUpOwogI2VuZGlm
CisKKyAgICBUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShw
dGhyZWFkX3NlbGYoKSk7CisgICAgQVNTRVJUKGlkKTsKKyAgICBUaHJlYWRJZGVudGlmaWVyRGF0
YTo6aW5pdGlhbGl6ZShpZCk7CiB9CiAKIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJl
YWRJZGVudGlmaWVyIHRocmVhZElELCB2b2lkKiogcmVzdWx0KQpAQCAtMjA0LDcgKzIxMCw2IEBA
IGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElELCB2
b2lkKiogcmVzdWx0KQogICAgIGlmIChqb2luUmVzdWx0ID09IEVERUFETEspCiAgICAgICAgIExP
R19FUlJPUigiVGhyZWFkSWRlbnRpZmllciAldSB3YXMgZm91bmQgdG8gYmUgZGVhZGxvY2tlZCB0
cnlpbmcgdG8gcXVpdCIsIHRocmVhZElEKTsKIAotICAgIGNsZWFyUHRocmVhZEhhbmRsZUZvcklk
ZW50aWZpZXIodGhyZWFkSUQpOwogICAgIHJldHVybiBqb2luUmVzdWx0OwogfQogCkBAIC0yMTUs
MTYgKzIyMCwxOCBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElE
KQogICAgIHB0aHJlYWRfdCBwdGhyZWFkSGFuZGxlID0gcHRocmVhZEhhbmRsZUZvcklkZW50aWZp
ZXIodGhyZWFkSUQpOwogCiAgICAgcHRocmVhZF9kZXRhY2gocHRocmVhZEhhbmRsZSk7Ci0KLSAg
ICBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKIH0KIAogVGhyZWFk
SWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKIHsKLSAgICBwdGhyZWFkX3QgY3VycmVudFRocmVh
ZCA9IHB0aHJlYWRfc2VsZigpOwotICAgIGlmIChUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRp
ZmllckJ5UHRocmVhZEhhbmRsZShjdXJyZW50VGhyZWFkKSkKKyAgICBUaHJlYWRJZGVudGlmaWVy
IGlkID0gVGhyZWFkSWRlbnRpZmllckRhdGE6OmlkZW50aWZpZXIoKTsKKyAgICBpZiAoaWQpCiAg
ICAgICAgIHJldHVybiBpZDsKLSAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJl
YWRIYW5kbGUoY3VycmVudFRocmVhZCk7CisKKyAgICAvLyBOb3QgYSBXVEYtY3JlYXRlZCB0aHJl
YWQsIFRocmVhZElkZW50aWZpZXIgaXMgbm90IGVzdGFibGlzaGVkIHlldC4KKyAgICBpZCA9IGVz
dGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHB0aHJlYWRfc2VsZigpKTsKKyAgICBU
aHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZShpZCk7CisgICAgcmV0dXJuIGlkOwogfQog
CiBib29sIGlzTWFpblRocmVhZCgpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nV2luLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4
IDFmZDg0ZDIuLjczYzNmMGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmdXaW4uY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgdGFnVEhSRUFETkFNRV9JTkZPIHsKIH0gVEhS
RUFETkFNRV9JTkZPOwogI3ByYWdtYSBwYWNrKHBvcCkKIAotdm9pZCBzZXRUaHJlYWROYW1lSW50
ZXJuYWwoY29uc3QgY2hhciogc3pUaHJlYWROYW1lKQordm9pZCBpbml0aWFsaXplQ3VycmVudFRo
cmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHN6VGhyZWFkTmFtZSkKIHsKICAgICBUSFJFQUROQU1F
X0lORk8gaW5mbzsKICAgICBpbmZvLmR3VHlwZSA9IDB4MTAwMDsKQEAgLTE2MSw3ICsxNjEsNyBA
QCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVt
YmVyR2VuZXJhdG9yKCk7CiAgICAgICAgIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAg
IG1haW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOwotICAgICAgICBzZXRUaHJl
YWROYW1lSW50ZXJuYWwoIk1haW4gVGhyZWFkIik7CisgICAgICAgIGluaXRpYWxpemVDdXJyZW50
VGhyZWFkSW50ZXJuYWwoIk1haW4gVGhyZWFkIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAgYi9KYXZhU2NyaXB0Q29yZS93
dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKaW5kZXggYjRmNGRlMS4uYTZlYzhmNyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIFRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2lu
dCwgdm9pZCogZGF0YSwgY29uCiAgICAgcmV0dXJuIHRocmVhZElEOwogfQogCi12b2lkIHNldFRo
cmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKikKK3ZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJl
YWRJbnRlcm5hbChjb25zdCBjaGFyKikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRp
bmdRdC5jcHAKaW5kZXggOWJkNDAwYy4uZGMwNGE2OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhy
ZWFkaW5nUXQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVU
aHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24K
ICAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCh0aHJlYWRSZWYpOwogfQog
Ci12b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKikKK3ZvaWQgaW5pdGlhbGl6
ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2Y2U3
ODIuLjFlNzIwMDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wMS0wNSAgRG1pdHJ5IFRp
dG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2YgVGhyZWFkSWRlbnRpZmllcnMgaW4g
dGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0byB2ZXJp
ZnkgdGhlIFRocmVhZElkZW50aWZpZXJzIGFyZSBub3QgcmV1c2VkIGFjcm9zcyB0aHJlYWRzLgor
ICAgICAgICBUaGUgdGVzdCBydW5zIGluIHRoZSBiZWdpbm5pbmcgb2YgRHVtcFJlbmRlclRyZWUg
YW5kIHNwYXducyAyIG5vbi1XVEYgdHJlYWRzIHNlcXVlbnRpYWxseSwKKyAgICAgICAgd2FpdGlu
ZyBmb3IgdGhlIHByZXZpb3VzIHRocmVhZCB0byB0ZXJtaW5hdGUgYmVmb3JlIHN0YXJ0aW5nIHRo
ZSBuZXh0LgorICAgICAgICBUaGUgdHJlYWRzIHVzZSBXVEY6OmN1cnJlbnRUaHJlYWQoKSBpbiB0
aGVpciB0aHJlYWQgZnVuY3Rpb24uIFdpdGhvdXQgYSBmaXgsIHRoaXMKKyAgICAgICAgY2F1c2Vz
IGJvdGggdGhyZWFkcyB0byBoYXZlIHRoZSBzYW1lIFRocmVhZElkZW50aWZpZXIgd2hpY2ggdHJp
Z2dlcnMgQVNTRVJUIGluIHRocmVhZCBmdW5jdGlvbi4KKyAgICAgICAgSXQgYWxzbyBzdGFydHMg
YW5vdGhlciB0aHJlYWQgdXNpbmcgV1RGLiBXaXRob3V0IHRoZSBmaXgsIHRoaXMgZmluZHMgcHRo
cmVhZCBoYW5kbGUgZnJvbSBwcmV2aW91cworICAgICAgICB0aHJlYWRzIGluIHRoZSBXVEYgdGhy
ZWFkTWFwIGFuZCBhc3NlcnRzIGluIFdURjo6ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRI
YW5kbGUoKS4KKyAgICAgICAgVGhlIHRlc3QgcHJhY3RpY2FsbHkgZG9lcyBub3QgYWZmZWN0IHRo
ZSBEUlQgcnVuIHRpbWUgYmVjYXVzZSB0aGUgdGhyZWFkcyBlbmQgaW1tZWRpYXRlbHkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChy
dW5UaHJlYWQpOiBUZXN0IHRocmVhZCBmdW5jdGlvbi4KKyAgICAgICAgKHRlc3RUaHJlYWRJZGVu
dGlmaWVyTWFwKToKKyAgICAgICAgKGR1bXBSZW5kZXJUcmVlKToKKwogMjAxMC0wMS0wNSAgQ2hy
aXMgSmVyZG9uZWsgIDxjaHJpcy5qZXJkb25la0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDRmZmVhYzMuLjA4MWNkY2UgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTgwLDYgKzgw
LDcgQEAKICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1RocmVhZGlu
Zy5oPgogI2ltcG9ydCA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
NDY2LDYgKzQ2NywzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVl
c0ZvclRlc3RpbmcoKQogCiB9CiAKK3N0YXRpYyB2b2lkKiBydW5UaHJlYWQodm9pZCogYXJnKQor
eworICAgIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIHByZXZpb3VzSWQgPSAwOworICAgIFRocmVh
ZElkZW50aWZpZXIgY3VycmVudElkID0gY3VycmVudFRocmVhZCgpOworICAgIC8vIFZlcmlmeSAy
IHN1Y2Nlc3NpdmUgdGhyZWFkcyBkbyBub3QgZ2V0IHRoZSBzYW1lIElkLgorICAgIEFTU0VSVChw
cmV2aW91c0lkICE9IGN1cnJlbnRJZCk7CisgICAgcHJldmlvdXNJZCA9IGN1cnJlbnRJZDsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVzdFRocmVhZElkZW50aWZpZXJNYXAoKQor
eworICAgIC8vIEltaXRhdGUgJ2ZvcmVpZ24nIHRocmVhZHMgdGhhdCBhcmUgbm90IGNyZWF0ZWQg
YnkgV1RGLgorICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhy
ZWFkLCAwLCAmcnVuVGhyZWFkLCAwKTsKKyAgICBwdGhyZWFkX2pvaW4ocHRocmVhZCwgMCk7CisK
KyAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1blRocmVhZCwgMCk7CisgICAgcHRo
cmVhZF9qb2luKHB0aHJlYWQsIDApOworCisgICAgLy8gTm93IGNyZWF0ZSBhbm90aGVyIHRocmVh
ZCB1c2luZyBXVEYuIE9uIE9TWCwgaXQgd2lsbCBoYXZlIHRoZSBzYW1lIHB0aHJlYWQgaGFuZGxl
CisgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQgVGhyZWFkSWRlbnRpZmllci4KKyAg
ICBjcmVhdGVUaHJlYWQocnVuVGhyZWFkLCAwLCAiRHVtcFJlbmRlclRyZWU6IHRlc3QiKTsKK30K
Kwogc3RhdGljIHZvaWQgY3Jhc2hIYW5kbGVyKGludCBzaWcpCiB7CiAgICAgY2hhciAqc2lnbmFs
TmFtZSA9IHN0cnNpZ25hbChzaWcpOwpAQCAtNjE0LDYgKzY0MCw5IEBAIHZvaWQgZHVtcFJlbmRl
clRyZWUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNTIyMjkxMT4KICAgICB0ZXN0U3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJp
bmcoKTsKIAorICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMzI2ODkKKyAgICB0ZXN0VGhyZWFk
SWRlbnRpZmllck1hcCgpOworCiAgICAgaWYgKHRocmVhZGVkKQogICAgICAgICBzdGFydEphdmFT
Y3JpcHRUaHJlYWRzKCk7CiAK
</data>
<flag name="commit-queue"
          id="28176"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46004</attachid>
            <date>2010-01-06 15:52:36 -0800</date>
            <delta_ts>2010-01-22 01:53:56 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27266</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FuZHJvaWQubWsgYi9KYXZhU2NyaXB0Q29yZS9B
bmRyb2lkLm1rCmluZGV4IDFkZDVlYzAuLmU3NmRhMzIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0FuZHJvaWQubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawpAQCAtMTU5LDYg
KzE1OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1JhbmRvbU51bWJlci5jcHAgXAog
CXd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAl3dGYvVENTeXN0ZW1BbGxvYy5jcHAg
XAorCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAogCVwKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52
OC53dGYubWsKaW5kZXggNTNhNTBkOS4uNjkxMjhkNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvQW5kcm9pZC52OC53dGYubWsKKysrIGIvSmF2YVNjcmlwdENvcmUvQW5kcm9pZC52OC53dGYu
bWsKQEAgLTQyLDYgKzQyLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9IFwKIAl3dGYvUmFuZG9tTnVt
YmVyLmNwcCBcCiAJd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogCXd0Zi9UQ1N5c3Rl
bUFsbG9jLmNwcCBcCisJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKIAl3
dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCiAJXApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCmluZGV4IDlmZmIxOTkuLjFjMGNkNmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAor
MjAwOS0wMS0wNSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhlIGxlYWsgb2Yg
VGhyZWFkSWRlbnRpZmllcnMgaW4gdGhyZWFkTWFwIGFjcm9zcyB0aHJlYWRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODkKKworICAgICAgICBU
ZXN0IGlzIGFkZGVkIHRvIER1bXBSZW5kZXJUcmVlLm1tLgorCisgICAgICAgICogQW5kcm9pZC5t
azogQWRkZWQgZmlsZSBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLihofGNwcCkgdG8gYnVp
bGQuCisgICAgICAgICogQW5kcm9pZC52OC53dGYubWs6IERpdHRvLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlw
dENvcmUuZ3lwOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOiBEaXR0by4K
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKworICAgICAgICAqIHd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcDogQWRk
ZWQuIENvbnRhaW5zIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0
YSB0aGF0IHVzZXMgY3VzdG9tIGRlc3RydWN0b3IuCisgICAgICAgIChXVEY6OlRocmVhZElkZW50
aWZpZXJEYXRhOjp+VGhyZWFkSWRlbnRpZmllckRhdGEpOiBSZW1vdmVzIHRoZSBUaHJlYWRJZGVu
dGlmaWVyIGZyb20gdGhlIHRocmVhZE1hcC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmll
ckRhdGE6OmlkZW50aWZpZXIpOgorICAgICAgICAoV1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVEY6OlRocmVhZElkZW50aWZpZXJEYXRhOjpkZXN0cnVj
dCk6IEN1c3RvbSB0aHJlYWQtc3BlY2lmaWMgZGVzdHJ1Y3Rvci4gUmVzZXRzIHRoZSB2YWx1ZSBm
b3IgdGhlIGtleSBhZ2FpbiB0byBjYXVzZSBzZWNvbmQgaW52b2tlLgorICAgICAgICAoV1RGOjpU
aHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2VIZWxwZXIpOgorICAgICAgICAo
V1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UpOiBOZWVkIHRvIHVz
ZSBwdGhyZWFkX29uY2Ugc2luY2UgaW5pdGlhbGl6YXRpb24gbWF5IGNvbWUgb24gYW55IHRocmVh
ZChzKS4KKyAgICAgICAgKiB3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6VGhyZWFkSWRlbnRpZmllckRhdGE6OlRocmVhZElkZW50aWZpZXJE
YXRhKToKKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjp0aHJl
YWRFbnRyeVBvaW50KTogTW92ZSBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHRvIGFm
dGVyIHRoZSBsb2NrIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
cmUgaXQgaXMgaW52b2tlZCB3aGVuIFRocmVhZElkZW50aWZpZXIgaXMgYWxyZWFkeSBlc3RhYmxp
c2hlZC4KKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogUmVuYW1lIHNldFRocmVhZE5hbWVJ
bnRlcm5hbCAtPiBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsIHNpbmNlIGl0IGRvZXMg
bW9yZSB0aGVuIG9ubHkgc2V0IHRoZSBuYW1lIG5vdy4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Tm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwp
OiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplVGhyZWFkaW5nKTogRGl0dG8uCisgICAgICAgICogd3RmL2d0ay9UaHJlYWRpbmdH
dGsuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKTog
RGl0dG8uCisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IERpdHRvLgorCisgICAgICAgICogd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6ZXN0YWJsaXNoSWRlbnRpZmll
ckZvclB0aHJlYWRIYW5kbGUpOgorICAgICAgICAoV1RGOjpjbGVhclB0aHJlYWRIYW5kbGVGb3JJ
ZGVudGlmaWVyKTogTWFrZSBpdCBub3QgJ3N0YXRpYycgc28gdGhlIH5UaHJlYWRJZGVudGlmaWVy
RGF0YSgpIGluIGFub3RoZXIgZmlsZSBjYW4gY2FsbCBpdC4KKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbCk6IFNldCB0aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEu
IFRoZSBUaHJlYWRJZGVudGlmaWVyIGlzIGFscmVhZHkgZXN0YWJsaXNoZWQgYnkgY3JlYXRpbmcg
dGhyZWFkLgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbik6IFJlbW92ZSBj
YWxsIHRvIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIodGhyZWFkSUQpIHNpbmNlIGl0
IGlzIG5vdyBkb25lIGluIH5UaHJlYWRJZGVudGlmaWVyRGF0YSgpLgorICAgICAgICAoV1RGOjpk
ZXRhY2hUaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y3VycmVudFRocmVhZCk6IFVzZSB0
aGUgdGhyZWFkLXNwZWNpZmljIGRhdGEgdG8gZ2V0IHRoZSBUaHJlYWRJZGVudGlmaWVyLiBJdCdz
IG1hbnkgdGltZXMgZmFzdGVyIHRoZW4gTXV0ZXgtcHJvdGVjdGVkIGl0ZXJhdGlvbiB0aHJvdWdo
IHRoZSBtYXAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBzZXQgdGhlIHRo
cmVhZC1zcGVjaWZpYyBkYXRhIGlmIGNhbGxlZCBmaXJzdCB0aW1lIG9uIHRoZSB0aHJlYWQuCisK
IDIwMTAtMDEtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbSBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDEz
ZDYwOTIuLjdhYzZhOGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNzksMTAgKzI3OSwxMiBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWNr
ZWRDYWNoZS5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvVENQYWdlTWFwLmggXAogCUphdmFTY3Jp
cHRDb3JlL3d0Zi9UQ1NwaW5Mb2NrLmggXAotCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVj
aWZpYy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIFwKIAlKYXZhU2Ny
aXB0Q29yZS93dGYvVHlwZVRyYWl0cy5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9UeXBlVHJh
aXRzLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9VbnVzZWRQYXJhbS5oIFwKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXAvSmF2YVNjcmlwdENvcmUuZ3lwCmluZGV4
IDY0ZTIwYTIuLjY2ZjQwZTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmd5cC9KYXZhU2NyaXB0Q29yZS5neXAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwL0phdmFTY3JpcHRDb3JlLmd5cApAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgICAn
Y29uZGl0aW9ucyc6IFsKICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAgICAgJ3NvdXJj
ZXMvJzogWworICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHNcXC4oaHxjcHApJCddLAogICAgICAgICAgICAgWydleGNsdWRlJywgJ1RocmVhZGluZ1B0
aHJlYWRzXFwuY3BwJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ1RocmVhZChpbmd8U3Bl
Y2lmaWMpV2luXFwuY3BwJCddCiAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCmluZGV4IGMzMWNmY2UuLjI0NTc3ZGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lw
aQpAQCAtNDE4LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAnd3RmL1RDU3BpbkxvY2suaCcsCiAg
ICAgICAgICAgICAnd3RmL1RDU3lzdGVtQWxsb2MuY3BwJywKICAgICAgICAgICAgICd3dGYvVENT
eXN0ZW1BbGxvYy5oJywKKyAgICAgICAgICAgICd3dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhy
ZWFkcy5jcHAnLAorICAgICAgICAgICAgJ3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmcuY3BwJywKICAgICAgICAgICAgICd3dGYv
VGhyZWFkaW5nLmgnLAogICAgICAgICAgICAgJ3d0Zi9UaHJlYWRpbmdOb25lLmNwcCcsCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhMTE0ODY2Li5hZGUxYmUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3Nyw2
ICsxNzcsOCBAQAogCQkxNEY4QkE0RjEwN0VDODk5MDA5ODkyREMgLyogQ29sbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2OTJBODUyMDI1
NTU5N0QwMUZGNjBGNyAvKiBDb2xsZWN0b3IuY3BwICovOyB9OwogCQkxODBCOUIwODBGMTZEOTRG
MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE4MEI5QUYwMEYxNkM1NjkwMDlCREJDNSAvKiBDdXJyZW50VGltZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE4MEI5
QkZFMEYxNkU5NEQwMDlCREJDNSAvKiBDdXJyZW50VGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuY3BwICovOyB9OworCQkxOEJBQjU1MzEwREFFMDU0MDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyNzEwREFERkNEMDAwRDk0NUIgLyogVGhyZWFkSWRl
bnRpZmllckRhdGFQdGhyZWFkcy5jcHAgKi87IH07CisJCTE4QkFCNTU0MTBEQUUwNjYwMDBEOTQ1
QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEJBQjUyODEwREFERkNEMDAwRDk0NUIgLyogVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovOyB9OwogCQkxQzYxNTE2QzBFQkFDN0EwMDAz
MTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2QTBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2
ZXIubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tc3RyaWN0LWFsaWFz
aW5nIjsgfTsgfTsKIAkJMUM2MTUxNkQwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzYxNTE2
QjBFQkFDN0EwMDAzMTM3NkYgLyogUHJvZmlsZXJTZXJ2ZXIuaCAqLzsgfTsKIAkJNDEzNTlDRjMw
RkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0
ZUNvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTY1NCw2ICs2NTYsOCBAQAogCQkxNEYzNDg4RTBFOTVF
RjhBMDAzNjQ4QkMgLyogQ29sbGVjdG9ySGVhcEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbGxlY3RvckhlYXBJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxODBCOUFFRjBGMTZDNTY5MDA5QkRCQzUgLyogQ3VycmVudFRpbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VycmVudFRpbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODBCOUFGMDBGMTZDNTY5MDA5QkRCQzUgLyog
Q3VycmVudFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VycmVudFRp
bWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThCQUI1MjcxMERBREZDRDAwMEQ5
NDVCIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4QkFCNTI4MTBEQURGQ0QwMDBEOTQ1QiAvKiBU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkEwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUHJvZmlsZXJTZXJ2ZXIu
bW07IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2MTUxNkIwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFByb2ZpbGVyU2VydmVyLmg7IHBhdGgg
PSBwcm9maWxlci9Qcm9maWxlclNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQzkwNTE0MjBCQTlFOEE3MDA4MUU5RDAgLyogVmVyc2lvbi54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTM3MSw2ICsxMzc1LDggQEAKIAkJCQk2NTQxQkQ2RjA4RTgwQTE3MDAy
Q0JFRTcgLyogVENTcGluTG9jay5oICovLAogCQkJCTY1NDFCRDcwMDhFODBBMTcwMDJDQkVFNyAv
KiBUQ1N5c3RlbUFsbG9jLmNwcCAqLywKIAkJCQk2NTQxQkQ3MTA4RTgwQTE3MDAyQ0JFRTcgLyog
VENTeXN0ZW1BbGxvYy5oICovLAorCQkJCTE4QkFCNTI3MTBEQURGQ0QwMDBEOTQ1QiAvKiBUaHJl
YWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCAqLywKKwkJCQkxOEJBQjUyODEwREFERkNEMDAw
RDk0NUIgLyogVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oICovLAogCQkJCTVENkE1NjZB
MEYwNTk5NTUwMDI2NjE0NSAvKiBUaHJlYWRpbmcuY3BwICovLAogCQkJCUUxRUU3OTIyMEQ2Qzk1
Q0QwMEZFQTNCQSAvKiBUaHJlYWRpbmcuaCAqLywKIAkJCQlFMUVFNzkzQzBENkM5QjkyMDBGRUEz
QkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwICovLApAQCAtMjAzOCw2ICsyMDQ0LDcgQEAKIAkJ
CQkxNDhDRDFEODEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIwQkU3QjEwQUE2RERCMDBGNDU1RDIgLyogV2Vh
a1JhbmRvbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThCQUI1NTQxMERBRTA2NjAwMEQ5NDVCIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OThC
ODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4Njk4QkIzOTEwRDg2QkFGMDBEOEQwMUIgLyogVVN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDM1REIxMTBEQkZCMkEwMEZGRkZFNyAvKiBXZWFrR0NQdHIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQ3NSw2ICsyNDgyLDcgQEAKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjBEMEMwRUYwQjhB
NTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
RjhCQTQzMTA3RUM4OEMwMDk4OTJEQyAvKiBUQ1N5c3RlbUFsbG9jLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTE4QkFCNTUzMTBEQUUwNTQwMDBEOTQ1QiAvKiBUaHJlYWRJZGVudGlmaWVyRGF0YVB0
aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVENkE1NjZCMEYwNTk5NTUwMDI2NjE0NSAv
KiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRTc5M0QwRDZDOUI5MjAwRkVB
M0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNG
MEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRz
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDJkNDllCi0tLSAvZGV2L251
bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
Y3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoUFRIUkVB
RFMpCisKKyNpbmNsdWRlICJUaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmgiCisKKyNpbmNs
dWRlICJUaHJlYWRpbmcuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3B0aHJlYWRfa2V5X3QgVGhy
ZWFkSWRlbnRpZmllckRhdGE6Om1fa2V5OworCit2b2lkIGNsZWFyUHRocmVhZEhhbmRsZUZvcklk
ZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllcik7CisKK1RocmVhZElkZW50aWZpZXJEYXRhOjp+VGhy
ZWFkSWRlbnRpZmllckRhdGEoKQoreworICAgIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZp
ZXIobV9pZGVudGlmaWVyKTsKK30KKworVGhyZWFkSWRlbnRpZmllciBUaHJlYWRJZGVudGlmaWVy
RGF0YTo6aWRlbnRpZmllcigpCit7CisgICAgaW5pdGlhbGl6ZUtleU9uY2UoKTsKKyAgICBUaHJl
YWRJZGVudGlmaWVyRGF0YSogdGhyZWFkSWRlbnRpZmllckRhdGEgPSBzdGF0aWNfY2FzdDxUaHJl
YWRJZGVudGlmaWVyRGF0YSo+KHB0aHJlYWRfZ2V0c3BlY2lmaWMobV9rZXkpKTsKKworICAgIHJl
dHVybiB0aHJlYWRJZGVudGlmaWVyRGF0YSA/IHRocmVhZElkZW50aWZpZXJEYXRhLT5tX2lkZW50
aWZpZXIgOiAwOworfQorCit2b2lkIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplKFRo
cmVhZElkZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKCFpZGVudGlmaWVyKCkpOworCisgICAg
aW5pdGlhbGl6ZUtleU9uY2UoKTsKKyAgICBwdGhyZWFkX3NldHNwZWNpZmljKG1fa2V5LCBuZXcg
VGhyZWFkSWRlbnRpZmllckRhdGEoaWQpKTsKK30KKwordm9pZCBUaHJlYWRJZGVudGlmaWVyRGF0
YTo6ZGVzdHJ1Y3Qodm9pZCogZGF0YSkKK3sKKyAgICBUaHJlYWRJZGVudGlmaWVyRGF0YSogdGhy
ZWFkSWRlbnRpZmllckRhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWRJZGVudGlmaWVyRGF0YSo+KGRh
dGEpOworICAgIEFTU0VSVCh0aHJlYWRJZGVudGlmaWVyRGF0YSk7CisKKyAgICBpZiAodGhyZWFk
SWRlbnRpZmllckRhdGEtPm1faXNEZXN0cm95ZWRPbmNlKSB7CisgICAgICAgIGRlbGV0ZSB0aHJl
YWRJZGVudGlmaWVyRGF0YTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRocmVhZElk
ZW50aWZpZXJEYXRhLT5tX2lzRGVzdHJveWVkT25jZSA9IHRydWU7CisgICAgLy8gUmUtc2V0dGlu
ZyB0aGUgdmFsdWUgZm9yIGtleSBjYXVzZXMgYW5vdGhlciBkZXN0cnVjdCgpIGNhbGwgYWZ0ZXIg
YWxsIG90aGVyIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyB3ZXJlIGNhbGxlZC4KKyAgICBw
dGhyZWFkX3NldHNwZWNpZmljKG1fa2V5LCB0aHJlYWRJZGVudGlmaWVyRGF0YSk7Cit9CisKK3Zv
aWQgVGhyZWFkSWRlbnRpZmllckRhdGE6OmluaXRpYWxpemVLZXlPbmNlSGVscGVyKCkKK3sKKyAg
ICBpZiAocHRocmVhZF9rZXlfY3JlYXRlKCZtX2tleSwgZGVzdHJ1Y3QpKQorICAgICAgICBDUkFT
SCgpOworfQorCit2b2lkIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplS2V5T25jZSgp
Cit7CisgICAgc3RhdGljIHB0aHJlYWRfb25jZV90IG9uY2VDb250cm9sID0gUFRIUkVBRF9PTkNF
X0lOSVQ7CisgICAgaWYgKHB0aHJlYWRfb25jZSgmb25jZUNvbnRyb2wsIGluaXRpYWxpemVLZXlP
bmNlSGVscGVyKSkKKyAgICAgICAgQ1JBU0goKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
KyNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpCisKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjNhZjg3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRocmVh
ZElkZW50aWZpZXJEYXRhUHRocmVhZHNfaAorI2RlZmluZSBUaHJlYWRJZGVudGlmaWVyRGF0YVB0
aHJlYWRzX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIEhvbGRzIFRocmVhZElkZW50aWZp
ZXIgaW4gdGhlIHRocmVhZC1zcGVjaWZpYyBzdG9yYWdlIGFuZCBlbXBsb3lzIHB0aHJlYWRzLXNw
ZWNpZmljIDItcGFzcyBkZXN0cnVjdGlvbiB0byByZWxpYWJseSByZW1vdmUKKy8vIFRocmVhZElk
ZW50aWZpZXIgZnJvbSB0aHJlYWRNYXAuIEl0IGFzc3VtZXMgcmVndWxhciBUaHJlYWRTcGVjaWZp
YyB0eXBlcyBkb24ndCB1c2UgbXVsdGlwbGUtcGFzcyBkZXN0cnVjdGlvbi4KK2NsYXNzIFRocmVh
ZElkZW50aWZpZXJEYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICB+VGhy
ZWFkSWRlbnRpZmllckRhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW5kIHB1dHMgYW4gaW5zdGFu
Y2Ugb2YgVGhyZWFkSWRlbnRpZmllckRhdGEgaW50byB0aHJlYWQtc3BlY2lmaWMgc3RvcmFnZS4K
KyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllcik7
CisKKyAgICAvLyBSZXR1cm5zIDAgaWYgdGhyZWFkLXNwZWNpZmljIHN0b3JhZ2Ugd2FzIG5vdCBp
bml0aWFsaXplZC4KKyAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyKCk7CisK
K3ByaXZhdGU6CisgICAgVGhyZWFkSWRlbnRpZmllckRhdGEoVGhyZWFkSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1f
aXNEZXN0cm95ZWRPbmNlKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRocmVh
ZC1zcGVjaWZpYyBkZXN0cnVjdG9yIGlzIGNhbGxlZCAyIHRpbWVzIHdoZW4gdGhyZWFkIHRlcm1p
bmF0ZXM6CisgICAgLy8gLSBmaXJzdCwgd2hlbiBhbGwgdGhlIG90aGVyIHRocmVhZC1zcGVjaWZp
YyBkZXN0cnVjdG9ycyBhcmUgY2FsbGVkLCBpdCBzaW1wbHkgcmVtZW1iZXJzIGl0IHdhcyAnZGVz
dHJveWVkIG9uY2UnCisgICAgLy8gYW5kIHJlLXNldHMgaXRzZWxmIGludG8gdGhlIHRocmVhZC1z
cGVjaWZpYyBzbG90IHRvIG1ha2UgUHRocmVhZHMgdG8gY2FsbCBpdCBhZ2FpbiBsYXRlci4KKyAg
ICAvLyAtIHNlY29uZCwgYWZ0ZXIgYWxsIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyB3ZXJl
IGludm9rZWQsIGl0IGdldHMgY2FsbGVkIGFnYWluIC0gdGhpcyB0aW1lLCB3ZSByZW1vdmUgdGhl
CisgICAgLy8gVGhyZWFkSWRlbnRpZmllciBmcm9tIHRoZSB0aHJlYWRNYXAsIGNvbXBsZXRpbmcg
dGhlIGNsZWFudXAuCisgICAgc3RhdGljIHZvaWQgZGVzdHJ1Y3Qodm9pZCogZGF0YSk7CisKKyAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplS2V5T25jZUhlbHBlcigpOworICAgIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVLZXlPbmNlKCk7CisKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKKyAgICBib29sIG1faXNEZXN0cm95ZWRPbmNlOworICAgIHN0YXRpYyBwdGhyZWFkX2tleV90
IG1fa2V5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBUaHJlYWRJZGVu
dGlmaWVyRGF0YVB0aHJlYWRzX2gKKworCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IDc0
YzQ3ZjQuLjQ5ZGU1OWUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC00OSwxMyArNDks
MTQgQEAgc3RhdGljIHZvaWQqIHRocmVhZEVudHJ5UG9pbnQodm9pZCogY29udGV4dERhdGEpCiB7
CiAgICAgTmV3VGhyZWFkQ29udGV4dCogY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8TmV3VGhy
ZWFkQ29udGV4dCo+KGNvbnRleHREYXRhKTsKIAotICAgIHNldFRocmVhZE5hbWVJbnRlcm5hbChj
b250ZXh0LT5uYW1lKTsKLQotICAgIC8vIEJsb2NrIHVudGlsIG91ciBjcmVhdGluZyB0aHJlYWQg
aGFzIGNvbXBsZXRlZCBhbnkgZXh0cmEgc2V0dXAgd29yay4KKyAgICAvLyBCbG9jayB1bnRpbCBv
dXIgY3JlYXRpbmcgdGhyZWFkIGhhcyBjb21wbGV0ZWQgYW55IGV4dHJhIHNldHVwIHdvcmssIGlu
Y2x1ZGluZworICAgIC8vIGVzdGFibGlzaGluZyBUaHJlYWRJZGVudGlmaWVyLgogICAgIHsKICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGNvbnRleHQtPmNyZWF0aW9uTXV0ZXgpOwogICAgIH0K
IAorICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29udGV4dC0+bmFtZSk7CisK
ICAgICAvLyBHcmFiIHRoZSBpbmZvIHRoYXQgd2UgbmVlZCBvdXQgb2YgdGhlIGNvbnRleHQsIHRo
ZW4gZGVhbGxvY2F0ZSBpdC4KICAgICBUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50ID0gY29udGV4
dC0+ZW50cnlQb2ludDsKICAgICB2b2lkKiBkYXRhID0gY29udGV4dC0+ZGF0YTsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmcuaAppbmRleCAzYTZhZTU5Li4xNTk5NTYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5o
CkBAIC0xMjEsNyArMTIxLDcgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5h
bChUaHJlYWRGdW5jdGlvbiwgdm9pZCosIGNvbnN0IGNoYXIqIHRocmVhZE4KIAogLy8gQ2FsbGVk
IGluIHRoZSB0aHJlYWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogLy8gSGVscGZ1bCBmb3IgcGxh
dGZvcm1zIHdoZXJlIHRoZSB0aHJlYWQgbmFtZSBtdXN0IGJlIHNldCBmcm9tIHdpdGhpbiB0aGUg
dGhyZWFkLgotdm9pZCBzZXRUaHJlYWROYW1lSW50ZXJuYWwoY29uc3QgY2hhciogdGhyZWFkTmFt
ZSk7Cit2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciogdGhy
ZWFkTmFtZSk7CiAKIFRocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpOwogYm9vbCBpc01h
aW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25l
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25lLmNwcAppbmRleCA2M2EwYWRh
Li4yZThhMjU5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05vbmUuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKSB7IH0K
IFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZv
aWQqLCBjb25zdCBjaGFyKikgeyByZXR1cm4gVGhyZWFkSWRlbnRpZmllcigpOyB9Ci12b2lkIHNl
dFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKikgeyB9Cit2b2lkIGluaXRpYWxpemVDdXJy
ZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciopIHsgfQogaW50IHdhaXRGb3JUaHJlYWRDb21w
bGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKikgeyByZXR1cm4gMDsgfQogdm9pZCBkZXRh
Y2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcikgeyB9CiBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRU
aHJlYWQoKSB7IHJldHVybiBUaHJlYWRJZGVudGlmaWVyKCk7IH0KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDlmNmZmN2MuLmQ2MTBkNWYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1
ZGUgIk1haW5UaHJlYWQuaCIKICNpbmNsdWRlICJSYW5kb21OdW1iZXJTZWVkLmgiCiAjaW5jbHVk
ZSAiU3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSAiVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5oIgorI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCiAjaW5jbHVkZSAiVW51c2VkUGFyYW0u
aCIKICNpbmNsdWRlIDxlcnJuby5oPgogCkBAIC0xMDgsNyArMTEwLDcgQEAgc3RhdGljIFRocmVh
ZElkZW50aWZpZXIgaWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShjb25zdCBwdGhyZWFkX3QmIHB0
aHJlYWRIYW5kbGUKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFRocmVhZElkZW50aWZpZXIg
ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRIYW5kbGUocHRocmVhZF90JiBwdGhyZWFkSGFu
ZGxlKQorc3RhdGljIFRocmVhZElkZW50aWZpZXIgZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJl
YWRIYW5kbGUoY29uc3QgcHRocmVhZF90JiBwdGhyZWFkSGFuZGxlKQogewogICAgIEFTU0VSVCgh
aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZShwdGhyZWFkSGFuZGxlKSk7CiAKQEAgLTEyOCw3ICsx
MzAsNyBAQCBzdGF0aWMgcHRocmVhZF90IHB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVh
ZElkZW50aWZpZXIgaWQpCiAgICAgcmV0dXJuIHRocmVhZE1hcCgpLmdldChpZCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmll
ciBpZCkKK3ZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlm
aWVyIGlkKQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKIApA
QCAtMTg1LDEzICsxODcsMTcgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5h
bChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KIH0KICNlbmRpZgog
Ci12b2lkIHNldFRocmVhZE5hbWVJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWROYW1lKQordm9p
ZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
CiB7CiAjaWYgSEFWRShQVEhSRUFEX1NFVE5BTUVfTlApCiAgICAgcHRocmVhZF9zZXRuYW1lX25w
KHRocmVhZE5hbWUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGhyZWFkTmFtZSk7CiAjZW5k
aWYKKworICAgIFRocmVhZElkZW50aWZpZXIgaWQgPSBpZGVudGlmaWVyQnlQdGhyZWFkSGFuZGxl
KHB0aHJlYWRfc2VsZigpKTsKKyAgICBBU1NFUlQoaWQpOworICAgIFRocmVhZElkZW50aWZpZXJE
YXRhOjppbml0aWFsaXplKGlkKTsKIH0KIAogaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRo
cmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZvaWQqKiByZXN1bHQpCkBAIC0yMDQsNyArMjEwLDYg
QEAgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQs
IHZvaWQqKiByZXN1bHQpCiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gRURFQURMSykKICAgICAgICAg
TE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyBmb3VuZCB0byBiZSBkZWFkbG9ja2Vk
IHRyeWluZyB0byBxdWl0IiwgdGhyZWFkSUQpOwogCi0gICAgY2xlYXJQdGhyZWFkSGFuZGxlRm9y
SWRlbnRpZmllcih0aHJlYWRJRCk7CiAgICAgcmV0dXJuIGpvaW5SZXN1bHQ7CiB9CiAKQEAgLTIx
NSwxNiArMjIwLDE4IEBAIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhyZWFk
SUQpCiAgICAgcHRocmVhZF90IHB0aHJlYWRIYW5kbGUgPSBwdGhyZWFkSGFuZGxlRm9ySWRlbnRp
Zmllcih0aHJlYWRJRCk7CiAKICAgICBwdGhyZWFkX2RldGFjaChwdGhyZWFkSGFuZGxlKTsKLQot
ICAgIGNsZWFyUHRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIodGhyZWFkSUQpOwogfQogCiBUaHJl
YWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQogewotICAgIHB0aHJlYWRfdCBjdXJyZW50VGhy
ZWFkID0gcHRocmVhZF9zZWxmKCk7Ci0gICAgaWYgKFRocmVhZElkZW50aWZpZXIgaWQgPSBpZGVu
dGlmaWVyQnlQdGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQpKQorICAgIFRocmVhZElkZW50aWZp
ZXIgaWQgPSBUaHJlYWRJZGVudGlmaWVyRGF0YTo6aWRlbnRpZmllcigpOworICAgIGlmIChpZCkK
ICAgICAgICAgcmV0dXJuIGlkOwotICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRo
cmVhZEhhbmRsZShjdXJyZW50VGhyZWFkKTsKKworICAgIC8vIE5vdCBhIFdURi1jcmVhdGVkIHRo
cmVhZCwgVGhyZWFkSWRlbnRpZmllciBpcyBub3QgZXN0YWJsaXNoZWQgeWV0LgorICAgIGlkID0g
ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRIYW5kbGUocHRocmVhZF9zZWxmKCkpOworICAg
IFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplKGlkKTsKKyAgICByZXR1cm4gaWQ7CiB9
CiAKIGJvb2wgaXNNYWluVGhyZWFkKCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdXaW4uY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5k
ZXggMWZkODRkMi4uNzNjM2YwYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1dpbi5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAg
LTExOCw3ICsxMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCB0YWdUSFJFQUROQU1FX0lORk8gewogfSBU
SFJFQUROQU1FX0lORk87CiAjcHJhZ21hIHBhY2socG9wKQogCi12b2lkIHNldFRocmVhZE5hbWVJ
bnRlcm5hbChjb25zdCBjaGFyKiBzelRocmVhZE5hbWUpCit2b2lkIGluaXRpYWxpemVDdXJyZW50
VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciogc3pUaHJlYWROYW1lKQogewogICAgIFRIUkVBRE5B
TUVfSU5GTyBpbmZvOwogICAgIGluZm8uZHdUeXBlID0gMHgxMDAwOwpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgICAgIGluaXRpYWxpemVSYW5kb21O
dW1iZXJHZW5lcmF0b3IoKTsKICAgICAgICAgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICAg
ICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7Ci0gICAgICAgIHNldFRo
cmVhZE5hbWVJbnRlcm5hbCgiTWFpbiBUaHJlYWQiKTsKKyAgICAgICAgaW5pdGlhbGl6ZUN1cnJl
bnRUaHJlYWRJbnRlcm5hbCgiTWFpbiBUaHJlYWQiKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9ndGsvVGhyZWFkaW5nR3RrLmNwcAppbmRleCBiNGY0ZGUxLi5hNmVjOGY3IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvZ3RrL1RocmVhZGluZ0d0ay5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvd3RmL2d0ay9UaHJlYWRpbmdHdGsuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBv
aW50LCB2b2lkKiBkYXRhLCBjb24KICAgICByZXR1cm4gdGhyZWFkSUQ7CiB9CiAKLXZvaWQgc2V0
VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqKQordm9pZCBpbml0aWFsaXplQ3VycmVudFRo
cmVhZEludGVybmFsKGNvbnN0IGNoYXIqKQogewogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVh
ZGluZ1F0LmNwcAppbmRleCA5YmQ0MDBjLi5kYzA0YTY4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9U
aHJlYWRpbmdRdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0
ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNv
bgogICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkKHRocmVhZFJlZik7CiB9
CiAKLXZvaWQgc2V0VGhyZWFkTmFtZUludGVybmFsKGNvbnN0IGNoYXIqKQordm9pZCBpbml0aWFs
aXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqKQogewogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZDZj
ZTc4Mi4uMWU3MjAwOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTAxLTA1ICBEbWl0cnkg
VGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0aGUgbGVhayBvZiBUaHJlYWRJZGVudGlmaWVycyBp
biB0aHJlYWRNYXAgYWNyb3NzIHRocmVhZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY4OQorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIHZl
cmlmeSB0aGUgVGhyZWFkSWRlbnRpZmllcnMgYXJlIG5vdCByZXVzZWQgYWNyb3NzIHRocmVhZHMu
CisgICAgICAgIFRoZSB0ZXN0IHJ1bnMgaW4gdGhlIGJlZ2lubmluZyBvZiBEdW1wUmVuZGVyVHJl
ZSBhbmQgc3Bhd25zIDIgbm9uLVdURiB0cmVhZHMgc2VxdWVudGlhbGx5LAorICAgICAgICB3YWl0
aW5nIGZvciB0aGUgcHJldmlvdXMgdGhyZWFkIHRvIHRlcm1pbmF0ZSBiZWZvcmUgc3RhcnRpbmcg
dGhlIG5leHQuCisgICAgICAgIFRoZSB0cmVhZHMgdXNlIFdURjo6Y3VycmVudFRocmVhZCgpIGlu
IHRoZWlyIHRocmVhZCBmdW5jdGlvbi4gV2l0aG91dCBhIGZpeCwgdGhpcworICAgICAgICBjYXVz
ZXMgYm90aCB0aHJlYWRzIHRvIGhhdmUgdGhlIHNhbWUgVGhyZWFkSWRlbnRpZmllciB3aGljaCB0
cmlnZ2VycyBBU1NFUlQgaW4gdGhyZWFkIGZ1bmN0aW9uLgorICAgICAgICBJdCBhbHNvIHN0YXJ0
cyBhbm90aGVyIHRocmVhZCB1c2luZyBXVEYuIFdpdGhvdXQgdGhlIGZpeCwgdGhpcyBmaW5kcyBw
dGhyZWFkIGhhbmRsZSBmcm9tIHByZXZpb3VzCisgICAgICAgIHRocmVhZHMgaW4gdGhlIFdURiB0
aHJlYWRNYXAgYW5kIGFzc2VydHMgaW4gV1RGOjplc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVh
ZEhhbmRsZSgpLgorICAgICAgICBUaGUgdGVzdCBwcmFjdGljYWxseSBkb2VzIG5vdCBhZmZlY3Qg
dGhlIERSVCBydW4gdGltZSBiZWNhdXNlIHRoZSB0aHJlYWRzIGVuZCBpbW1lZGlhdGVseS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAg
KHJ1blRocmVhZCk6IFRlc3QgdGhyZWFkIGZ1bmN0aW9uLgorICAgICAgICAodGVzdFRocmVhZElk
ZW50aWZpZXJNYXApOgorICAgICAgICAoZHVtcFJlbmRlclRyZWUpOgorCiAyMDEwLTAxLTA1ICBD
aHJpcyBKZXJkb25layAgPGNocmlzLmplcmRvbmVrQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBLaWx6ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNGZmZWFjMy4uMDgxY2RjZSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtODAsNiAr
ODAsNyBAQAogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVGhyZWFk
aW5nLmg+CiAjaW1wb3J0IDx3dGYvT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC00NjYsNiArNDY3LDMxIEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFs
dWVzRm9yVGVzdGluZygpCiAKIH0KIAorc3RhdGljIHZvaWQqIHJ1blRocmVhZCh2b2lkKiBhcmcp
Cit7CisgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgcHJldmlvdXNJZCA9IDA7CisgICAgVGhy
ZWFkSWRlbnRpZmllciBjdXJyZW50SWQgPSBjdXJyZW50VGhyZWFkKCk7CisgICAgLy8gVmVyaWZ5
IDIgc3VjY2Vzc2l2ZSB0aHJlYWRzIGRvIG5vdCBnZXQgdGhlIHNhbWUgSWQuCisgICAgQVNTRVJU
KHByZXZpb3VzSWQgIT0gY3VycmVudElkKTsKKyAgICBwcmV2aW91c0lkID0gY3VycmVudElkOwor
ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB0ZXN0VGhyZWFkSWRlbnRpZmllck1hcCgp
Cit7CisgICAgLy8gSW1pdGF0ZSAnZm9yZWlnbicgdGhyZWFkcyB0aGF0IGFyZSBub3QgY3JlYXRl
ZCBieSBXVEYuCisgICAgcHRocmVhZF90IHB0aHJlYWQ7CisgICAgcHRocmVhZF9jcmVhdGUoJnB0
aHJlYWQsIDAsICZydW5UaHJlYWQsIDApOworICAgIHB0aHJlYWRfam9pbihwdGhyZWFkLCAwKTsK
KworICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVuVGhyZWFkLCAwKTsKKyAgICBw
dGhyZWFkX2pvaW4ocHRocmVhZCwgMCk7CisKKyAgICAvLyBOb3cgY3JlYXRlIGFub3RoZXIgdGhy
ZWFkIHVzaW5nIFdURi4gT24gT1NYLCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRocmVhZCBoYW5k
bGUKKyAgICAvLyBidXQgc2hvdWxkIGdldCBhIGRpZmZlcmVudCBUaHJlYWRJZGVudGlmaWVyLgor
ICAgIGNyZWF0ZVRocmVhZChydW5UaHJlYWQsIDAsICJEdW1wUmVuZGVyVHJlZTogdGVzdCIpOwor
fQorCiBzdGF0aWMgdm9pZCBjcmFzaEhhbmRsZXIoaW50IHNpZykKIHsKICAgICBjaGFyICpzaWdu
YWxOYW1lID0gc3Ryc2lnbmFsKHNpZyk7CkBAIC02MTQsNiArNjQwLDkgQEAgdm9pZCBkdW1wUmVu
ZGVyVHJlZShpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS81MjIyOTExPgogICAgIHRlc3RTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0
cmluZygpOwogCisgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi8zMjY4OQorICAgIHRlc3RUaHJl
YWRJZGVudGlmaWVyTWFwKCk7CisKICAgICBpZiAodGhyZWFkZWQpCiAgICAgICAgIHN0YXJ0SmF2
YVNjcmlwdFRocmVhZHMoKTsKIAo=
</data>
<flag name="review"
          id="28193"
          type_id="1"
          status="+"
          setter="mjs"
    />
    <flag name="commit-queue"
          id="28194"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>