<?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>116342</bug_id>
          
          <creation_ts>2013-05-17 12:39:39 -0700</creation_ts>
          <short_desc>Mac: Set the default audio buffer size to a large value for &lt;video&gt; elements.</short_desc>
          <delta_ts>2013-05-24 11:54:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116725</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>890589</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-17 12:39:39 -0700</bug_when>
    <thetext>Mac: Set the default audio buffer size to a large value for &lt;video&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890620</commentid>
    <comment_count>1</comment_count>
      <attachid>202141</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-17 13:11:49 -0700</bug_when>
    <thetext>Created attachment 202141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890641</commentid>
    <comment_count>2</comment_count>
      <attachid>202141</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 13:39:33 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/484804</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890642</commentid>
    <comment_count>3</comment_count>
      <attachid>202141</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-17 13:40:30 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/487539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890643</commentid>
    <comment_count>4</comment_count>
      <attachid>202141</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-17 13:41:07 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/492451</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890647</commentid>
    <comment_count>5</comment_count>
      <attachid>202141</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 13:44:29 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/484800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890669</commentid>
    <comment_count>6</comment_count>
      <attachid>202141</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-17 14:19:24 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/486563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890671</commentid>
    <comment_count>7</comment_count>
      <attachid>202141</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-17 14:25:19 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/492464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890676</commentid>
    <comment_count>8</comment_count>
      <attachid>202141</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 14:39:17 -0700</bug_when>
    <thetext>Comment on attachment 202141
Patch

Attachment 202141 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/480981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890682</commentid>
    <comment_count>9</comment_count>
      <attachid>202160</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-17 14:48:52 -0700</bug_when>
    <thetext>Created attachment 202160
Patch

Added new files to the various build files for other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890686</commentid>
    <comment_count>10</comment_count>
      <attachid>202160</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-17 14:53:40 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/483900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890688</commentid>
    <comment_count>11</comment_count>
      <attachid>202160</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-17 14:55:45 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/482925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890696</commentid>
    <comment_count>12</comment_count>
      <attachid>202160</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-17 15:07:46 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/493427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890698</commentid>
    <comment_count>13</comment_count>
      <attachid>202160</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 15:13:58 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/497144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890702</commentid>
    <comment_count>14</comment_count>
      <attachid>202160</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 15:25:02 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/494426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890705</commentid>
    <comment_count>15</comment_count>
      <attachid>202160</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-17 15:35:26 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/482939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890728</commentid>
    <comment_count>16</comment_count>
      <attachid>202160</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-17 16:23:03 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/494442</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890857</commentid>
    <comment_count>17</comment_count>
      <attachid>202160</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-18 02:00:35 -0700</bug_when>
    <thetext>Comment on attachment 202160
Patch

Attachment 202160 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/499155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891117</commentid>
    <comment_count>18</comment_count>
      <attachid>202258</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-19 22:39:17 -0700</bug_when>
    <thetext>Created attachment 202258
Patch

Instead of adding what is effectively a no-op class to every port, protect non-implementing ports by wrapping AudioSession and its related classes in USE(AUDIO_SESSION) checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891119</commentid>
    <comment_count>19</comment_count>
      <attachid>202259</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-19 22:58:01 -0700</bug_when>
    <thetext>Created attachment 202259
Patch

Fix windows build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892399</commentid>
    <comment_count>20</comment_count>
      <attachid>202259</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-05-22 11:12:52 -0700</bug_when>
    <thetext>Comment on attachment 202259
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        requested buffer frame size to a large value, such as 4096. Since this results

&quot;such as 4096&quot; - kPreferredLowPowerBufferSize is set to 4098?

&gt; Source/WebCore/platform/audio/AudioSessionManager.cpp:61
&gt; +    ASSERT(type &gt;= 0);

Is &quot;type &gt;= 0&quot; really useful? Asserting that it is one of the valid values would be more complete - &quot;ASSERT(type &gt;= None &amp;&amp; type &lt;= WebAudio)&quot;

&gt; Source/WebCore/platform/audio/AudioSessionManager.cpp:67
&gt; +    ASSERT(type &gt;= 0);

Ditto.

&gt; Source/WebCore/platform/audio/AudioSessionManager.cpp:74
&gt; +    ASSERT(type &gt;= 0);

Ditto.

&gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.cpp:47
&gt; +#if USE(AUDIO_SESSION)

Is it possible that we would ever want to build this without &quot;AUDIO_SESSION&quot;? If not, remove the #ifs and let the build fail if someone tries.

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:29
&gt; +#if USE(AUDIO_SESSION) &amp;&amp; PLATFORM(IOS)

Ditto.

&gt; Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp:41
&gt; +#if USE(AUDIO_SESSION)

Ditto.

&gt; Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp:74
&gt; +#if USE(AUDIO_SESSION)
&gt; +    return AudioSession::sharedSession().sampleRate();
&gt; +#else
&gt; +    return 0;
&gt; +#endif

OTOH, if it is possible that someone would want to build this without AUDIO_SESSION shouldn&apos;t this include the old code in the #else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892444</commentid>
    <comment_count>21</comment_count>
      <attachid>202259</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-22 11:33:26 -0700</bug_when>
    <thetext>Comment on attachment 202259
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        requested buffer frame size to a large value, such as 4096. Since this results
&gt; 
&gt; &quot;such as 4096&quot; - kPreferredLowPowerBufferSize is set to 4098?

Whoops, it should be 4096.

&gt;&gt; Source/WebCore/platform/audio/AudioSessionManager.cpp:61
&gt;&gt; +    ASSERT(type &gt;= 0);
&gt; 
&gt; Is &quot;type &gt;= 0&quot; really useful? Asserting that it is one of the valid values would be more complete - &quot;ASSERT(type &gt;= None &amp;&amp; type &lt;= WebAudio)&quot;

This is really asserting that no one adds a type to the AudioType enum that is less than zero.  Because the HashMap can&apos;t handle value types that are unknown enums, i used an unsigned value (size_t), and want to guarantee no one adds an incompatible enum value.  I guess it doesn&apos;t really matter, since it will probably just cast a negative enum to a wrapped-around unsigned number.  I&apos;ll remove it.

&gt;&gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.cpp:47
&gt;&gt; +#if USE(AUDIO_SESSION)
&gt; 
&gt; Is it possible that we would ever want to build this without &quot;AUDIO_SESSION&quot;? If not, remove the #ifs and let the build fail if someone tries.

No, we will never want to use this without AUDIO_SESSION. I&apos;ll remove all these #ifs.

&gt;&gt; Source/WebCore/platform/audio/mac/AudioDestinationMac.cpp:74
&gt;&gt; +#endif
&gt; 
&gt; OTOH, if it is possible that someone would want to build this without AUDIO_SESSION shouldn&apos;t this include the old code in the #else?

Well, someone shouldn&apos;t do that, right? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892591</commentid>
    <comment_count>22</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-22 16:43:13 -0700</bug_when>
    <thetext>Committed r150555: &lt;http://trac.webkit.org/changeset/150555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892624</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-22 18:16:40 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Committed r150555: &lt;http://trac.webkit.org/changeset/150555&gt;

This patch might have broken 30 media tests:
http://build.webkit.org/builders/Apple%20Lion%20Release%20WK1%20%28Tests%29/builds/12699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892625</commentid>
    <comment_count>24</comment_count>
      <attachid>202259</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-22 18:18:58 -0700</bug_when>
    <thetext>Comment on attachment 202259
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:190
&gt; +static const size_t kPreferredLowPowerBufferSize = 4098;

Where is this used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892629</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-22 18:34:18 -0700</bug_when>
    <thetext>WK2 failures: http://build.webkit.org/results/Apple%20MountainLion%20Release%20WK2%20(Tests)/r150555%20(9117)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892632</commentid>
    <comment_count>26</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-22 18:53:21 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 202259 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202259&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:190
&gt; &gt; +static const size_t kPreferredLowPowerBufferSize = 4098;
&gt; 
&gt; Where is this used?

It was unused. I deleted this line before committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892648</commentid>
    <comment_count>27</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-05-22 20:37:16 -0700</bug_when>
    <thetext>This broke about 30 media tests so we had to roll it out: r150561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893403</commentid>
    <comment_count>28</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-05-24 11:54:45 -0700</bug_when>
    <thetext>Committed r150651: &lt;http://trac.webkit.org/changeset/150651&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202141</attachid>
            <date>2013-05-17 13:11:49 -0700</date>
            <delta_ts>2013-05-17 14:48:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116342-20130517131040.patch</filename>
            <type>text/plain</type>
            <size>36472</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwYWM0OTNhYjFkMTc1
MTdlNzRjMTc1YTJlNTU0Mjk2NmYwOWNiYy4uZDViOTJlMjMwYTExZGQ4NmQ4MGJmZTMwNTU2Y2Qy
ZjJjMjk1NTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEzLTA1LTE3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1hYzogU2V0IHRoZSBkZWZh
dWx0IGF1ZGlvIGJ1ZmZlciBzaXplIHRvIGEgbGFyZ2UgdmFsdWUgZm9yIDx2aWRlbz4gZWxlbWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYz
NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBl
bmFibGUgcG93ZXIgc2F2aW5ncyBieSB3YWtpbmcgdXAgdGhlIGF1ZGlvIGhhcmR3YXJlIGxlc3Mg
b2Z0ZW4sIHNldCB0aGUKKyAgICAgICAgcmVxdWVzdGVkIGJ1ZmZlciBmcmFtZSBzaXplIHRvIGEg
bGFyZ2UgdmFsdWUsIHN1Y2ggYXMgNDA5Ni4gU2luY2UgdGhpcyByZXN1bHRzCisgICAgICAgIGlu
IGFwcHJveGltYXRlbHkgMTAwbXMgd29ydGggb2YgYnVmZmVyLCBzZXQgdGhlIGJ1ZmZlciBzaXpl
IHRvIGEgbXVjaCBsb3dlcgorICAgICAgICB2YWx1ZSB3aGVuIHBsYXlpbmcgV2ViQXVkaW8sIHdo
aWNoIGlzIG11Y2ggbW9yZSBzZW5zaXRpdmUgdG8gbGF0ZW5jeSB0aGFuIHZpZGVvCisgICAgICAg
IG9yIGF1ZGlvIGVsZW1lbnRzLgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBjbGFzcywgQXVk
aW9TZXNzaW9uTWFuYWdlciwgYXMgd2VsbCBhcyBhIGhlbHBlciBjbGFzcywKKyAgICAgICAgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuLiBBdWRpbyBlbGVtZW50cywgdmlkZW8gZWxlbWVudHMsIGFu
ZCBXZWJBdWRpbyBkZXN0aW5hdGlvbgorICAgICAgICBub2RlcyB3aWxsIGNyZWF0ZSBhbmQgcmV0
YWluIGEgdG9rZW4sIGFuZCByZWxlYXNlIHRoZSB0b2tlbiBpbiB0aGVpciBkZXN0cnVjdG9yLgor
ICAgICAgICBUaGlzIGFsbG93cyB0aGUgQXVkaW9TZXNzaW9uTWFuYWdlciB0byB0cmFjayBob3cg
bWFueSBvZiB3aGF0IHR5cGUgb2YgYXVkaW8tCisgICAgICAgIGdlbmVyYXRpbmcgb2JqZWN0cyBh
cmUgaW4gZXhpc3RlbmNlLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgaW1wbGVtZW50aW5nIEF1
ZGlvU2Vzc2lvbiBmb3IgTWFjIHBsYXRmb3Jtcy4gTW92ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgZm9yIHJldHJpZXZpbmcgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlIGFuZCBzZXR0aW5n
IHRoZSBidWZmZXIgZHVyYXRpb24gaW50bworICAgICAgICBBdWRpb1Nlc3Npb25NYWMgZnJvbSBB
dWRpb0Rlc3RpbmF0aW9uTWFjLCB0byBiZSBzaGFyZWQgd2l0aCBBdWRpb1Nlc3Npb25NYW5hZ2Vy
TWFjLgorCisgICAgICAgIENoYW5nZSB0aGUgQXVkaW9TZXNzaW9uIG1ldGhvZCBwcmVmZXJyZWRC
dWZmZXJMZW5ndGgoKSBpbnRvIHByZWZlcnJlZEJ1ZmZlclNpemUoKSwKKyAgICAgICAgYXMgdGhl
IGNhbGxlcnMgcmVhbGx5IHdhbnQgdG8gc3BlY2lmeSBhIGJ1ZmZlciBzaXplLCBub3QgYSBidWZm
ZXIgZHVyYXRpb24uIE9uIGlPUywKKyAgICAgICAgd2hlcmUgdGhlIGF2YWlsYWJsZSBBUEkgcmVx
dWlyZXMgYSBkdXJhdGlvbiwgcGVyZm9ybSB0aGUgY29udmVyc2lvbiBmcm9tIGR1cmF0aW9uIHRv
CisgICAgICAgIHNpemUgb24gYmVoYWxmIG9mIHRoZSBjYWxsZXIuCisKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDogIEFkZCBhIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbiBtZW1i
ZXIuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIHRoZSB0
b2tlbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBm
cm9tIHByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFJlbmFtZWQgZnJvbSBzZXRQcmVmZXJyZWRCdWZm
ZXJMZW5ndGguCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSk6IFNpbXBsZSBmYWN0b3J5IG1ldGhvZC4K
KyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNzaW9uTWFuYWdlclRv
a2VuKTogQ2FsbCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjppbmNyZW1lbnRDb3VudCgpLgorICAgICAg
ICAoQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKTog
Q2FsbCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpkZWNyZW1lbnRDb3VudCgpLgorICAgICAgICAoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcik6IFNpbXBsZSBzaW5nbGV0b24gbWV0aG9k
LgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFuYWdlcik6IFNp
bXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6Omhhcyk6IFJl
dHVybiB3aGV0aGVyIHRoZSB0eXBlIGlzIHByZXNlbnQuCisgICAgICAgIChBdWRpb1Nlc3Npb25N
YW5hZ2VyOjppbmNyZW1lbnRDb3VudCk6IEluY3JlbWVudCwgdGhlbiBjYWxsIHVwZGF0ZVNlc3Np
b25TdGF0ZSgpCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpkZWNyZW1lbnRDb3VudCk6
IERlY3JlbWVudCwgdGhlbiBjYWxsIHVwZGF0ZVNlc3Npb25TdGF0ZSgpCisgICAgICAgIChBdWRp
b1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBTdHViLCBkb2VzIG5vdGhpbmcu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmNvbmZpZ3VyZSk6IENhbGwgc2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZSgpIGluc3RlYWQgb2Ygc2V0UHJlZmVycmVkQnVmZmVyTGVuZ3RoKCkKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBmcm9t
IHByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFJlbmFtZWQgZnJvbSBzZXRQcmVmZXJyZWRCdWZmZXJM
ZW5ndGgKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUpOiBDYWxsIEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyk6IENyZWF0ZSB0aGUgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bk1hYzo6Y29uZmlndXJlKTogRG8gbm90IHNldCB0aGUgYnVmZmVyIHNpemUgKHRoaXMgaXMgZG9u
ZSBpbiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZp
Y2UpOiBBZGRlZCwgcmV0dXJucyB0aGUgZGVmYXVsdCBhdWRpbyBkZXZpY2UuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbik6IFNpbXBsZSBk
ZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSk6IFN0
dWIsIHVuaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmNhdGVnb3J5
T3ZlcnJpZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0
ZWdvcnlPdmVycmlkZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb246OnNldEFjdGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlKTogVXNlIHRoZSBIQUwgdG8gcmV0dXJuIHRoZSBkZWZhdWx0IGF1ZGlvIGRl
dmljZSBzYW1wbGUgcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6cHJlZmVy
cmVkQnVmZmVyU2l6ZSk6IFJldHVybiB0aGUgY3VycmVudCBIQUwgc2V0dGluZy4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFNldCB0aGUg
YnVmZmVyIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwOgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lv
blN0YXRlKTogU2V0IHRoZSBidWZmZXIgc2l6ZSBkZXBlbmRpbmcgb24gd2hhdCBhdWRpbyBvdXRw
dXRzIGFyZSBwcmVzZW50LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogQWRkIHRoZSBuZXcgZmlsZXMgdG8gdGhlIHByb2plY3QuCisKIDIwMTMtMDUtMTYgIEpl
c3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIEFkZCBzdHVicyBmb3IgQ29udGV4dE1lbnUgYW5kIENvbnRleHRNZW51SXRlbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDM0NjNiZTk3Y2IyNGFiMGNhMDFmN2I0ODQxYWRjZjg4ODc4MTI0MDIuLjYwOWFmMTQwMWYyMGE5
NzRkMWNlMjVkMWRhNzRjOGMwMjQ0NGFlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUyMTIsNiArNTIxMiw4IEBACiAJCUNE
MzdCMzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzQxNUMxQTdF
MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi87IH07CiAJCUNENDdCM0ZD
MTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q0N0IzRkExNkNDMzRGODAwQTIx
RUM4IC8qIENETVByaXZhdGVBVkZvdW5kYXRpb24ubW0gKi87IH07CiAJCUNENEFDNTJBMTQ5NkFF
OUEwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2IGluIENvcHkgQXVkaW8gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAv
KiBDb21wb3NpdGUud2F2ICovOyB9OworCQlDRDU0REU0NzE3NDY4QjZGMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFuYWdlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFu
YWdlck1hYy5jcHAgKi87IH07CisJCUNENTRERTRCMTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nl
c3Npb25NYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5jcHAgKi87IH07
CiAJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdFMDUy
MTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tICovOyB9Owog
CQlDRDgyMDMwQTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4MjAz
MDYxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDgyMDMwQjEz
OTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA3MTM5NUFCNkEw
MEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tICovOyBzZXR0aW5ncyA9
IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVuZGVmIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjM0LDcgQEAKIAkJQ0RBOThFMEQxNjAzRkU0QTAwRkVB
M0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsg
fTsKIAkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0
RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQ0RBQThEMEExNEQ3
MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0
Zm9ybUNsb2NrQ00ubW0gKi87IH07CisJCUNEQUU4QzA5MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRp
b1Nlc3Npb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2Vy
LmNwcCAqLzsgfTsKIAkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5
RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlG
QTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAv
KiBKU01lZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0Ig
LyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREMyNkIzQzE2MEE2MkIwMDAyNjc1N0IgLyogTW9ja0NETS5jcHAgKi87IH07CkBAIC0x
MTk2Niw2ICsxMTk2OSw4IEBACiAJCUNENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2
YXRlQVZGb3VuZGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgcGF0aCA9IE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q0QUM1MjgxNDk2QUUyRjAwODdDNEVGIC8qIENvbXBvc2l0ZS53YXYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhdWRpby53YXY7IG5hbWUgPSBD
b21wb3NpdGUud2F2OyBwYXRoID0gcGxhdGZvcm0vYXVkaW8vcmVzb3VyY2VzL0NvbXBvc2l0ZS53
YXY7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQz
ODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2Ny
ZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q1NERFNDUxNzQ2OEI2RjAw
NUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Np
b25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9TZXNz
aW9uTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q3RTA1MjAxNjUxQTg0
MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDsgcGF0aCA9IG9iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEN0UwNTIxMTY1MUE4NDEw
MEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHBhdGggPSBvYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4MjAzMDYx
Mzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMDUsNiArMTIwMTAsOCBAQAogCQlD
REE5OEUwQzE2MDNDRjNDMDBGRUEzQjEgLyogQ0RNUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBDRE1Qcml2YXRlLmg7IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQThEMDcx
NEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDTS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8q
IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXVkaW9TZXNzaW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjIxNjBENDg5OTAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFLZXlF
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGMzE2MEQ0ODk5MDBF
NUIwN0YgLyogTWVkaWFLZXlFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFL
ZXlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUY0MTYwRDQ4
OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjA3NzUsNiArMjA3ODIsOCBAQAogCQkJCUNEQTc5ODIxMTcwQTIyREMwMEQ0NUM1NSAv
KiBBdWRpb1Nlc3Npb24uaCAqLywKIAkJCQlDREE3OTgyMzE3MEEyNTgzMDBENDVDNTUgLyogQXVk
aW9TZXNzaW9uLmNwcCAqLywKIAkJCQlDREE3OTgyMjE3MEEyNEY0MDBENDVDNTUgLyogQXVkaW9T
ZXNzaW9uTGlzdGVuZXIuaCAqLywKKwkJCQlDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogQXVk
aW9TZXNzaW9uTWFuYWdlci5jcHAgKi8sCisJCQkJQ0RBRThDMDgxNzQ2Qjk1NzAwNTMyRDc4IC8q
IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuaCAqLywKIAkJCQlGRDMxNjA1MzEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9Tb3VyY2VQcm92aWRlci5oICovLAogCQkJCUZENjJGNTJEMTQ1ODk4RDgwMDk0QjBF
RCAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50LmggKi8sCiAJCQkJRkQzMTYwNTQxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvVXRpbGl0aWVzLmNwcCAqLywKQEAgLTIwODQxLDYgKzIwODUwLDgg
QEAKIAkJCQlGRDMxNjBCODEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFjLmNw
cCAqLywKIAkJCQlGRDMxNjBCOTEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyTWFj
LmggKi8sCiAJCQkJRkQzMTYwQkExMkIwMjcyQTAwQzFBMzU5IC8qIEZGVEZyYW1lTWFjLmNwcCAq
LywKKwkJCQlDRDU0REU0NTE3NDY4QjZGMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFuYWdlck1h
Yy5jcHAgKi8sCisJCQkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1h
Yy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0yNTA0Myw2ICsyNTA1NCw3IEBACiAJCQkJODQ3MzBEN0MxMjQ4RjBCMzAwRDNBOUM5
IC8qIEZFRGlzcGxhY2VtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNThFODgwMTM2
MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3
MzBEN0UxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFRmxvb2QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0Q1NERFNEIxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NDgwMTk1NDEwOEJBRkIzMDBDQjJCMUYgLyogRkVHYXVzc2lhbkJsdXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEODAxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFTGlnaHRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3MzBEODIxMjQ4RjBCMzAwRDNBOUM5IC8qIEZF
TWVyZ2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjM3NSw2ICsyNjM4Nyw3IEBACiAJCQkJOTMz
MDlFMDkwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY1NUIzRENGMTI1MUYxMkQwMDNFRjI2OSAvKiBSZXNldElucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRCQzg0MjE2MUNGMDVDMDA0RDUyRjQgLyogUmVz
b3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1
QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
QkM4M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTM0RjcxM0UwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdFRTY4NDZCMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVy
cm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjgxNyw2ICsyNjgzMCw3IEBACiAJCQkJMzc2
RENDRTExM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjJDM0RBNEEwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc1OUU5M0YxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlDREFFOEMwOTE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0MjE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4
dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MUE5RUMyMTY4RkJDNDMwMDI2MjlG
OSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTQ1
MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOTc0NzQ5MTFmYjk0
YzM2OWJkZTIzYzIxOGVjNmJlNWM0NjhkNTM0OS4uOWFkOTJiNWI5NmRhZjVlNjQ2MTIzYTUwN2Y4
NDQ1ZWUwNTc0MzQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNp
bmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgpAQCAt
MTgzLDYgKzE4NCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBib29sU3RyaW5nKGJvb2wgdmFsKQog
c3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNlQmxvYlByb3RvY29sID0gImJsb2IiOwogI2Vu
ZGlmCiAKK3N0YXRpYyBjb25zdCBzaXplX3Qga1ByZWZlcnJlZExvd1Bvd2VyQnVmZmVyU2l6ZSA9
IDQwOTg7CisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCkBAIC0zMTYsNiArMzE5LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICNpZiBFTkFC
TEUoV0VCX0FVRElPKQogICAgICwgbV9hdWRpb1NvdXJjZU5vZGUoMCkKICNlbmRpZgorICAgICwg
bV9hdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVh
dGUodGFnTmFtZSA9PSB2aWRlb1RhZyA/IEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OlZpZGVvIDogQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW8pKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQiKTsKICAgICBkb2N1bWVudC0+cmVnaXN0ZXJGb3JNZWRp
YVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggMzBkYzEyNDU3MzkyY2NjYTM4MGJmOTQ0ZWY2MDgyOTc0MTVlNTA5OS4uMjRiMzBm
NjNkNDM5ZDJlMzU2N2VhMjgyMTQyZDRhOWY3OThkOGE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU7CkBAIC03NjUsNiArNzY2LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoUExBVEZPUk1f
VEVYVF9UUkFDS19NRU5VKQogICAgIFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFja01lbnVJbnRlcmZh
Y2U+IG1fcGxhdGZvcm1NZW51OwogI2VuZGlmCisKKyAgICBPd25QdHI8QXVkaW9TZXNzaW9uTWFu
YWdlclRva2VuPiBtX2F1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsKIH07CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmNwcAppbmRleCBjZGY4MzM3MjM3ZmIwNzk5Mzk2Y2ZiYTI0ZWE4OTQzNWRlYWM1ZmY2Li4w
Y2IxM2FmOTM0YjU2MDQ2ODQ0MWUzZjc1YjBmODFmNTUyOTlkY2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBBdWRpb1Nlc3Npb246OmVuZGVkQXVkaW9JbnRlcnJ1cHRpb24oKQogICAgICAgICAoKmkp
LT5lbmRlZEF1ZGlvSW50ZXJydXB0aW9uKCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lm
ICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShNQUMpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2
YXRlIHsKIH07CiAKQEAgLTExMiwxMyArMTEyLDEzIEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRB
Y3RpdmUoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1mbG9hdCBBdWRpb1Nlc3Np
b246OnByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb246
OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJE
dXJhdGlvbihmbG9hdCkKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KHNpemVfdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCA3YzIwMmViNmIxMDVmN2M0ZDg0NDBk
YzllNDUzNzg2Zjg2YjRmMDMwLi5mNTk4M2RkNDk3ODcyN2VmYTUxYWM0MmUwMmU5YjI1YjM2NzNi
MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApA
QCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKIAot
ICAgIGZsb2F0IHByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQ
cmVmZXJyZWRCdWZmZXJEdXJhdGlvbihmbG9hdCBzZWNvbmRzKTsKKyAgICBzaXplX3QgcHJlZmVy
cmVkQnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShz
aXplX3QpOwogCiAgICAgdm9pZCBiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKCk7CiAgICAgdm9pZCBl
bmRlZEF1ZGlvSW50ZXJydXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYjJmYjFiYjlh
YzE4YTJjMzI5NmMyMmI1MzNhNThmZTliYjQzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcApAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF1ZGlv
U2Vzc2lvbk1hbmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1Bhc3NPd25Q
dHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNy
ZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbih0eXBlKSk7Cit9CisKK0F1ZGlv
U2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7CisgICAgQXVk
aW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmluY3JlbWVudENvdW50KHR5cGUpOwor
fQorCitBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46On5BdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4o
KQoreworICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kZWNyZW1lbnRD
b3VudChtX3R5cGUpOworfQorCitBdWRpb1Nlc3Npb25NYW5hZ2VyJiBBdWRpb1Nlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vz
c2lvbk1hbmFnZXIsIG1hbmFnZXIsICgpKTsKKyAgICByZXR1cm4gbWFuYWdlcjsKK30KKworQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFuYWdlcigpCit7Cit9CisKK2Jvb2wgQXVk
aW9TZXNzaW9uTWFuYWdlcjo6aGFzKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBl
KQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAgIHJldHVybiBtX3R5cGVDb3VudC5jb250
YWlucyh0eXBlKTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjppbmNyZW1lbnRDb3Vu
dChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA+PSAwKTsKKyAgICBtX3R5cGVDb3VudC5hZGQodHlwZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0
YXRlKCk7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6ZGVjcmVtZW50Q291bnQoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPj0g
MCk7CisgICAgbV90eXBlQ291bnQucmVtb3ZlKHR5cGUpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0
ZSgpOworfQorCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6
dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5OGUx
MTljY2JhOTM4Y2ZkOWY2OTE0NzQwN2ZhOGE1NDcxOWI3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmgKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCisj
ZGVmaW5lIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaAorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2Vy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgQXVkaW9TZXNzaW9uTWFuYWdlciYgc2hhcmVkTWFuYWdl
cigpOworCisgICAgZW51bSBBdWRpb1R5cGUgeworICAgICAgICBOb25lLAorICAgICAgICBWaWRl
bywKKyAgICAgICAgQXVkaW8sCisgICAgICAgIFdlYkF1ZGlvLAorICAgIH07CisKKyAgICBib29s
IGhhcyhBdWRpb1R5cGUpOworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIEF1ZGlvU2Vz
c2lvbk1hbmFnZXJUb2tlbjsKKyAgICB2b2lkIGluY3JlbWVudENvdW50KEF1ZGlvVHlwZSk7Cisg
ICAgdm9pZCBkZWNyZW1lbnRDb3VudChBdWRpb1R5cGUpOworICAgIAorcHJpdmF0ZToKKyAgICBB
dWRpb1Nlc3Npb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOwor
CisgICAgSGFzaENvdW50ZWRTZXQ8c2l6ZV90PiBtX3R5cGVDb3VudDsKK307CisKK2NsYXNzIEF1
ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBjcmVhdGUoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVk
aW9UeXBlKTsKKyAgICB+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCk7CisKK3ByaXZhdGU6Cisg
ICAgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlw
ZSk7CisKKyAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgbV90eXBlOworfTsKK30K
KworI2VuZGlmIC8vIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4
IDM0YjI4OGMyMmExNmI3NWZkYjM5NGVlYmJhNjZmMmVkY2U5NWVlMDAuLjk1ZThhNDVkNTRmZGEw
ZmMwYTRlMTNkNzI0YmNhYWRmZTM0OGQwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTE4OCw3
ICsxODgsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OmNvbmZpZ3VyZSgpCiAgICAgcmVz
dWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVy
dHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFt
Rm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CiAgICAgQVNTRVJU
KCFyZXN1bHQpOwogCi0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVy
cmVkQnVmZmVyRHVyYXRpb24obmFycm93UHJlY2lzaW9uVG9GbG9hdChrUHJlZmVycmVkQnVmZmVy
U2l6ZSAvIG1fc2FtcGxlUmF0ZSkpOworICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1ByZWZlcnJlZEJ1ZmZlclNpemUpOwogfQogCiB2b2lk
IEF1ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDlmYThlM2JlZDFiYWM3
NDliYzcxODZkMDliMjQ2OGQxNTBiMzM5MGIuLmMwMzY4NjAzZTc0ZDA0ZTg2NGNlODY3YTUxODFh
ODExMmE5Yzg2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtMjAxLDE0ICsyMDEsMTUgQEAgdm9pZCBBdWRpb1Nl
c3Npb246OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBBU1NFUlQoIWVycm9yKTsKIH0KIAot
ZmxvYXQgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJEdXJhdGlvbigpIGNvbnN0CitzaXpl
X3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gcHJlZmVycmVkSU9CdWZmZXJEdXJh
dGlvbl07CisgICAgcmV0dXJuIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHByZWZl
cnJlZElPQnVmZmVyRHVyYXRpb25dICogc2FtcGxlUmF0ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vz
c2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCit2b2lkIEF1
ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKIHsK
ICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlclNp
emUgLyBzYW1wbGVSYXRlKCk7CiAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0g
c2V0UHJlZmVycmVkSU9CdWZmZXJEdXJhdGlvbjpkdXJhdGlvbiBlcnJvcjomZXJyb3JdOwogICAg
IEFTU0VSVCghZXJyb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IGExYTU0YzM4MzJmMjZi
Zjg0YzQyOGRiZDAyY2U4ZGEwOTRmMTZiOTUuLmFlNGIzM2JlODY0NWVkYjU2ZDZkNzU4MGYzZWUx
ZGI4MDVkNGU5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJBdWRpb0Rlc3RpbmF0aW9uTWFjLmgiCiAKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIK
QEAgLTYzLDIzICs2NCw3IEBAIFBhc3NPd25QdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiBmbG9hdCBBdWRpb0Rl
c3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQogewogICAgIC8vIERldGVybWluZSB0aGUg
ZGVmYXVsdCBvdXRwdXQgZGV2aWNlJ3Mgc2FtcGxlLXJhdGUuCi0gICAgQXVkaW9EZXZpY2VJRCBk
ZXZpY2VJRCA9IGtBdWRpb0RldmljZVVua25vd247Ci0gICAgVUludDMyIGluZm9TaXplID0gc2l6
ZW9mKGRldmljZUlEKTsKLQotICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGRlZmF1bHRP
dXRwdXREZXZpY2VBZGRyZXNzID0geyBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGVmYXVsdE91dHB1
dERldmljZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJv
cGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RH
ZXRQcm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmZGVmYXVsdE91dHB1dERl
dmljZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6ZSwgKHZvaWQqKSZkZXZpY2VJRCk7Ci0gICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIDA7IC8vIGVycm9yCi0KLSAgICBGbG9hdDY0IG5vbWlu
YWxTYW1wbGVSYXRlOwotICAgIGluZm9TaXplID0gc2l6ZW9mKEZsb2F0NjQpOwotCi0gICAgQXVk
aW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mgbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzID0geyBrQXVk
aW9EZXZpY2VQcm9wZXJ0eU5vbWluYWxTYW1wbGVSYXRlLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNj
b3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKLSAgICByZXN1
bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZXZpY2VJRCwgJm5vbWluYWxTYW1wbGVS
YXRlQWRkcmVzcywgMCwgMCwgJmluZm9TaXplLCAodm9pZCopJm5vbWluYWxTYW1wbGVSYXRlKTsK
LSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gMDsgLy8gZXJyb3IKLQotICAgIHJldHVy
biBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsKKyAgICByZXR1cm4g
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2FtcGxlUmF0ZSgpOwogfQogCiB1bnNpZ25l
ZCBsb25nIEF1ZGlvRGVzdGluYXRpb246Om1heENoYW5uZWxDb3VudCgpCkBAIC05Nyw2ICs4Miw3
IEBAIEF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxi
YWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6
Y3JlYXRlKDIsIGtCdWZmZXJTaXplLCBmYWxzZSkpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxl
UmF0ZSkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQorICAgICwgbV9hdWRpb1Nlc3Npb25NYW5h
Z2VyVG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoQXVkaW9TZXNzaW9uTWFu
YWdlcjo6V2ViQXVkaW8pKQogewogICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91
dHB1dFVuaXQKICAgICBBdWRpb0NvbXBvbmVudCBjb21wOwpAQCAtMTQ4LDExICsxMzQsNiBAQCB2
b2lkIEF1ZGlvRGVzdGluYXRpb25NYWM6OmNvbmZpZ3VyZSgpCiAKICAgICByZXN1bHQgPSBBdWRp
b1VuaXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1G
b3JtYXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNp
emVvZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7
Ci0KLSAgICAvLyBTZXQgdGhlIGJ1ZmZlciBmcmFtZSBzaXplLgotICAgIFVJbnQzMiBidWZmZXJT
aXplID0ga0J1ZmZlclNpemU7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9v
dXRwdXRVbml0LCBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZyYW1lU2l6ZSwga0F1ZGlvVW5p
dFNjb3BlX091dHB1dCwgMCwgKHZvaWQqKSZidWZmZXJTaXplLCBzaXplb2YoYnVmZmVyU2l6ZSkp
OwotICAgIEFTU0VSVCghcmVzdWx0KTsKIH0KIAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpz
dGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuaAppbmRleCAwNjJjOTY5ZTY5ZjY5ZDI4YmI1OGVjYmRjMWE2ZTFm
NWUzZGNiNWM5Li45ZGMzOWUxNmYyMDliZGM0ZmEyNDE5N2Q2ZDA3MzFhN2I2Y2Y1YzczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmgKQEAgLTMyLDEwICszMiwxMyBAQAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAj
aW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1Vu
aXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsK
KwogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1
dCBBdWRpb1VuaXQKIAogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rl
c3RpbmF0aW9uIHsKQEAgLTYzLDYgKzY2LDggQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IG1fc2Ft
cGxlUmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5nOworCisgICAgT3duUHRyPEF1ZGlvU2Vzc2lv
bk1hbmFnZXJUb2tlbj4gbV9hdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjQ4MWNhMmEwZGE5NzliYTYy
ODFjZTU1ZjM4ZGY1ODhlYWM3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApAQCAtMCwwICsxLDE2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24u
aCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIEF1ZGlvRGV2aWNlSUQgZGVmYXVsdERldmljZSgpCit7CisgICAgQXVkaW9EZXZpY2VJ
RCBkZXZpY2VJRCA9IGtBdWRpb0RldmljZVVua25vd247CisgICAgVUludDMyIGluZm9TaXplID0g
c2l6ZW9mKGRldmljZUlEKTsKKworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIGRlZmF1
bHRPdXRwdXREZXZpY2VBZGRyZXNzID0geworICAgICAgICBrQXVkaW9IYXJkd2FyZVByb3BlcnR5
RGVmYXVsdE91dHB1dERldmljZSwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUds
b2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAg
T1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0
U3lzdGVtT2JqZWN0LCAmZGVmYXVsdE91dHB1dERldmljZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6
ZSwgKHZvaWQqKSZkZXZpY2VJRCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7
IC8vIGVycm9yCisgICAgcmV0dXJuIGRldmljZUlEOworfQorCitjbGFzcyBBdWRpb1Nlc3Npb25Q
cml2YXRlIHsKK3B1YmxpYzogICAgCit9OworCitBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigp
CisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvblByaXZhdGUoKSkpCit7
Cit9CisKK0F1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpCit7Cit9CisKK0F1ZGlvU2Vzc2lv
bjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE5vbmU7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9u
OjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeU92ZXJy
aWRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBOb25lOwor
fQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1w
bGVSYXRlKCkgY29uc3QKK3sKKyAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRlOworICAgIFVJ
bnQzMiBub21pbmFsU2FtcGxlUmF0ZVNpemUgPSBzaXplb2YoRmxvYXQ2NCk7CisKKyAgICBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzcyBub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MgPSB7CisgICAg
ICAgIGtBdWRpb0RldmljZVByb3BlcnR5Tm9taW5hbFNhbXBsZVJhdGUsCisgICAgICAgIGtBdWRp
b09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5
RWxlbWVudE1hc3RlciB9OworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJv
cGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgMCwg
MCwgJm5vbWluYWxTYW1wbGVSYXRlU2l6ZSwgKHZvaWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7Cisg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7Cit9CisKK3NpemVfdCBBdWRpb1Nlc3Np
b246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitzaXplX3QgQXVkaW9TZXNzaW9uOjpw
cmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAgICBVSW50MzIgYnVmZmVyU2l6ZTsKKyAg
ICBVSW50MzIgYnVmZmVyU2l6ZVNpemUgPSBzaXplb2YoYnVmZmVyU2l6ZSk7CisKKyAgICBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzcyBwcmVmZXJyZWRCdWZmZXJTaXplQWRkcmVzcyA9IHsKKyAg
ICAgICAga0F1ZGlvRGV2aWNlUHJvcGVydHlCdWZmZXJGcmFtZVNpemVSYW5nZSwKKyAgICAgICAg
a0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJv
cGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RH
ZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmcHJlZmVycmVkQnVmZmVyU2l6ZUFkZHJl
c3MsIDAsIDAsICZidWZmZXJTaXplU2l6ZSwgJmJ1ZmZlclNpemUpOworCisgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGJ1ZmZlclNpemU7Cit9CisKK3ZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQor
eworICAgIEF1ZGlvVmFsdWVSYW5nZSBidWZmZXJTaXplUmFuZ2UgPSB7MCwgMH07CisgICAgVUlu
dDMyIGJ1ZmZlclNpemVSYW5nZVNpemUgPSBzaXplb2YoQXVkaW9WYWx1ZVJhbmdlKTsKKyAgICBB
dWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBidWZmZXJTaXplUmFuZ2VBZGRyZXNzID0geworICAg
ICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZyYW1lU2l6ZVJhbmdlLAorICAgICAgICBr
QXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9w
ZXJ0eUVsZW1lbnRNYXN0ZXIKKyAgICB9OworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJmJ1ZmZlclNpemVSYW5nZUFkZHJl
c3MsIDAsIDAsICZidWZmZXJTaXplUmFuZ2VTaXplLCAmYnVmZmVyU2l6ZVJhbmdlKTsKKyAgICBp
ZiAocmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgbWluQnVmZmVyU2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyU2l6ZVJhbmdlLm1NaW5pbXVtKTsKKyAgICBzaXpl
X3QgbWF4QnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyU2l6ZVJhbmdlLm1N
YXhpbXVtKTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZU91dCA9IHN0ZDo6bWluKG1heEJ1ZmZlclNp
emUsIHN0ZDo6bWF4KG1pbkJ1ZmZlclNpemUsIGJ1ZmZlclNpemUpKTsKKworICAgIEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzIHByZWZlcnJlZEJ1ZmZlclNpemVBZGRyZXNzID0geworICAgICAg
ICBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZyYW1lU2l6ZSwKKyAgICAgICAga0F1ZGlvT2Jq
ZWN0UHJvcGVydHlTY29wZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVt
ZW50TWFzdGVyIH07CisKKyAgICByZXN1bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShk
ZWZhdWx0RGV2aWNlKCksICZwcmVmZXJyZWRCdWZmZXJTaXplQWRkcmVzcywgMCwgMCwgc2l6ZW9m
KGJ1ZmZlclNpemVPdXQpLCAodm9pZCopJmJ1ZmZlclNpemVPdXQpOworCisjaWYgTE9HX0RJU0FC
TEVECisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisjZWxzZQorICAgIGlmIChyZXN1bHQpCisg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSgl
enUpIC0gZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBidWZmZXJTaXplLCByZXN1bHQpOworICAgIGVs
c2UKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKCV6dSkiLCBidWZmZXJTaXplKTsKKyNlbmRpZgorfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOTFiNzAwZTE2Yzg4ODdjMmNmMGE2Y2M2ZTNk
ZDdmZjQ5MWNlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5h
Z2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCisjaWYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgY29uc3Qgc2l6ZV90IGtXZWJBdWRpb0J1
ZmZlclNpemUgPSAxMjg7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGtMb3dQb3dlclZpZGVvQnVmZmVy
U2l6ZSA9IDQwOTg7CisKK3ZvaWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0
YXRlKCkKK3sKKyAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNz
aW9uU3RhdGUoKSAtIHR5cGVzOiBWaWRlbyglZCksIEF1ZGlvKCVkKSwgV2ViQXVkaW8oJWQpIiwg
bV90eXBlQ291bnQuY291bnQoVmlkZW8pLCBtX3R5cGVDb3VudC5jb3VudChBdWRpbyksIG1fdHlw
ZUNvdW50LmNvdW50KFdlYkF1ZGlvKSk7CisKKyAgICBpZiAoaGFzKFdlYkF1ZGlvKSkKKyAgICAg
ICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShr
V2ViQXVkaW9CdWZmZXJTaXplKTsKKyAgICBlbHNlIGlmIChoYXMoVmlkZW8pIHx8IGhhcyhBdWRp
bykpCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1
ZmZlclNpemUoa0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202160</attachid>
            <date>2013-05-17 14:48:52 -0700</date>
            <delta_ts>2013-05-19 22:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116342-20130517144745.patch</filename>
            <type>text/plain</type>
            <size>37703</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwYWM0OTNhYjFkMTc1
MTdlNzRjMTc1YTJlNTU0Mjk2NmYwOWNiYy4uZGIxYjQwNzNiZTU3YjMwYTdjYTRiNDljZjBhYzEw
MzcxZDBjZTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTA1LTE3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1hYzogU2V0IHRoZSBkZWZh
dWx0IGF1ZGlvIGJ1ZmZlciBzaXplIHRvIGEgbGFyZ2UgdmFsdWUgZm9yIDx2aWRlbz4gZWxlbWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYz
NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBl
bmFibGUgcG93ZXIgc2F2aW5ncyBieSB3YWtpbmcgdXAgdGhlIGF1ZGlvIGhhcmR3YXJlIGxlc3Mg
b2Z0ZW4sIHNldCB0aGUKKyAgICAgICAgcmVxdWVzdGVkIGJ1ZmZlciBmcmFtZSBzaXplIHRvIGEg
bGFyZ2UgdmFsdWUsIHN1Y2ggYXMgNDA5Ni4gU2luY2UgdGhpcyByZXN1bHRzCisgICAgICAgIGlu
IGFwcHJveGltYXRlbHkgMTAwbXMgd29ydGggb2YgYnVmZmVyLCBzZXQgdGhlIGJ1ZmZlciBzaXpl
IHRvIGEgbXVjaCBsb3dlcgorICAgICAgICB2YWx1ZSB3aGVuIHBsYXlpbmcgV2ViQXVkaW8sIHdo
aWNoIGlzIG11Y2ggbW9yZSBzZW5zaXRpdmUgdG8gbGF0ZW5jeSB0aGFuIHZpZGVvCisgICAgICAg
IG9yIGF1ZGlvIGVsZW1lbnRzLgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBjbGFzcywgQXVk
aW9TZXNzaW9uTWFuYWdlciwgYXMgd2VsbCBhcyBhIGhlbHBlciBjbGFzcywKKyAgICAgICAgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuLiBBdWRpbyBlbGVtZW50cywgdmlkZW8gZWxlbWVudHMsIGFu
ZCBXZWJBdWRpbyBkZXN0aW5hdGlvbgorICAgICAgICBub2RlcyB3aWxsIGNyZWF0ZSBhbmQgcmV0
YWluIGEgdG9rZW4sIGFuZCByZWxlYXNlIHRoZSB0b2tlbiBpbiB0aGVpciBkZXN0cnVjdG9yLgor
ICAgICAgICBUaGlzIGFsbG93cyB0aGUgQXVkaW9TZXNzaW9uTWFuYWdlciB0byB0cmFjayBob3cg
bWFueSBvZiB3aGF0IHR5cGUgb2YgYXVkaW8tCisgICAgICAgIGdlbmVyYXRpbmcgb2JqZWN0cyBh
cmUgaW4gZXhpc3RlbmNlLgorCisgICAgICAgIFRoaXMgcmVxdWlyZXMgaW1wbGVtZW50aW5nIEF1
ZGlvU2Vzc2lvbiBmb3IgTWFjIHBsYXRmb3Jtcy4gTW92ZSB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgZm9yIHJldHJpZXZpbmcgdGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlIGFuZCBzZXR0aW5n
IHRoZSBidWZmZXIgZHVyYXRpb24gaW50bworICAgICAgICBBdWRpb1Nlc3Npb25NYWMgZnJvbSBB
dWRpb0Rlc3RpbmF0aW9uTWFjLCB0byBiZSBzaGFyZWQgd2l0aCBBdWRpb1Nlc3Npb25NYW5hZ2Vy
TWFjLgorCisgICAgICAgIENoYW5nZSB0aGUgQXVkaW9TZXNzaW9uIG1ldGhvZCBwcmVmZXJyZWRC
dWZmZXJMZW5ndGgoKSBpbnRvIHByZWZlcnJlZEJ1ZmZlclNpemUoKSwKKyAgICAgICAgYXMgdGhl
IGNhbGxlcnMgcmVhbGx5IHdhbnQgdG8gc3BlY2lmeSBhIGJ1ZmZlciBzaXplLCBub3QgYSBidWZm
ZXIgZHVyYXRpb24uIE9uIGlPUywKKyAgICAgICAgd2hlcmUgdGhlIGF2YWlsYWJsZSBBUEkgcmVx
dWlyZXMgYSBkdXJhdGlvbiwgcGVyZm9ybSB0aGUgY29udmVyc2lvbiBmcm9tIGR1cmF0aW9uIHRv
CisgICAgICAgIHNpemUgb24gYmVoYWxmIG9mIHRoZSBjYWxsZXIuCisKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDogIEFkZCBhIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbiBtZW1i
ZXIuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIHRoZSB0
b2tlbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBm
cm9tIHByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFJlbmFtZWQgZnJvbSBzZXRQcmVmZXJyZWRCdWZm
ZXJMZW5ndGguCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChB
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSk6IFNpbXBsZSBmYWN0b3J5IG1ldGhvZC4K
KyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNzaW9uTWFuYWdlclRv
a2VuKTogQ2FsbCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjppbmNyZW1lbnRDb3VudCgpLgorICAgICAg
ICAoQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKTog
Q2FsbCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpkZWNyZW1lbnRDb3VudCgpLgorICAgICAgICAoQXVk
aW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcik6IFNpbXBsZSBzaW5nbGV0b24gbWV0aG9k
LgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFuYWdlcik6IFNp
bXBsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6Omhhcyk6IFJl
dHVybiB3aGV0aGVyIHRoZSB0eXBlIGlzIHByZXNlbnQuCisgICAgICAgIChBdWRpb1Nlc3Npb25N
YW5hZ2VyOjppbmNyZW1lbnRDb3VudCk6IEluY3JlbWVudCwgdGhlbiBjYWxsIHVwZGF0ZVNlc3Np
b25TdGF0ZSgpCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpkZWNyZW1lbnRDb3VudCk6
IERlY3JlbWVudCwgdGhlbiBjYWxsIHVwZGF0ZVNlc3Npb25TdGF0ZSgpCisgICAgICAgIChBdWRp
b1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBTdHViLCBkb2VzIG5vdGhpbmcu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmNvbmZpZ3VyZSk6IENhbGwgc2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZSgpIGluc3RlYWQgb2Ygc2V0UHJlZmVycmVkQnVmZmVyTGVuZ3RoKCkKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBmcm9t
IHByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFJlbmFtZWQgZnJvbSBzZXRQcmVmZXJyZWRCdWZmZXJM
ZW5ndGgKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUpOiBDYWxsIEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyk6IENyZWF0ZSB0aGUgQXVk
aW9TZXNzaW9uTWFuYWdlclRva2VuLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bk1hYzo6Y29uZmlndXJlKTogRG8gbm90IHNldCB0aGUgYnVmZmVyIHNpemUgKHRoaXMgaXMgZG9u
ZSBpbiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXZp
Y2UpOiBBZGRlZCwgcmV0dXJucyB0aGUgZGVmYXVsdCBhdWRpbyBkZXZpY2UuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbik6IFNpbXBsZSBk
ZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSk6IFN0
dWIsIHVuaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmNhdGVnb3J5
T3ZlcnJpZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0
ZWdvcnlPdmVycmlkZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb246OnNldEFjdGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlKTogVXNlIHRoZSBIQUwgdG8gcmV0dXJuIHRoZSBkZWZhdWx0IGF1ZGlvIGRl
dmljZSBzYW1wbGUgcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6cHJlZmVy
cmVkQnVmZmVyU2l6ZSk6IFJldHVybiB0aGUgY3VycmVudCBIQUwgc2V0dGluZy4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6IFNldCB0aGUg
YnVmZmVyIHNpemUuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwOgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lv
blN0YXRlKTogU2V0IHRoZSBidWZmZXIgc2l6ZSBkZXBlbmRpbmcgb24gd2hhdCBhdWRpbyBvdXRw
dXRzIGFyZSBwcmVzZW50LgorCisgICAgICAgIEFkZCB0aGUgbmV3IGZpbGVzIHRvIHRoZSBwcm9q
ZWN0LjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IAorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKwogMjAxMy0wNS0xNiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVu
Y2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgQWRkIHN0dWJzIGZvciBDb250ZXh0TWVudSBh
bmQgQ29udGV4dE1lbnVJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IDk2NGZjNjM3MTk3NGRhYzljMGIzOWJiYjllMTgzNGMyODViOGRmNTAu
LmY3YTVhMDlkN2NhMTUyY2RhNGQ2OThjNDlkYmY4MjVlYWRjY2ViOWEgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTI5MCw2ICsyOTI5MCwy
NiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cV2lkZ2V0LmgiCiAJCQkJPgogCQkJ
PC9GaWxlPgorICAgICAgICAgICAgPEZpbHRlcgorICAgICAgICAgICAgICAgIE5hbWU9ImF1ZGlv
IgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAg
ICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbi5jcHAi
CisgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxhdWRpb1xBdWRpb1Nlc3Npb24uaCIKKyAgICAgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAg
ICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvU2Vzc2lvbk1hbmFnZXIu
Y3BwIgorICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgPC9GaWxlPgorICAg
ICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cYXVkaW9cQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorICAgICAgICAgICAgICAgICAg
ICA+CisgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPC9GaWx0ZXI+CiAJCQk8
RmlsdGVyCiAJCQkJTmFtZT0id2luIgogCQkJCT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNDYzYmU5N2NiMjRhYjBjYTAxZjdi
NDg0MWFkY2Y4ODg3ODEyNDAyLi42MDlhZjE0MDFmMjBhOTc0ZDFjZTI1ZDFkYTc0YzhjMDI0NDRh
ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC01MjEyLDYgKzUyMTIsOCBAQAogCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTgg
LyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGlj
TG9nZ2luZ0tleXMuY3BwICovOyB9OwogCQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzggLyogQ0RN
UHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZDQzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3Vu
ZGF0aW9uLm1tICovOyB9OwogCQlDRDRBQzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9zaXRl
LndhdiBpbiBDb3B5IEF1ZGlvIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDRBQzUyODE0OTZBRTJGMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLzsgfTsK
KwkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDUx
NzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9OworCQlD
RDU0REU0QjE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVF
NUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovOyB9OwogCQlDRDdFMDUyMjE2NTFDMjgyMDBD
MTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1
NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMwNzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlci5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVdu
by11bmRlZiAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKQEAgLTUyMzIsNiAr
NTIzNCw3IEBACiAJCUNEQTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQ0ExNjAx
NTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgKi87IH07CiAJCUNEQTk4RTBFMTYwM0ZFNTgw
MEZFQTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5
U2Vzc2lvbi5jcHAgKi87IH07CiAJCUNEQUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9y
bUNsb2NrQ00ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREFBOEQwODE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9Owor
CQlDREFFOEMwOTE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZC
OTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAgKi87IH07CiAJCUNEQjg1OUY3
MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBN
ZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpT
TWVkaWFLZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREI4NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAq
LzsgfTsKIAkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAw
MjY3NTdCIC8qIE1vY2tDRE0uY3BwICovOyB9OwpAQCAtMTE5NjYsNiArMTE5NjksOCBAQAogCQlD
RDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IENETVByaXZhdGVBVkZvdW5kYXRp
b24ubW07IHBhdGggPSBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENEFDNTI4MTQ5NkFFMkYwMDg3
QzRFRiAvKiBDb21wb3NpdGUud2F2ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gYXVkaW8ud2F2OyBuYW1lID0gQ29tcG9zaXRlLndhdjsgcGF0aCA9IHBs
YXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9Db21wb3NpdGUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNENTRERTQ1MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25N
YW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlv
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDU0
REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEN0UwNTIwMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lmg7IHBhdGggPSBvYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tOyBwYXRoID0gb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyMDA1LDYgKzEyMDEwLDggQEAKIAkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0Ix
IC8qIENETVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNUHJp
dmF0ZS5oOyBwYXRoID0gTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0
Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1D
bG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAw
MDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQUU4QzA3MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFFOEMwODE3NDZCOTU3MDA1
MzJENzggLyogQXVkaW9TZXNzaW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBdWRpb1Nlc3Npb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzc1LDYgKzIwNzgyLDgg
QEAKIAkJCQlDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggKi8sCiAJ
CQkJQ0RBNzk4MjMxNzBBMjU4MzAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgKi8sCiAJCQkJ
Q0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCisJ
CQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMyRDc4IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICov
LAorCQkJCUNEQUU4QzA4MTc0NkI5NTcwMDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmgg
Ki8sCiAJCQkJRkQzMTYwNTMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIu
aCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRl
ckNsaWVudC5oICovLAogCQkJCUZEMzE2MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxp
dGllcy5jcHAgKi8sCkBAIC0yMDg0MSw2ICsyMDg1MCw4IEBACiAJCQkJRkQzMTYwQjgxMkIwMjcy
QTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjkxMkIw
MjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oICovLAogCQkJCUZEMzE2MEJBMTJC
MDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFtZU1hYy5jcHAgKi8sCisJCQkJQ0Q1NERFNDUxNzQ2OEI2
RjAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAorCQkJCUNENTRERTQ5
MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwICovLAogCQkJKTsKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUwNDMsNiArMjUwNTQs
NyBAQAogCQkJCTg0NzMwRDdDMTI0OEYwQjMwMEQzQTlDOSAvKiBGRURpc3BsYWNlbWVudE1hcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzU4RTg4MDEzNjBBMzE3MDBFNDc0OEMgLyogRkVEcm9w
U2hhZG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDdFMTI0OEYwQjMwMEQzQTlDOSAv
KiBGRUZsb29kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENTRERTRCMTc0NjlDNkQwMDVFNUIz
NiAvKiBBdWRpb1Nlc3Npb25NYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4MDE5NTQxMDhC
QUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3NpYW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0
NzMwRDgwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg0NzMwRDgyMTI0OEYwQjMwMEQzQTlDOSAvKiBGRU1lcmdlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjYzNzUsNiArMjYzODcsNyBAQAogCQkJCTkzMzA5RTA5MDk5RTY0OTIwMDU2RTU4MSAv
KiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RD
RjEyNTFGMTJEMDAzRUYyNjkgLyogUmVzZXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNENTRERTQ3MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYW5h
Z2VyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEJDODNGMTYxQ0YwNEEwMDRENTJGNCAv
KiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzNEY3MTNFMEQ1QTZGMjgw
MDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2
ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjY4MTcsNiArMjY4MzAsNyBAQAogCQkJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAv
KiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTRBMEQwMDZDMUQwMEVGNkYy
NiAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgw
MDI2QTJERCAvKiBUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBRThDMDkxNzQ2
Qjk1NzAwNTMyRDc4IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc1OUU5NDIxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwNzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4
dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IDk3NDc0OTExZmI5NGMzNjliZGUyM2MyMThlYzZiZTVjNDY4
ZDUzNDkuLjlhZDkyYjViOTZkYWY1ZTY0NjEyM2E1MDdmODQ0NWVlMDU3NDM0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3QuaCIKQEAgLTE4Myw2ICsxODQsOCBAQCBzdGF0aWMg
Y29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKIHN0YXRpYyBjb25zdCBjaGFyKiBtZWRp
YVNvdXJjZUJsb2JQcm90b2NvbCA9ICJibG9iIjsKICNlbmRpZgogCitzdGF0aWMgY29uc3Qgc2l6
ZV90IGtQcmVmZXJyZWRMb3dQb3dlckJ1ZmZlclNpemUgPSA0MDk4OworCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMzE2LDYgKzMxOSw3IEBA
IEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICAsIG1f
YXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKKyAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRv
a2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKHRhZ05hbWUgPT0gdmlkZW9UYWcg
PyBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpWaWRlbyA6IEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
KSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
Iik7CiAgICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDMwZGMxMjQ1NzM5MmNj
Y2EzODBiZjk0NGVmNjA4Mjk3NDE1ZTUwOTkuLjI0YjMwZjYzZDQzOWQyZTM1NjdlYTI4MjE0MmQ0
YTlmNzk4ZDhhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00
OSw2ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXVkaW9TZXNzaW9u
TWFuYWdlclRva2VuOwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiBjbGFzcyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOwogY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOwpAQCAtNzY1LDYgKzc2
Niw4IEBAIHByaXZhdGU6CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICBS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKICNl
bmRpZgorCisgICAgT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbj4gbV9hdWRpb1Nlc3Np
b25NYW5hZ2VyVG9rZW47CiB9OwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggY2RmODMzNzIz
N2ZiMDc5OTM5NmNmYmEyNGVhODk0MzVkZWFjNWZmNi4uMGNiMTNhZjkzNGI1NjA0Njg0NDFlM2Y3
NWIwZjgxZjU1Mjk5ZGNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjplbmRl
ZEF1ZGlvSW50ZXJydXB0aW9uKCkKICAgICAgICAgKCppKS0+ZW5kZWRBdWRpb0ludGVycnVwdGlv
bigpOwogfQogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExB
VEZPUk0oTUFDKQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9OwogCkBAIC0xMTIsMTMg
KzExMiwxMyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotZmxvYXQgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJEdXJh
dGlvbigpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCi12b2lk
IEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24oZmxvYXQpCit2b2lkIEF1
ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmgKaW5kZXggN2MyMDJlYjZiMTA1ZjdjNGQ4NDQwZGM5ZTQ1Mzc4NmY4NmI0ZjAzMC4uZjU5
ODNkZDQ5Nzg3MjdlZmE1MWFjNDJlMDJlOWIyNWIzNjczYjIzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTYyLDggKzYyLDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAKLSAgICBmbG9hdCBwcmVmZXJyZWRCdWZm
ZXJEdXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyRHVyYXRpb24o
ZmxvYXQgc2Vjb25kcyk7CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdDsK
KyAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKIAogICAgIHZvaWQgYmVn
YW5BdWRpb0ludGVycnVwdGlvbigpOwogICAgIHZvaWQgZW5kZWRBdWRpb0ludGVycnVwdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25N
YW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2IyZmIxYmI5YWMxOGEyYzMyOTZjMjJiNTMzYTU4ZmU5
YmI0MzRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNzT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbj4gQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoQXVkaW9TZXNzaW9uTWFuYWdl
cjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb1Nlc3Np
b25NYW5hZ2VyVG9rZW4odHlwZSkpOworfQorCitBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OkF1
ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlw
ZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5pbmNyZW1lbnRDb3VudCh0eXBlKTsKK30KKworQXVkaW9TZXNzaW9uTWFuYWdl
clRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK3sKKyAgICBBdWRpb1Nlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGVjcmVtZW50Q291bnQobV90eXBlKTsKK30KKworQXVk
aW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb1Nlc3Npb25NYW5hZ2VyLCBtYW5hZ2VyLCAo
KSk7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0F1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
U2Vzc2lvbk1hbmFnZXIoKQoreworfQorCitib29sIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmhhcyhB
dWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA+
PSAwKTsKKyAgICByZXR1cm4gbV90eXBlQ291bnQuY29udGFpbnModHlwZSk7Cit9CisKK3ZvaWQg
QXVkaW9TZXNzaW9uTWFuYWdlcjo6aW5jcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6
QXVkaW9UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPj0gMCk7CisgICAgbV90eXBlQ291
bnQuYWRkKHR5cGUpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworfQorCit2b2lkIEF1ZGlv
U2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVudENvdW50KEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
VHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAgIG1fdHlwZUNvdW50LnJl
bW92ZSh0eXBlKTsKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKworI2lmICFQTEFURk9S
TShNQUMpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCit7
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OThlMTE5Y2NiYTkzOGNmZDlmNjkxNDc0MDdm
YThhNTQ3MTliNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaAorI2RlZmluZSBBdWRpb1Nlc3Npb25NYW5h
Z2VyX2gKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGlj
IEF1ZGlvU2Vzc2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKKworICAgIGVudW0gQXVkaW9U
eXBlIHsKKyAgICAgICAgTm9uZSwKKyAgICAgICAgVmlkZW8sCisgICAgICAgIEF1ZGlvLAorICAg
ICAgICBXZWJBdWRpbywKKyAgICB9OworCisgICAgYm9vbCBoYXMoQXVkaW9UeXBlKTsKKworcHJv
dGVjdGVkOgorICAgIGZyaWVuZCBjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisgICAg
dm9pZCBpbmNyZW1lbnRDb3VudChBdWRpb1R5cGUpOworICAgIHZvaWQgZGVjcmVtZW50Q291bnQo
QXVkaW9UeXBlKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXVkaW9TZXNzaW9uTWFuYWdlcigpOwor
CisgICAgdm9pZCB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKworICAgIEhhc2hDb3VudGVkU2V0PHNp
emVfdD4gbV90eXBlQ291bnQ7Cit9OworCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tl
bj4gY3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSk7CisgICAgfkF1ZGlvU2Vz
c2lvbk1hbmFnZXJUb2tlbigpOworCitwcml2YXRlOgorICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbihBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUpOworCisgICAgQXVkaW9TZXNzaW9u
TWFuYWdlcjo6QXVkaW9UeXBlIG1fdHlwZTsKK307Cit9CisKKyNlbmRpZiAvLyBBdWRpb1Nlc3Np
b25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCAzNGIyODhjMjJhMTZiNzVmZGIzOTRl
ZWJiYTY2ZjJlZGNlOTVlZTAwLi45NWU4YTQ1ZDU0ZmRhMGZjMGE0ZTEzZDcyNGJjYWFkZmUzNDhk
MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBBdWRpb0Rl
c3RpbmF0aW9uSU9TOjpjb25maWd1cmUoKQogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlv
VW5pdFNjb3BlX0lucHV0LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbikpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAotICAgIEF1ZGlv
U2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoa1ByZWZlcnJlZEJ1ZmZlclNpemUgLyBtX3NhbXBsZVJhdGUpKTsK
KyAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KGtQcmVmZXJyZWRCdWZmZXJTaXplKTsKIH0KIAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpz
dGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbQppbmRleCA5ZmE4ZTNiZWQxYmFjNzQ5YmM3MTg2ZDA5YjI0NjhkMTUwYjMz
OTBiLi5jMDM2ODYwM2U3NGQwNGU4NjRjZTg2N2E1MTgxYTgxMTJhOWM4NjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0K
QEAgLTIwMSwxNCArMjAxLDE1IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAgICAgQVNTRVJUKCFlcnJvcik7CiB9CiAKLWZsb2F0IEF1ZGlvU2Vzc2lvbjo6cHJl
ZmVycmVkQnVmZmVyRHVyYXRpb24oKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVy
cmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtbQVZBdWRpb1Nlc3Npb24gc2hh
cmVkSW5zdGFuY2VdIHByZWZlcnJlZElPQnVmZmVyRHVyYXRpb25dOworICAgIHJldHVybiBbW0FW
QXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAq
IHNhbXBsZVJhdGUoKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZl
ckR1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9pZCBBdWRpb1Nlc3Npb246OnNldFByZWZlcnJl
ZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CisgICAgZmxvYXQgZHVyYXRpb24gPSBidWZmZXJTaXplIC8gc2FtcGxlUmF0ZSgpOwogICAg
IFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldFByZWZlcnJlZElPQnVmZmVyRHVy
YXRpb246ZHVyYXRpb24gZXJyb3I6JmVycm9yXTsKICAgICBBU1NFUlQoIWVycm9yKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcAppbmRleCBhMWE1NGMzODMyZjI2YmY4NGM0MjhkYmQwMmNlOGRhMDk0ZjE2
Yjk1Li5hZTRiMzNiZTg2NDVlZGI1NmQ2ZDc1ODBmM2VlMWRiODA1ZDRlOWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oIgogCiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNz
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCkBAIC02MywyMyArNjQsNyBAQCBQYXNz
T3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smIGNhbGxiYWNrLAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1w
bGVSYXRlKCkKIHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3V0cHV0IGRldmljZSdz
IHNhbXBsZS1yYXRlLgotICAgIEF1ZGlvRGV2aWNlSUQgZGV2aWNlSUQgPSBrQXVkaW9EZXZpY2VV
bmtub3duOwotICAgIFVJbnQzMiBpbmZvU2l6ZSA9IHNpemVvZihkZXZpY2VJRCk7Ci0KLSAgICBB
dWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcyA9IHsg
a0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURlZmF1bHRPdXRwdXREZXZpY2UsIGtBdWRpb09iamVjdFBy
b3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owot
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09i
amVjdFN5c3RlbU9iamVjdCwgJmRlZmF1bHRPdXRwdXREZXZpY2VBZGRyZXNzLCAwLCAwLCAmaW5m
b1NpemUsICh2b2lkKikmZGV2aWNlSUQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVy
biAwOyAvLyBlcnJvcgotCi0gICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKLSAgICBpbmZv
U2l6ZSA9IHNpemVvZihGbG9hdDY0KTsKLQotICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNz
IG5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlOb21pbmFs
U2FtcGxlUmF0ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0
UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgcmVzdWx0ID0gQXVkaW9PYmplY3RHZXRQcm9w
ZXJ0eURhdGEoZGV2aWNlSUQsICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIDAsIDAsICZpbmZv
U2l6ZSwgKHZvaWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuIDA7IC8vIGVycm9yCi0KLSAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChub21pbmFsU2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vz
c2lvbigpLnNhbXBsZVJhdGUoKTsKIH0KIAogdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9u
OjptYXhDaGFubmVsQ291bnQoKQpAQCAtOTcsNiArODIsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFj
OjpBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNh
bXBsZQogICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwg
ZmFsc2UpKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWlu
ZyhmYWxzZSkKKyAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1h
bmFnZXJUb2tlbjo6Y3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OldlYkF1ZGlvKSkKIHsKICAg
ICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21w
b25lbnQgY29tcDsKQEAgLTE0OCwxMSArMTM0LDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTWFj
Ojpjb25maWd1cmUoKQogCiAgICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRw
dXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlfU3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVf
SW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9ybWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uKSk7CiAgICAgQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgLy8gU2V0IHRoZSBidWZm
ZXIgZnJhbWUgc2l6ZS4KLSAgICBVSW50MzIgYnVmZmVyU2l6ZSA9IGtCdWZmZXJTaXplOwotICAg
IHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvRGV2aWNl
UHJvcGVydHlCdWZmZXJGcmFtZVNpemUsIGtBdWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lk
KikmYnVmZmVyU2l6ZSwgc2l6ZW9mKGJ1ZmZlclNpemUpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7
CiB9CiAKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbk1hYzo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKaW5k
ZXggMDYyYzk2OWU2OWY2OWQyOGJiNThlY2JkYzFhNmUxZjVlM2RjYjVjOS4uOWRjMzllMTZmMjA5
YmRjNGZhMjQxOTdkNmQwNzMxYTdiNmNmNWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCkBAIC0zMiwxMCAr
MzIsMTMgQEAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRp
b24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisKIC8vIEFuIEF1ZGlvRGVzdGluYXRp
b24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKIGNsYXNzIEF1
ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CkBAIC02Myw2ICs2
Niw4IEBAIHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgYm9vbCBtX2lz
UGxheWluZzsKKworICAgIE93blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IG1fYXVkaW9T
ZXNzaW9uTWFuYWdlclRva2VuOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NWI0ODFjYTJhMGRhOTc5YmE2MjgxY2U1NWYzOGRmNTg4ZWFjNzZkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKKyNpZiBQTEFURk9STShNQUMp
CisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQXVkaW9IYXJk
d2FyZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBBdWRpb0RldmljZUlEIGRl
ZmF1bHREZXZpY2UoKQoreworICAgIEF1ZGlvRGV2aWNlSUQgZGV2aWNlSUQgPSBrQXVkaW9EZXZp
Y2VVbmtub3duOworICAgIFVJbnQzMiBpbmZvU2l6ZSA9IHNpemVvZihkZXZpY2VJRCk7CisKKyAg
ICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcyA9
IHsKKyAgICAgICAga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURlZmF1bHRPdXRwdXREZXZpY2UsCisg
ICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsCisgICAgICAgIGtBdWRpb09i
amVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlv
T2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmRlZmF1bHRP
dXRwdXREZXZpY2VBZGRyZXNzLCAwLCAwLCAmaW5mb1NpemUsICh2b2lkKikmZGV2aWNlSUQpOwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiAwOyAvLyBlcnJvcgorICAgIHJldHVybiBk
ZXZpY2VJRDsKK30KKworY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CitwdWJsaWM6ICAgIAor
fTsKKworQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQorICAgIDogbV9wcml2YXRlKGFkb3B0
UHRyKG5ldyBBdWRpb1Nlc3Npb25Qcml2YXRlKCkpKQoreworfQorCitBdWRpb1Nlc3Npb246On5B
dWRpb1Nlc3Npb24oKQoreworfQorCitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nl
c3Npb246OmNhdGVnb3J5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBOb25lOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlU
eXBlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0F1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTm9uZTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Zsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0Cit7CisgICAg
RmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKKyAgICBVSW50MzIgbm9taW5hbFNhbXBsZVJhdGVT
aXplID0gc2l6ZW9mKEZsb2F0NjQpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
bm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzID0geworICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0
eU5vbWluYWxTYW1wbGVSYXRlLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xv
YmFsLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBP
U1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNl
KCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIDAsIDAsICZub21pbmFsU2FtcGxlUmF0ZVNp
emUsICh2b2lkKikmbm9taW5hbFNhbXBsZVJhdGUpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNh
bXBsZVJhdGUpOworfQorCitzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
Cit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNv
bnN0Cit7CisgICAgVUludDMyIGJ1ZmZlclNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemVTaXpl
ID0gc2l6ZW9mKGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
cHJlZmVycmVkQnVmZmVyU2l6ZUFkZHJlc3MgPSB7CisgICAgICAgIGtBdWRpb0RldmljZVByb3Bl
cnR5QnVmZmVyRnJhbWVTaXplUmFuZ2UsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2Nv
cGVHbG9iYWwsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRlZmF1bHRE
ZXZpY2UoKSwgJnByZWZlcnJlZEJ1ZmZlclNpemVBZGRyZXNzLCAwLCAwLCAmYnVmZmVyU2l6ZVNp
emUsICZidWZmZXJTaXplKTsKKworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBidWZmZXJTaXplOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBBdWRpb1ZhbHVlUmFuZ2Ug
YnVmZmVyU2l6ZVJhbmdlID0gezAsIDB9OworICAgIFVJbnQzMiBidWZmZXJTaXplUmFuZ2VTaXpl
ID0gc2l6ZW9mKEF1ZGlvVmFsdWVSYW5nZSk7CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYnVmZmVyU2l6ZVJhbmdlQWRkcmVzcyA9IHsKKyAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVy
dHlCdWZmZXJGcmFtZVNpemVSYW5nZSwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29w
ZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyCisgICAg
fTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZWZh
dWx0RGV2aWNlKCksICZidWZmZXJTaXplUmFuZ2VBZGRyZXNzLCAwLCAwLCAmYnVmZmVyU2l6ZVJh
bmdlU2l6ZSwgJmJ1ZmZlclNpemVSYW5nZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2l6ZV90IG1pbkJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1
ZmZlclNpemVSYW5nZS5tTWluaW11bSk7CisgICAgc2l6ZV90IG1heEJ1ZmZlclNpemUgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlclNpemVSYW5nZS5tTWF4aW11bSk7CisgICAgVUludDMyIGJ1
ZmZlclNpemVPdXQgPSBzdGQ6Om1pbihtYXhCdWZmZXJTaXplLCBzdGQ6Om1heChtaW5CdWZmZXJT
aXplLCBidWZmZXJTaXplKSk7CisKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcmVm
ZXJyZWRCdWZmZXJTaXplQWRkcmVzcyA9IHsKKyAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVydHlC
dWZmZXJGcmFtZVNpemUsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWws
CisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworCisgICAgcmVz
dWx0ID0gQXVkaW9PYmplY3RTZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmcHJlZmVy
cmVkQnVmZmVyU2l6ZUFkZHJlc3MsIDAsIDAsIHNpemVvZihidWZmZXJTaXplT3V0KSwgKHZvaWQq
KSZidWZmZXJTaXplT3V0KTsKKworI2lmIExPR19ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOworI2Vsc2UKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBMT0coTWVkaWEsICJBdWRp
b1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSAtIGZhaWxlZCB3aXRoIGVycm9y
ICVkIiwgYnVmZmVyU2l6ZSwgcmVzdWx0KTsKKyAgICBlbHNlCisgICAgICAgIExPRyhNZWRpYSwg
IkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVmZmVyU2l6ZSk7
CisjZW5kaWYKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMzkxYjcwMGUxNmM4ODg3YzJjZjBhNmNjNmUzZGQ3ZmY0OTFjZTljCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworI2lmIFBMQVRGT1JNKE1BQykK
Kworc3RhdGljIGNvbnN0IHNpemVfdCBrV2ViQXVkaW9CdWZmZXJTaXplID0gMTI4Oworc3RhdGlj
IGNvbnN0IHNpemVfdCBrTG93UG93ZXJWaWRlb0J1ZmZlclNpemUgPSA0MDk4OworCit2b2lkIEF1
ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCit7CisgICAgTE9HKE1lZGlh
LCAiQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlk
ZW8oJWQpLCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIG1fdHlwZUNvdW50LmNvdW50KFZpZGVv
KSwgbV90eXBlQ291bnQuY291bnQoQXVkaW8pLCBtX3R5cGVDb3VudC5jb3VudChXZWJBdWRpbykp
OworCisgICAgaWYgKGhhcyhXZWJBdWRpbykpCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVk
U2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1dlYkF1ZGlvQnVmZmVyU2l6ZSk7Cisg
ICAgZWxzZSBpZiAoaGFzKFZpZGVvKSB8fCBoYXMoQXVkaW8pKQorICAgICAgICBBdWRpb1Nlc3Np
b246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtMb3dQb3dlclZpZGVv
QnVmZmVyU2l6ZSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202258</attachid>
            <date>2013-05-19 22:39:17 -0700</date>
            <delta_ts>2013-05-19 22:57:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116342-20130519223813.patch</filename>
            <type>text/plain</type>
            <size>42980</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5ZTdlZTZjNjM2NTRiM2U4ODQ4NjRk
ZTJiOTcxYzQ2ODQ2OWVmMDQuLmRkMDA1OTM4YmRmYjM1NjkwZGQ1NjdlMjkxNDhhZDM0NzdhYzYw
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDUtMTkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjOiBTZXQgdGhlIGRlZmF1bHQgYXVkaW8gYnVmZmVy
IHNpemUgdG8gYSBsYXJnZSB2YWx1ZSBmb3IgPHZpZGVvPiBlbGVtZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFk
ZCBhIFdURl9VU0VfQVVESU9fU0VTU0lPTiBzZXR0aW5nLgorCiAyMDEzLTA1LTE2ICBCZW5qYW1p
biBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aGUgc3ltYm9s
IFdURkludm9rZUNyYXNoSG9vayBiYWNrIGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyZjBhYzQ5M2FiMWQxNzUxN2U3NGMxNzVhMmU1NTQyOTY2ZjA5Y2JjLi44ZDdhNDM2
ZTBiM2RkNmQ4NmViM2Y2NWVmYzUyYTkxODcxNzM1OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzYgQEAKKzIwMTMtMDUtMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFjOiBTZXQgdGhlIGRlZmF1bHQgYXVkaW8gYnVmZmVyIHNpemUgdG8gYSBsYXJnZSB2
YWx1ZSBmb3IgPHZpZGVvPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNjM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRvIGVuYWJsZSBwb3dlciBzYXZpbmdzIGJ5IHdha2luZyB1cCB0
aGUgYXVkaW8gaGFyZHdhcmUgbGVzcyBvZnRlbiwgc2V0IHRoZQorICAgICAgICByZXF1ZXN0ZWQg
YnVmZmVyIGZyYW1lIHNpemUgdG8gYSBsYXJnZSB2YWx1ZSwgc3VjaCBhcyA0MDk2LiBTaW5jZSB0
aGlzIHJlc3VsdHMKKyAgICAgICAgaW4gYXBwcm94aW1hdGVseSAxMDBtcyB3b3J0aCBvZiBidWZm
ZXIsIHNldCB0aGUgYnVmZmVyIHNpemUgdG8gYSBtdWNoIGxvd2VyCisgICAgICAgIHZhbHVlIHdo
ZW4gcGxheWluZyBXZWJBdWRpbywgd2hpY2ggaXMgbXVjaCBtb3JlIHNlbnNpdGl2ZSB0byBsYXRl
bmN5IHRoYW4gdmlkZW8KKyAgICAgICAgb3IgYXVkaW8gZWxlbWVudHMuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IGNsYXNzLCBBdWRpb1Nlc3Npb25NYW5hZ2VyLCBhcyB3ZWxsIGFzIGEgaGVs
cGVyIGNsYXNzLAorICAgICAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4uIEF1ZGlvIGVsZW1l
bnRzLCB2aWRlbyBlbGVtZW50cywgYW5kIFdlYkF1ZGlvIGRlc3RpbmF0aW9uCisgICAgICAgIG5v
ZGVzIHdpbGwgY3JlYXRlIGFuZCByZXRhaW4gYSB0b2tlbiwgYW5kIHJlbGVhc2UgdGhlIHRva2Vu
IGluIHRoZWlyIGRlc3RydWN0b3IuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBBdWRpb1Nlc3Np
b25NYW5hZ2VyIHRvIHRyYWNrIGhvdyBtYW55IG9mIHdoYXQgdHlwZSBvZiBhdWRpby0KKyAgICAg
ICAgZ2VuZXJhdGluZyBvYmplY3RzIGFyZSBpbiBleGlzdGVuY2UuCisKKyAgICAgICAgVGhpcyBy
ZXF1aXJlcyBpbXBsZW1lbnRpbmcgQXVkaW9TZXNzaW9uIGZvciBNYWMgcGxhdGZvcm1zLiBNb3Zl
IHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmb3IgcmV0cmlldmluZyB0aGUgaGFyZHdhcmUg
c2FtcGxlIHJhdGUgYW5kIHNldHRpbmcgdGhlIGJ1ZmZlciBkdXJhdGlvbiBpbnRvCisgICAgICAg
IEF1ZGlvU2Vzc2lvbk1hYyBmcm9tIEF1ZGlvRGVzdGluYXRpb25NYWMsIHRvIGJlIHNoYXJlZCB3
aXRoIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBBdWRpb1Nl
c3Npb24gbWV0aG9kIHByZWZlcnJlZEJ1ZmZlckxlbmd0aCgpIGludG8gcHJlZmVycmVkQnVmZmVy
U2l6ZSgpLAorICAgICAgICBhcyB0aGUgY2FsbGVycyByZWFsbHkgd2FudCB0byBzcGVjaWZ5IGEg
YnVmZmVyIHNpemUsIG5vdCBhIGJ1ZmZlciBkdXJhdGlvbi4gT24gaU9TLAorICAgICAgICB3aGVy
ZSB0aGUgYXZhaWxhYmxlIEFQSSByZXF1aXJlcyBhIGR1cmF0aW9uLCBwZXJmb3JtIHRoZSBjb252
ZXJzaW9uIGZyb20gZHVyYXRpb24gdG8KKyAgICAgICAgc2l6ZSBvbiBiZWhhbGYgb2YgdGhlIGNh
bGxlci4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiAgQWRkIGEgQXVkaW9T
ZXNzaW9uTWFuYWdlclRva2VuIG1lbWJlci4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudCk6IEluaXRpYWxpemUgdGhlIHRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJl
ZEJ1ZmZlclNpemUpOiBSZW5hbWVkIGZyb20gcHJlZmVycmVkQnVmZmVyTGVuZ3RoLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1l
ZCBmcm9tIHNldFByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKTog
U2ltcGxlIGZhY3RvcnkgbWV0aG9kLgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlclRva2Vu
OjpBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4pOiBDYWxsIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6Omlu
Y3JlbWVudENvdW50KCkuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46On5BdWRp
b1Nlc3Npb25NYW5hZ2VyVG9rZW4pOiBDYWxsIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVu
dENvdW50KCkuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKTog
U2ltcGxlIHNpbmdsZXRvbiBtZXRob2QuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpB
dWRpb1Nlc3Npb25NYW5hZ2VyKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6aGFzKTogUmV0dXJuIHdoZXRoZXIgdGhlIHR5cGUgaXMgcHJlc2VudC4K
KyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmluY3JlbWVudENvdW50KTogSW5jcmVtZW50
LCB0aGVuIGNhbGwgdXBkYXRlU2Vzc2lvblN0YXRlKCkKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1h
bmFnZXI6OmRlY3JlbWVudENvdW50KTogRGVjcmVtZW50LCB0aGVuIGNhbGwgdXBkYXRlU2Vzc2lv
blN0YXRlKCkKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0
ZSk6IFN0dWIsIGRvZXMgbm90aGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nl
c3Npb25NYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6Y29u
ZmlndXJlKTogQ2FsbCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCkgaW5zdGVhZCBvZiBzZXRQcmVm
ZXJyZWRCdWZmZXJMZW5ndGgoKQorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1
ZmZlclNpemUpOiBSZW5hbWVkIGZyb20gcHJlZmVycmVkQnVmZmVyTGVuZ3RoLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBm
cm9tIHNldFByZWZlcnJlZEJ1ZmZlckxlbmd0aAorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSk6IENhbGwgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRl
KCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0
aW9uTWFjKTogQ3JlYXRlIHRoZSBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4uCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpjb25maWd1cmUpOiBEbyBub3Qgc2V0IHRoZSBi
dWZmZXIgc2l6ZSAodGhpcyBpcyBkb25lIGluIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMpLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZSk6IEFkZGVkLCByZXR1cm5zIHRoZSBkZWZhdWx0IGF1
ZGlvIGRldmljZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+
QXVkaW9TZXNzaW9uKTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5KTogU3R1YiwgdW5pbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeU92ZXJyaWRlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUpOiBVc2UgdGhlIEhBTCB0byByZXR1
cm4gdGhlIGRlZmF1bHQgYXVkaW8gZGV2aWNlIHNhbXBsZSByYXRlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmV0dXJuIHRoZSBjdXJyZW50
IEhBTCBzZXR0aW5nLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKTogU2V0IHRoZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChBdWRpb1Nlc3Np
b25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBTZXQgdGhlIGJ1ZmZlciBzaXplIGRlcGVu
ZGluZyBvbiB3aGF0IGF1ZGlvIG91dHB1dHMgYXJlIHByZXNlbnQuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBmaWxlcyB0byB0aGUgcHJv
amVjdC4KKwogMjAxMy0wNS0xNiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVu
Y2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgQWRkIHN0dWJzIGZvciBDb250ZXh0TWVudSBh
bmQgQ29udGV4dE1lbnVJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA3MjQ3NzgzNDUwMjc3NWM3MjUzOGY5
ODA5Mjc1ODhiZTA4YmQ1YzkzLi43MTBmZTM4MWRlYjRkNGYxMjIyM2MwN2U0YjlmY2I5MDBmOTlh
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwMTgsNCArMTAxOCw4IEBACiAjZGVmaW5lIFdURl9VU0Vf
TUFSS0VSX1JFTU9WQUxfVVBPTl9FRElUSU5HIDEKICNlbmRpZiAvKiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzApICovCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNkZWZpbmUg
V1RGX1VTRV9BVURJT19TRVNTSU9OIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3Jt
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzNDYzYmU5N2NiMjRhYjBjYTAxZjdiNDg0MWFkY2Y4ODg3ODEyNDAyLi42MDlh
ZjE0MDFmMjBhOTc0ZDFjZTI1ZDFkYTc0YzhjMDI0NDRhZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjEyLDYgKzUyMTIs
OCBAQAogCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdC
Mzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9Owog
CQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZD
QzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRB
QzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJG
MDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLzsgfTsKKwkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1
QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlv
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9OworCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYg
LyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMu
Y3BwICovOyB9OwogCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bSAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMw
NzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsg
c2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiAtV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIjsgfTsgfTsKQEAgLTUyMzIsNiArNTIzNCw3IEBACiAJCUNEQTk4RTBEMTYw
M0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5
cy5jcHAgKi87IH07CiAJCUNEQTk4RTBFMTYwM0ZFNTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
OThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgKi87IH07CiAJCUNE
QUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQwODE0RDM4NTYwMDA2MUVB
NjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OworCQlDREFFOEMwOTE3NDZCOTU3MDA1MzJE
NzggLyogQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNz
aW9uTWFuYWdlci5jcHAgKi87IH07CiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRp
YUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsK
IAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGODE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RDMjZCNDAxNjBBOEND
NjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwICov
OyB9OwpAQCAtMTE5NjYsNiArMTE5NjksOCBAQAogCQlDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzgg
LyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IENETVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHBhdGggPSBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2
OyBuYW1lID0gQ29tcG9zaXRlLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9D
b21wb3NpdGUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNENEUwQUZBMTFG
N0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRo
ID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTRERTQ1
MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyog
QXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEN0Uw
NTIwMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg7IHBhdGggPSBvYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUy
MTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOyBwYXRoID0gb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDA1LDYgKzEyMDEw
LDggQEAKIAkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIENETVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNUHJpdmF0ZS5oOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2Nr
Q00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNs
b2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA3MTc0NkI5NTcw
MDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1
QjA3RiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMx
NjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4
NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwNzc1LDYgKzIwNzgyLDggQEAKIAkJCQlDREE3OTgyMTE3MEEyMkRD
MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggKi8sCiAJCQkJQ0RBNzk4MjMxNzBBMjU4MzAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgKi8sCiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCisJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMy
RDc4IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcw
MDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5
OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2
MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yMDg0MSw2
ICsyMDg1MCw4IEBACiAJCQkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJl
YWRlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmls
ZVJlYWRlck1hYy5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCisJCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwICovLAorCQkJCUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRp
b1Nlc3Npb25NYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjUwNDMsNiArMjUwNTQsNyBAQAogCQkJCTg0NzMwRDdDMTI0OEYw
QjMwMEQzQTlDOSAvKiBGRURpc3BsYWNlbWVudE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MzU4RTg4MDEzNjBBMzE3MDBFNDc0OEMgLyogRkVEcm9wU2hhZG93LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0NzMwRDdFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRUZsb29kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENTRERTRCMTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4MDE5NTQxMDhCQUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3Np
YW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDgwMTI0OEYwQjMwMEQzQTlDOSAv
KiBGRUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDgyMTI0OEYwQjMwMEQz
QTlDOSAvKiBGRU1lcmdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYzNzUsNiArMjYzODcsNyBA
QAogCQkJCTkzMzA5RTA5MDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVz
ZXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1
MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENTRERTQ3MTc0
NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNEJDODNGMTYxQ0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9y
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY4MTcsNiArMjY4MzAsNyBA
QAogCQkJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTRBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIEF1ZGlvU2Vz
c2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNGODAwMjZB
MkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZC
QzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDk3
NDc0OTExZmI5NGMzNjliZGUyM2MyMThlYzZiZTVjNDY4ZDUzNDkuLmJhZTVmY2ZmYTM1NGJhNGUw
YTViNjI0ZjE2N2FkNDYxOTE2ZDA5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAi
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNsaWVudFJl
Y3QuaCIKQEAgLTE4Myw2ICsxODQsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhi
b29sIHZhbCkKIHN0YXRpYyBjb25zdCBjaGFyKiBtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCA9ICJi
bG9iIjsKICNlbmRpZgogCitzdGF0aWMgY29uc3Qgc2l6ZV90IGtQcmVmZXJyZWRMb3dQb3dlckJ1
ZmZlclNpemUgPSA0MDk4OworCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIApAQCAtMzE2LDYgKzMxOSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICAsIG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5k
aWYKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRv
a2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKHRhZ05hbWUgPT0gdmlkZW9UYWcg
PyBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpWaWRlbyA6IEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
KSkKKyNlbmRpZgogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQiKTsKICAgICBkb2N1bWVudC0+cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNr
cyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMzBkYzEy
NDU3MzkyY2NjYTM4MGJmOTQ0ZWY2MDgyOTc0MTVlNTA5OS4uYzU3MjFmMWE3MzZjYTk1ZWJjYWNj
YTlhNmM5ZjdhZmMwNjE2Y2EyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKQEAgLTQ5LDYgKzQ5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNFKEFV
RElPX1NFU1NJT04pCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKQogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKIGNsYXNzIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKQEAgLTc2NSw2ICs3NjgsMTAgQEAgcHJpdmF0ZToK
ICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgIFJlZlB0cjxQbGF0Zm9ybVRl
eHRUcmFja01lbnVJbnRlcmZhY2U+IG1fcGxhdGZvcm1NZW51OwogI2VuZGlmCisKKyNpZiBVU0Uo
QVVESU9fU0VTU0lPTikKKyAgICBPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBtX2F1
ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKyNlbmRpZgogfTsKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGNkZjgzMzcyMzdmYjA3OTkzOTZjZmJhMjRlYTg5NDM1ZGVhYzVmZjYuLjc1MjlhMWJk
OWRhOWRmMzAwZGU2NDJjNDc2MzE5YzJmMDZhZTcwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogCisjaWYgVVNFKEFVRElP
X1NFU1NJT04pCisKICNpbmNsdWRlICJBdWRpb1Nlc3Npb25MaXN0ZW5lci5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTU5LDEyICs2MSwxMiBAQCB2b2lkIEF1ZGlvU2Vzc2lv
bjo6ZW5kZWRBdWRpb0ludGVycnVwdGlvbigpCiAgICAgICAgICgqaSktPmVuZGVkQXVkaW9JbnRl
cnJ1cHRpb24oKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPUykg
JiYgIVBMQVRGT1JNKE1BQykKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVk
aW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKDApCisgICAgOiBtX3By
aXZhdGUobnVsbHB0cikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtMTEyLDE2ICsx
MTQsMTggQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldEFjdGl2ZShib29sKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLWZsb2F0IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyRHVyYXRp
b24oKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBB
dWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKGZsb2F0KQordm9pZCBBdWRp
b1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogfQorCisjZW5kaWYgLy8g
VVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5oCmluZGV4IDdjMjAyZWI2YjEwNWY3YzRkODQ0MGRjOWU0NTM3ODZmODZiNGYwMzAu
LjBlYTY2NGMxODFiNTA1YzBiNzNhYjU0MTZlYmJjZDVlMTM4NDBiZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC0yNiw2ICsyNiw4IEBACiAj
aWZuZGVmIEF1ZGlvU2Vzc2lvbl9oCiAjZGVmaW5lIEF1ZGlvU2Vzc2lvbl9oCiAKKyNpZiBVU0Uo
QVVESU9fU0VTU0lPTikKKwogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogCkBAIC02Miw4ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpOwogCi0gICAgZmxvYXQgcHJlZmVycmVkQnVmZmVyRHVyYXRpb24oKSBjb25zdDsK
LSAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKGZsb2F0IHNlY29uZHMpOworICAg
IHNpemVfdCBwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKHNpemVfdCk7CiAKICAgICB2b2lkIGJlZ2FuQXVkaW9JbnRlcnJ1cHRpb24o
KTsKICAgICB2b2lkIGVuZGVkQXVkaW9JbnRlcnJ1cHRpb24oKTsKQEAgLTc4LDQgKzgwLDYgQEAg
cHJpdmF0ZToKIAogfQogCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCisKICNlbmRpZiAv
LyBBdWRpb1Nlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgKaW5kZXggNjJjNWIxMTUzNTE4ZDlkMjkwZDg0NmRkZDZh
Y2YzYTU0MTNjMTFiNC4uZDhiODJlNzk0ZDBlYWI4OWI4MDFjNDRlMDAyMzVmM2Q5YzIyZWZhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25M
aXN0ZW5lci5oCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpZm5kZWYgQXVkaW9TZXNzaW9uTGlzdGVu
ZXJfaAogI2RlZmluZSBBdWRpb1Nlc3Npb25MaXN0ZW5lcl9oCiAKKyNpZiBVU0UoQVVESU9fU0VT
U0lPTikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1Nlc3Npb25MaXN0ZW5l
ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uTGlzdGVuZXIpCisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uTGlzdGVuZXIpOwogcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBlbmRlZEF1ZGlvSW50ZXJydXB0aW9uKCkgPSAwOwpAQCAtNDAsNCArNDIsNiBAQCBwcm90
ZWN0ZWQ6CiAKIH0KIAorI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQorCiAjZW5kaWYgLy8g
QXVkaW9TZXNzaW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmExYjk1YjI0YjBi
ZWUxM2NjOTZjYzM5NmQ2NDc2MzUwZTFkYTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSw4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nl
c3Npb25NYW5hZ2VyLmgiCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1Bhc3NPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBBdWRp
b1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5
cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbih0eXBlKSk7Cit9CisKK0F1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6QXVkaW9TZXNzaW9u
TWFuYWdlclRva2VuKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQorICAgIDog
bV90eXBlKHR5cGUpCit7CisgICAgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LmluY3JlbWVudENvdW50KHR5cGUpOworfQorCitBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46On5B
dWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4oKQoreworICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5kZWNyZW1lbnRDb3VudChtX3R5cGUpOworfQorCitBdWRpb1Nlc3Npb25N
YW5hZ2VyJiBBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF1ZGlvU2Vzc2lvbk1hbmFnZXIsIG1hbmFnZXIsICgpKTsKKyAgICBy
ZXR1cm4gbWFuYWdlcjsKK30KKworQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9TZXNzaW9uTWFu
YWdlcigpCit7Cit9CisKK2Jvb2wgQXVkaW9TZXNzaW9uTWFuYWdlcjo6aGFzKEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAg
IHJldHVybiBtX3R5cGVDb3VudC5jb250YWlucyh0eXBlKTsKK30KKwordm9pZCBBdWRpb1Nlc3Np
b25NYW5hZ2VyOjppbmNyZW1lbnRDb3VudChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUg
dHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA+PSAwKTsKKyAgICBtX3R5cGVDb3VudC5hZGQodHlw
ZSk7CisgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uTWFu
YWdlcjo6ZGVjcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlIHR5cGUp
Cit7CisgICAgQVNTRVJUKHR5cGUgPj0gMCk7CisgICAgbV90eXBlQ291bnQucmVtb3ZlKHR5cGUp
OworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworfQorCisjaWYgIVBMQVRGT1JNKE1BQykKK3Zv
aWQgQXVkaW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKK3sKK30KKyNlbmRp
ZgorCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhhNWM2
YTA3OTRmYjY2Nzc2ZGEzOTliODc3NDVkMjFlZDljYzhiYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuaApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1Nlc3Npb25NYW5hZ2VyX2gKKyNk
ZWZpbmUgQXVkaW9TZXNzaW9uTWFuYWdlcl9oCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKwor
I2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlciB7CitwdWJsaWM6CisgICAgc3RhdGljIEF1ZGlvU2Vz
c2lvbk1hbmFnZXImIHNoYXJlZE1hbmFnZXIoKTsKKworICAgIGVudW0gQXVkaW9UeXBlIHsKKyAg
ICAgICAgTm9uZSwKKyAgICAgICAgVmlkZW8sCisgICAgICAgIEF1ZGlvLAorICAgICAgICBXZWJB
dWRpbywKKyAgICB9OworCisgICAgYm9vbCBoYXMoQXVkaW9UeXBlKTsKKworcHJvdGVjdGVkOgor
ICAgIGZyaWVuZCBjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisgICAgdm9pZCBpbmNy
ZW1lbnRDb3VudChBdWRpb1R5cGUpOworICAgIHZvaWQgZGVjcmVtZW50Q291bnQoQXVkaW9UeXBl
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXVkaW9TZXNzaW9uTWFuYWdlcigpOworCisgICAgdm9p
ZCB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKworICAgIEhhc2hDb3VudGVkU2V0PHNpemVfdD4gbV90
eXBlQ291bnQ7Cit9OworCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbj4gY3JlYXRl
KEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlvVHlwZSk7CisgICAgfkF1ZGlvU2Vzc2lvbk1hbmFn
ZXJUb2tlbigpOworCitwcml2YXRlOgorICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRp
b1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUpOworCisgICAgQXVkaW9TZXNzaW9uTWFuYWdlcjo6
QXVkaW9UeXBlIG1fdHlwZTsKK307Cit9CisKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikK
KworI2VuZGlmIC8vIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4
IDM0YjI4OGMyMmExNmI3NWZkYjM5NGVlYmJhNjZmMmVkY2U5NWVlMDAuLmEyNzE1MTk1ZmI1NGY0
M2VhMTczZjA0ZGMwM2IwN2YwMGE4NTU3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTM2LDcg
KzM2LDYgQEAKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uSU9TLmgiCiAKICNpbmNsdWRlICJB
dWRpb0lPQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtNDUsNiArNDQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKKyNpZiBVU0UoQVVESU9f
U0VTU0lPTikKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNlbmRpZgorCiBTT0ZUX0xJTktf
RlJBTUVXT1JLKEF1ZGlvVG9vbGJveCkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29t
cG9uZW50RmluZE5leHQsIEF1ZGlvQ29tcG9uZW50LCAoQXVkaW9Db21wb25lbnQgaW5Db21wb25l
bnQsIGNvbnN0IEF1ZGlvQ29tcG9uZW50RGVzY3JpcHRpb24gKmluRGVzYyksIChpbkNvbXBvbmVu
dCwgaW5EZXNjKSkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29tcG9uZW50SW5zdGFu
Y2VEaXNwb3NlLCBPU1N0YXR1cywgKEF1ZGlvQ29tcG9uZW50SW5zdGFuY2UgaW5JbnN0YW5jZSks
IChpbkluc3RhbmNlKSkKQEAgLTg2LDcgKzg5LDExIEBAIFBhc3NPd25QdHI8QXVkaW9EZXN0aW5h
dGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ss
CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCiB7CisjaWYg
VVNFKEFVRElPX1NFU1NJT04pCiAgICAgcmV0dXJuIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpLnNhbXBsZVJhdGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogdW5z
aWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKQpAQCAtMTA2LDkg
KzExMywxMSBAQCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rlc3RpbmF0aW9uSU9TKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbGJhY2ssIGRvdWJsZSBzYW1wbAogICAgICwgbV9pc1BsYXlpbmcoZmFs
c2UpCiAgICAgLCBtX2ludGVycnVwdGVkT25QbGF5YmFjayhmYWxzZSkKIHsKKyNpZiBVU0UoQVVE
SU9fU0VTU0lPTikKICAgICBBdWRpb1Nlc3Npb24mIHNlc3Npb24gPSBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKTsKICAgICBzZXNzaW9uLmFkZExpc3RlbmVyKHRoaXMpOwogICAgIHNlc3Np
b24uc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpBbWJpZW50U291bmQpOworI2VuZGlmCiAKICAg
ICBhdWRpb0Rlc3RpbmF0aW9ucygpLmFkZCh0aGlzKTsKICAgICBpZiAoYXVkaW9EZXN0aW5hdGlv
bnMoKS5zaXplKCkgPT0gMSkKQEAgLTE1MSw4ICsxNjAsMTAgQEAgQXVkaW9EZXN0aW5hdGlvbklP
Uzo6QXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBkb3VibGUg
c2FtcGwKIEF1ZGlvRGVzdGluYXRpb25JT1M6On5BdWRpb0Rlc3RpbmF0aW9uSU9TKCkKIHsKICAg
ICBhdWRpb0Rlc3RpbmF0aW9ucygpLnJlbW92ZSh0aGlzKTsKKyNpZiBVU0UoQVVESU9fU0VTU0lP
TikKICAgICBpZiAoIWF1ZGlvRGVzdGluYXRpb25zKCkuc2l6ZSgpKQogICAgICAgICBBdWRpb1Nl
c3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUoMCk7CisjZW5kaWYKIAogICAgIGlmICht
X291dHB1dFVuaXQpCiAgICAgICAgIEF1ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0
cHV0VW5pdCk7CkBAIC0xODgsNyArMTk5LDkgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpj
b25maWd1cmUoKQogICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3BlcnR5KG1fb3V0cHV0VW5p
dCwga0F1ZGlvVW5pdFByb3BlcnR5X1N0cmVhbUZvcm1hdCwga0F1ZGlvVW5pdFNjb3BlX0lucHV0
LCAwLCAodm9pZCopJnN0cmVhbUZvcm1hdCwgc2l6ZW9mKEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbikpOwogICAgIEFTU0VSVCghcmVzdWx0KTsKIAotICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVk
U2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQoa1ByZWZlcnJlZEJ1ZmZlclNpemUgLyBtX3NhbXBsZVJhdGUpKTsKKyNpZiBVU0UoQVVESU9f
U0VTU0lPTikKKyAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRC
dWZmZXJTaXplKGtQcmVmZXJyZWRCdWZmZXJTaXplKTsKKyNlbmRpZgogfQogCiB2b2lkIEF1ZGlv
RGVzdGluYXRpb25JT1M6OnN0YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCmluZGV4IGYwZWVlY2ExOTc4NmMy
ODRhZTYzNGI5YzdlYTkxNzI5ZDQ5MzM0MmQuLmM3YmYzZmY2MWRjODgwMmEwMDQwM2MyNmVkYjNk
NDEyOTQ0ZGE1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaApAQCAtMzIsMTUgKzMyLDIxIEBACiAKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKLSNpbmNsdWRl
ICJBdWRpb1Nlc3Npb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyNp
bmNsdWRlICJBdWRpb1Nlc3Npb25MaXN0ZW5lci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0
IG91dHB1dCBBdWRpb1VuaXQKIAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbklPUyA6IHB1YmxpYyBB
dWRpb0Rlc3RpbmF0aW9uLCBwdWJsaWMgQXVkaW9TZXNzaW9uTGlzdGVuZXIgeworY2xhc3MgQXVk
aW9EZXN0aW5hdGlvbklPUyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uCisjaWYgVVNFKEFVRElP
X1NFU1NJT04pCisgICAgLCBwdWJsaWMgQXVkaW9TZXNzaW9uTGlzdGVuZXIgeworI2VuZGlmCiBw
dWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smLCBkb3VibGUg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbklPUygpOwpAQCAtNTMs
OCArNTksMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgY29uZmlndXJlKCk7CisK
KyNpZiBVU0UoQVVESU9fU0VTU0lPTikKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5BdWRpb0ludGVy
cnVwdGlvbigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRlZEF1ZGlvSW50ZXJydXB0
aW9uKCkgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxi
YWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9V
bml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNO
dW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25J
T1MubW0KaW5kZXggOWZhOGUzYmVkMWJhYzc0OWJjNzE4NmQwOWIyNDY4ZDE1MGIzMzkwYi4uNzll
MjYxYWEwZjhhNGI4NzVjZjRjZTUyOWZlMzU0NjViODQzMmI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgog
Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShJ
T1MpCiAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZB
dWRpb1Nlc3Npb24uaD4KQEAgLTIwMSwxOCArMjAxLDE5IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgQVNTRVJUKCFlcnJvcik7CiB9CiAKLWZsb2F0IEF1
ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyRHVyYXRpb24oKSBjb25zdAorc2l6ZV90IEF1ZGlv
U2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFtbQVZB
dWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHByZWZlcnJlZElPQnVmZmVyRHVyYXRpb25dOwor
ICAgIHJldHVybiBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1
ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNl
dFByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQordm9pZCBBdWRpb1Nlc3Np
b246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiB7CiAgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7CisgICAgZmxvYXQgZHVyYXRpb24gPSBidWZmZXJTaXplIC8gc2Ft
cGxlUmF0ZSgpOwogICAgIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldFByZWZl
cnJlZElPQnVmZmVyRHVyYXRpb246ZHVyYXRpb24gZXJyb3I6JmVycm9yXTsKICAgICBBU1NFUlQo
IWVycm9yKTsKIH0KIAogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorI2VuZGlmIC8vIFVT
RShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXgg
YTFhNTRjMzgzMmYyNmJmODRjNDI4ZGJkMDJjZThkYTA5NGYxNmI5NS4uNTM0MjI4NWVjZTc3OTU0
ZjEzNTlkMzUwMTg3MmRjYjAzOWZjMWRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtMzgsNiAr
MzgsMTAgQEAKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAjaW5jbHVkZSA8Q29yZUF1ZGlvL0F1
ZGlvSGFyZHdhcmUuaD4KIAorI2lmIFVTRShBVURJT19TRVNTSU9OKQorI2luY2x1ZGUgIkF1ZGlv
U2Vzc2lvbk1hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IGludCBrQnVmZmVyU2l6ZSA9IDEyODsKQEAgLTYzLDIzICs2NywxMSBAQCBQYXNzT3duUHRyPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
IGNhbGxiYWNrLAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
IHsKICAgICAvLyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3V0cHV0IGRldmljZSdzIHNhbXBsZS1y
YXRlLgotICAgIEF1ZGlvRGV2aWNlSUQgZGV2aWNlSUQgPSBrQXVkaW9EZXZpY2VVbmtub3duOwot
ICAgIFVJbnQzMiBpbmZvU2l6ZSA9IHNpemVvZihkZXZpY2VJRCk7Ci0KLSAgICBBdWRpb09iamVj
dFByb3BlcnR5QWRkcmVzcyBkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcyA9IHsga0F1ZGlvSGFy
ZHdhcmVQcm9wZXJ0eURlZmF1bHRPdXRwdXREZXZpY2UsIGtBdWRpb09iamVjdFByb3BlcnR5U2Nv
cGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OwotICAgIE9TU3Rh
dHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5c3Rl
bU9iamVjdCwgJmRlZmF1bHRPdXRwdXREZXZpY2VBZGRyZXNzLCAwLCAwLCAmaW5mb1NpemUsICh2
b2lkKikmZGV2aWNlSUQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiAwOyAvLyBl
cnJvcgotCi0gICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKLSAgICBpbmZvU2l6ZSA9IHNp
emVvZihGbG9hdDY0KTsKLQotICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIG5vbWluYWxT
YW1wbGVSYXRlQWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVydHlOb21pbmFsU2FtcGxlUmF0
ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJvcGVydHlF
bGVtZW50TWFzdGVyIH07Ci0gICAgcmVzdWx0ID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEo
ZGV2aWNlSUQsICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6ZSwgKHZv
aWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJu
IDA7IC8vIGVycm9yCi0KLSAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFs
U2FtcGxlUmF0ZSk7CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgcmV0dXJuIEF1ZGlvU2Vz
c2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNhbXBsZVJhdGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7
CisjZW5kaWYKIH0KIAogdW5zaWduZWQgbG9uZyBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVs
Q291bnQoKQpAQCAtOTcsNiArODksOSBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3Rp
bmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZQogICAgICwg
bV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpKQogICAg
ICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKKyNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAsIG1fYXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKEF1
ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OldlYkF1
ZGlvKSkKKyNlbmRpZgogewogICAgIC8vIE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1
dFVuaXQKICAgICBBdWRpb0NvbXBvbmVudCBjb21wOwpAQCAtMTQ4LDExICsxNDMsNiBAQCB2b2lk
IEF1ZGlvRGVzdGluYXRpb25NYWM6OmNvbmZpZ3VyZSgpCiAKICAgICByZXN1bHQgPSBBdWRpb1Vu
aXRTZXRQcm9wZXJ0eShtX291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3Jt
YXQsIGtBdWRpb1VuaXRTY29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVv
ZihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7Ci0K
LSAgICAvLyBTZXQgdGhlIGJ1ZmZlciBmcmFtZSBzaXplLgotICAgIFVJbnQzMiBidWZmZXJTaXpl
ID0ga0J1ZmZlclNpemU7Ci0gICAgcmVzdWx0ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRw
dXRVbml0LCBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZyYW1lU2l6ZSwga0F1ZGlvVW5pdFNj
b3BlX091dHB1dCwgMCwgKHZvaWQqKSZidWZmZXJTaXplLCBzaXplb2YoYnVmZmVyU2l6ZSkpOwot
ICAgIEFTU0VSVCghcmVzdWx0KTsKIH0KIAogdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpzdGFy
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9E
ZXN0aW5hdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuaAppbmRleCAwNjJjOTY5ZTY5ZjY5ZDI4YmI1OGVjYmRjMWE2ZTFmNWUz
ZGNiNWM5Li45MjhhYWMwM2QyNzAyOTBmZDI2OTkyM2JhYmIyYTYxZjQyNTA1NmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmgKQEAgLTMyLDEwICszMiwxMyBAQAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjsKKwog
Ly8gQW4gQXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBB
dWRpb1VuaXQKIAogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3Rp
bmF0aW9uIHsKQEAgLTYzLDYgKzY2LDEwIEBAIHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7CiAgICAgYm9vbCBtX2lzUGxheWluZzsKKworI2lmIFVTRShBVURJT19TRVNTSU9OKQor
ICAgIE93blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4+IG1fYXVkaW9TZXNzaW9uTWFuYWdl
clRva2VuOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliNzcxNmE1NTE0Mjg3MzY2YjlkNGFhYmMzZWM3OWYxYWZjNTUyMTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNz
aW9uTWFjLmNwcApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKworI2lmIFVTRShBVURJT19TRVNTSU9O
KSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxD
b3JlQXVkaW8vQXVkaW9IYXJkd2FyZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEF1ZGlvRGV2aWNlSUQgZGVmYXVsdERldmlj
ZSgpCit7CisgICAgQXVkaW9EZXZpY2VJRCBkZXZpY2VJRCA9IGtBdWRpb0RldmljZVVua25vd247
CisgICAgVUludDMyIGluZm9TaXplID0gc2l6ZW9mKGRldmljZUlEKTsKKworICAgIEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzIGRlZmF1bHRPdXRwdXREZXZpY2VBZGRyZXNzID0geworICAgICAg
ICBrQXVkaW9IYXJkd2FyZVByb3BlcnR5RGVmYXVsdE91dHB1dERldmljZSwKKyAgICAgICAga0F1
ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVy
dHlFbGVtZW50TWFzdGVyIH07CisgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RHZXRQ
cm9wZXJ0eURhdGEoa0F1ZGlvT2JqZWN0U3lzdGVtT2JqZWN0LCAmZGVmYXVsdE91dHB1dERldmlj
ZUFkZHJlc3MsIDAsIDAsICZpbmZvU2l6ZSwgKHZvaWQqKSZkZXZpY2VJRCk7CisgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIDA7IC8vIGVycm9yCisgICAgcmV0dXJuIGRldmljZUlEOwor
fQorCitjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKK3B1YmxpYzogICAgCit9OworCitBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IEF1
ZGlvU2Vzc2lvblByaXZhdGUoKSkpCit7Cit9CisKK0F1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lv
bigpCit7Cit9CisKK0F1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0
ZWdvcnkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE5vbmU7
Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVk
aW9TZXNzaW9uOjpjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBOb25lOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdv
cnlPdmVycmlkZShDYXRlZ29yeVR5cGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
ZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgY29uc3QKK3sKKyAgICBGbG9hdDY0IG5v
bWluYWxTYW1wbGVSYXRlOworICAgIFVJbnQzMiBub21pbmFsU2FtcGxlUmF0ZVNpemUgPSBzaXpl
b2YoRmxvYXQ2NCk7CisKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBub21pbmFsU2Ft
cGxlUmF0ZUFkZHJlc3MgPSB7CisgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5Tm9taW5hbFNh
bXBsZVJhdGUsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsCisgICAg
ICAgIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIE9TU3RhdHVzIHJl
c3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJm5vbWlu
YWxTYW1wbGVSYXRlQWRkcmVzcywgMCwgMCwgJm5vbWluYWxTYW1wbGVSYXRlU2l6ZSwgKHZvaWQq
KSZub21pbmFsU2FtcGxlUmF0ZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7
Cit9CisKK3NpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQXVk
aW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CitzaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3sKKyAg
ICBVSW50MzIgYnVmZmVyU2l6ZTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZVNpemUgPSBzaXplb2Yo
YnVmZmVyU2l6ZSk7CisKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcmVmZXJyZWRC
dWZmZXJTaXplQWRkcmVzcyA9IHsKKyAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVydHlCdWZmZXJG
cmFtZVNpemVSYW5nZSwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwK
KyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisgICAgT1NTdGF0
dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAm
cHJlZmVycmVkQnVmZmVyU2l6ZUFkZHJlc3MsIDAsIDAsICZidWZmZXJTaXplU2l6ZSwgJmJ1ZmZl
clNpemUpOworCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IGJ1ZmZlclNpemU7Cit9CisKK3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKHNpemVfdCBidWZmZXJTaXplKQoreworICAgIEF1ZGlvVmFsdWVSYW5nZSBidWZmZXJTaXpl
UmFuZ2UgPSB7MCwgMH07CisgICAgVUludDMyIGJ1ZmZlclNpemVSYW5nZVNpemUgPSBzaXplb2Yo
QXVkaW9WYWx1ZVJhbmdlKTsKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBidWZmZXJT
aXplUmFuZ2VBZGRyZXNzID0geworICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZy
YW1lU2l6ZVJhbmdlLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFsLAor
ICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIKKyAgICB9OworICAgIE9T
U3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRlZmF1bHREZXZpY2Uo
KSwgJmJ1ZmZlclNpemVSYW5nZUFkZHJlc3MsIDAsIDAsICZidWZmZXJTaXplUmFuZ2VTaXplLCAm
YnVmZmVyU2l6ZVJhbmdlKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBzaXplX3QgbWluQnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyU2l6ZVJh
bmdlLm1NaW5pbXVtKTsKKyAgICBzaXplX3QgbWF4QnVmZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNp
emVfdD4oYnVmZmVyU2l6ZVJhbmdlLm1NYXhpbXVtKTsKKyAgICBVSW50MzIgYnVmZmVyU2l6ZU91
dCA9IHN0ZDo6bWluKG1heEJ1ZmZlclNpemUsIHN0ZDo6bWF4KG1pbkJ1ZmZlclNpemUsIGJ1ZmZl
clNpemUpKTsKKworICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIHByZWZlcnJlZEJ1ZmZl
clNpemVBZGRyZXNzID0geworICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZyYW1l
U2l6ZSwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwKKyAgICAgICAg
a0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07CisKKyAgICByZXN1bHQgPSBBdWRp
b09iamVjdFNldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNlKCksICZwcmVmZXJyZWRCdWZmZXJT
aXplQWRkcmVzcywgMCwgMCwgc2l6ZW9mKGJ1ZmZlclNpemVPdXQpLCAodm9pZCopJmJ1ZmZlclNp
emVPdXQpOworCisjaWYgTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Cisj
ZWxzZQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIC0gZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBidWZm
ZXJTaXplLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNz
aW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkiLCBidWZmZXJTaXplKTsKKyNlbmRpZgor
fQorCit9CisKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2MzgzOGZjYjdlMzUxNDcyY2I2M2U2
OGFiOWQ3ZDFjZjc2NzllYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Np
b25NYW5hZ2VyLmgiCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3Rh
dGljIGNvbnN0IHNpemVfdCBrV2ViQXVkaW9CdWZmZXJTaXplID0gMTI4Oworc3RhdGljIGNvbnN0
IHNpemVfdCBrTG93UG93ZXJWaWRlb0J1ZmZlclNpemUgPSA0MDk4OworCit2b2lkIEF1ZGlvU2Vz
c2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCit7CisgICAgTE9HKE1lZGlhLCAiQXVk
aW9TZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkgLSB0eXBlczogVmlkZW8oJWQp
LCBBdWRpbyglZCksIFdlYkF1ZGlvKCVkKSIsIG1fdHlwZUNvdW50LmNvdW50KFZpZGVvKSwgbV90
eXBlQ291bnQuY291bnQoQXVkaW8pLCBtX3R5cGVDb3VudC5jb3VudChXZWJBdWRpbykpOworCisg
ICAgaWYgKGhhcyhXZWJBdWRpbykpCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lv
bigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa1dlYkF1ZGlvQnVmZmVyU2l6ZSk7CisgICAgZWxz
ZSBpZiAoaGFzKFZpZGVvKSB8fCBoYXMoQXVkaW8pKQorICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtMb3dQb3dlclZpZGVvQnVmZmVy
U2l6ZSk7Cit9CisKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFD
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202259</attachid>
            <date>2013-05-19 22:58:01 -0700</date>
            <delta_ts>2013-05-22 18:18:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116342-20130519225657.patch</filename>
            <type>text/plain</type>
            <size>42933</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5ZTdlZTZjNjM2NTRiM2U4ODQ4NjRk
ZTJiOTcxYzQ2ODQ2OWVmMDQuLmRkMDA1OTM4YmRmYjM1NjkwZGQ1NjdlMjkxNDhhZDM0NzdhYzYw
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDUtMTkgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFjOiBTZXQgdGhlIGRlZmF1bHQgYXVkaW8gYnVmZmVy
IHNpemUgdG8gYSBsYXJnZSB2YWx1ZSBmb3IgPHZpZGVvPiBlbGVtZW50cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEFk
ZCBhIFdURl9VU0VfQVVESU9fU0VTU0lPTiBzZXR0aW5nLgorCiAyMDEzLTA1LTE2ICBCZW5qYW1p
biBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aGUgc3ltYm9s
IFdURkludm9rZUNyYXNoSG9vayBiYWNrIGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyZjBhYzQ5M2FiMWQxNzUxN2U3NGMxNzVhMmU1NTQyOTY2ZjA5Y2JjLi44ZDdhNDM2
ZTBiM2RkNmQ4NmViM2Y2NWVmYzUyYTkxODcxNzM1OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzYgQEAKKzIwMTMtMDUtMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFjOiBTZXQgdGhlIGRlZmF1bHQgYXVkaW8gYnVmZmVyIHNpemUgdG8gYSBsYXJnZSB2
YWx1ZSBmb3IgPHZpZGVvPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNjM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRvIGVuYWJsZSBwb3dlciBzYXZpbmdzIGJ5IHdha2luZyB1cCB0
aGUgYXVkaW8gaGFyZHdhcmUgbGVzcyBvZnRlbiwgc2V0IHRoZQorICAgICAgICByZXF1ZXN0ZWQg
YnVmZmVyIGZyYW1lIHNpemUgdG8gYSBsYXJnZSB2YWx1ZSwgc3VjaCBhcyA0MDk2LiBTaW5jZSB0
aGlzIHJlc3VsdHMKKyAgICAgICAgaW4gYXBwcm94aW1hdGVseSAxMDBtcyB3b3J0aCBvZiBidWZm
ZXIsIHNldCB0aGUgYnVmZmVyIHNpemUgdG8gYSBtdWNoIGxvd2VyCisgICAgICAgIHZhbHVlIHdo
ZW4gcGxheWluZyBXZWJBdWRpbywgd2hpY2ggaXMgbXVjaCBtb3JlIHNlbnNpdGl2ZSB0byBsYXRl
bmN5IHRoYW4gdmlkZW8KKyAgICAgICAgb3IgYXVkaW8gZWxlbWVudHMuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IGNsYXNzLCBBdWRpb1Nlc3Npb25NYW5hZ2VyLCBhcyB3ZWxsIGFzIGEgaGVs
cGVyIGNsYXNzLAorICAgICAgICBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4uIEF1ZGlvIGVsZW1l
bnRzLCB2aWRlbyBlbGVtZW50cywgYW5kIFdlYkF1ZGlvIGRlc3RpbmF0aW9uCisgICAgICAgIG5v
ZGVzIHdpbGwgY3JlYXRlIGFuZCByZXRhaW4gYSB0b2tlbiwgYW5kIHJlbGVhc2UgdGhlIHRva2Vu
IGluIHRoZWlyIGRlc3RydWN0b3IuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBBdWRpb1Nlc3Np
b25NYW5hZ2VyIHRvIHRyYWNrIGhvdyBtYW55IG9mIHdoYXQgdHlwZSBvZiBhdWRpby0KKyAgICAg
ICAgZ2VuZXJhdGluZyBvYmplY3RzIGFyZSBpbiBleGlzdGVuY2UuCisKKyAgICAgICAgVGhpcyBy
ZXF1aXJlcyBpbXBsZW1lbnRpbmcgQXVkaW9TZXNzaW9uIGZvciBNYWMgcGxhdGZvcm1zLiBNb3Zl
IHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmb3IgcmV0cmlldmluZyB0aGUgaGFyZHdhcmUg
c2FtcGxlIHJhdGUgYW5kIHNldHRpbmcgdGhlIGJ1ZmZlciBkdXJhdGlvbiBpbnRvCisgICAgICAg
IEF1ZGlvU2Vzc2lvbk1hYyBmcm9tIEF1ZGlvRGVzdGluYXRpb25NYWMsIHRvIGJlIHNoYXJlZCB3
aXRoIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBBdWRpb1Nl
c3Npb24gbWV0aG9kIHByZWZlcnJlZEJ1ZmZlckxlbmd0aCgpIGludG8gcHJlZmVycmVkQnVmZmVy
U2l6ZSgpLAorICAgICAgICBhcyB0aGUgY2FsbGVycyByZWFsbHkgd2FudCB0byBzcGVjaWZ5IGEg
YnVmZmVyIHNpemUsIG5vdCBhIGJ1ZmZlciBkdXJhdGlvbi4gT24gaU9TLAorICAgICAgICB3aGVy
ZSB0aGUgYXZhaWxhYmxlIEFQSSByZXF1aXJlcyBhIGR1cmF0aW9uLCBwZXJmb3JtIHRoZSBjb252
ZXJzaW9uIGZyb20gZHVyYXRpb24gdG8KKyAgICAgICAgc2l6ZSBvbiBiZWhhbGYgb2YgdGhlIGNh
bGxlci4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiAgQWRkIGEgQXVkaW9T
ZXNzaW9uTWFuYWdlclRva2VuIG1lbWJlci4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudCk6IEluaXRpYWxpemUgdGhlIHRva2VuLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJl
ZEJ1ZmZlclNpemUpOiBSZW5hbWVkIGZyb20gcHJlZmVycmVkQnVmZmVyTGVuZ3RoLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1l
ZCBmcm9tIHNldFByZWZlcnJlZEJ1ZmZlckxlbmd0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbjo6Y3JlYXRlKTog
U2ltcGxlIGZhY3RvcnkgbWV0aG9kLgorICAgICAgICAoQXVkaW9TZXNzaW9uTWFuYWdlclRva2Vu
OjpBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4pOiBDYWxsIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6Omlu
Y3JlbWVudENvdW50KCkuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46On5BdWRp
b1Nlc3Npb25NYW5hZ2VyVG9rZW4pOiBDYWxsIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVu
dENvdW50KCkuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKTog
U2ltcGxlIHNpbmdsZXRvbiBtZXRob2QuCisgICAgICAgIChBdWRpb1Nlc3Npb25NYW5hZ2VyOjpB
dWRpb1Nlc3Npb25NYW5hZ2VyKTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoQXVkaW9T
ZXNzaW9uTWFuYWdlcjo6aGFzKTogUmV0dXJuIHdoZXRoZXIgdGhlIHR5cGUgaXMgcHJlc2VudC4K
KyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmluY3JlbWVudENvdW50KTogSW5jcmVtZW50
LCB0aGVuIGNhbGwgdXBkYXRlU2Vzc2lvblN0YXRlKCkKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1h
bmFnZXI6OmRlY3JlbWVudENvdW50KTogRGVjcmVtZW50LCB0aGVuIGNhbGwgdXBkYXRlU2Vzc2lv
blN0YXRlKCkKKyAgICAgICAgKEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0
ZSk6IFN0dWIsIGRvZXMgbm90aGluZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nl
c3Npb25NYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6Y29u
ZmlndXJlKTogQ2FsbCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCkgaW5zdGVhZCBvZiBzZXRQcmVm
ZXJyZWRCdWZmZXJMZW5ndGgoKQorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1
ZmZlclNpemUpOiBSZW5hbWVkIGZyb20gcHJlZmVycmVkQnVmZmVyTGVuZ3RoLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKTogUmVuYW1lZCBm
cm9tIHNldFByZWZlcnJlZEJ1ZmZlckxlbmd0aAorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSk6IENhbGwgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRl
KCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0
aW9uTWFjKTogQ3JlYXRlIHRoZSBBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW4uCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpjb25maWd1cmUpOiBEbyBub3Qgc2V0IHRoZSBi
dWZmZXIgc2l6ZSAodGhpcyBpcyBkb25lIGluIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMpLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6ZGVmYXVsdERldmljZSk6IEFkZGVkLCByZXR1cm5zIHRoZSBkZWZhdWx0IGF1
ZGlvIGRldmljZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KTogU2ltcGxlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+
QXVkaW9TZXNzaW9uKTogU2ltcGxlIGRlc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5KTogU3R1YiwgdW5pbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeU92ZXJyaWRlKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUpOiBVc2UgdGhlIEhBTCB0byByZXR1
cm4gdGhlIGRlZmF1bHQgYXVkaW8gZGV2aWNlIHNhbXBsZSByYXRlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKTogUmV0dXJuIHRoZSBjdXJyZW50
IEhBTCBzZXR0aW5nLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKTogU2V0IHRoZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChBdWRpb1Nlc3Np
b25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUpOiBTZXQgdGhlIGJ1ZmZlciBzaXplIGRlcGVu
ZGluZyBvbiB3aGF0IGF1ZGlvIG91dHB1dHMgYXJlIHByZXNlbnQuCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgdGhlIG5ldyBmaWxlcyB0byB0aGUgcHJv
amVjdC4KKwogMjAxMy0wNS0xNiAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVu
Y2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgQWRkIHN0dWJzIGZvciBDb250ZXh0TWVudSBh
bmQgQ29udGV4dE1lbnVJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA3MjQ3NzgzNDUwMjc3NWM3MjUzOGY5
ODA5Mjc1ODhiZTA4YmQ1YzkzLi43MTBmZTM4MWRlYjRkNGYxMjIyM2MwN2U0YjlmY2I5MDBmOTlh
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEwMTgsNCArMTAxOCw4IEBACiAjZGVmaW5lIFdURl9VU0Vf
TUFSS0VSX1JFTU9WQUxfVVBPTl9FRElUSU5HIDEKICNlbmRpZiAvKiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAoUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzApICovCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNkZWZpbmUg
V1RGX1VTRV9BVURJT19TRVNTSU9OIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3Jt
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzNDYzYmU5N2NiMjRhYjBjYTAxZjdiNDg0MWFkY2Y4ODg3ODEyNDAyLi42MDlh
ZjE0MDFmMjBhOTc0ZDFjZTI1ZDFkYTc0YzhjMDI0NDRhZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MjEyLDYgKzUyMTIs
OCBAQAogCQlDRDM3QjM5ODE1QzFCOTcxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdC
Mzc0MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwICovOyB9Owog
CQlDRDQ3QjNGQzE2Q0MzNEY4MDBBMjFFQzggLyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENDdCM0ZBMTZD
QzM0RjgwMEEyMUVDOCAvKiBDRE1Qcml2YXRlQVZGb3VuZGF0aW9uLm1tICovOyB9OwogCQlDRDRB
QzUyQTE0OTZBRTlBMDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiBpbiBDb3B5IEF1ZGlvIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDRBQzUyODE0OTZBRTJG
MDA4N0M0RUYgLyogQ29tcG9zaXRlLndhdiAqLzsgfTsKKwkJQ0Q1NERFNDcxNzQ2OEI2RjAwNUU1
QjM2IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlv
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovOyB9OworCQlDRDU0REU0QjE3NDY5QzZEMDA1RTVCMzYg
LyogQXVkaW9TZXNzaW9uTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMu
Y3BwICovOyB9OwogCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bSAqLzsgfTsKIAkJQ0Q4MjAzMEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0Q4MjAzMEIxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDgyMDMw
NzEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbSAqLzsg
c2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bmRlZiAtV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIjsgfTsgfTsKQEAgLTUyMzIsNiArNTIzNCw3IEBACiAJCUNEQTk4RTBEMTYw
M0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThEQ0ExNjAxNTA4QTAwRkVBM0IxIC8qIE1lZGlhS2V5
cy5jcHAgKi87IH07CiAJCUNEQTk4RTBFMTYwM0ZFNTgwMEZFQTNCMSAvKiBNZWRpYUtleVNlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RB
OThEQzcxNjAxNEYyQzAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgKi87IH07CiAJCUNE
QUE4RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQwODE0RDM4NTYwMDA2MUVB
NjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OworCQlDREFFOEMwOTE3NDZCOTU3MDA1MzJE
NzggLyogQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwNzE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNz
aW9uTWFuYWdlci5jcHAgKi87IH07CiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRp
YUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsK
IAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGODE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RDMjZCNDAxNjBBOEND
NjAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RDMjZCM0MxNjBBNjJCMDAwMjY3NTdCIC8qIE1vY2tDRE0uY3BwICov
OyB9OwpAQCAtMTE5NjYsNiArMTE5NjksOCBAQAogCQlDRDQ3QjNGQTE2Q0MzNEY4MDBBMjFFQzgg
LyogQ0RNUHJpdmF0ZUFWRm91bmRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IENETVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHBhdGggPSBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGVBVkZvdW5kYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNENEFDNTI4MTQ5NkFFMkYwMDg3QzRFRiAvKiBDb21wb3NpdGUud2F2ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXVkaW8ud2F2
OyBuYW1lID0gQ29tcG9zaXRlLndhdjsgcGF0aCA9IHBsYXRmb3JtL2F1ZGlvL3Jlc291cmNlcy9D
b21wb3NpdGUud2F2OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUNENEUwQUZBMTFG
N0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRo
ID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENTRERTQ1
MTc0NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyog
QXVkaW9TZXNzaW9uTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1ZGlvU2Vzc2lvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEN0Uw
NTIwMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg7IHBhdGggPSBvYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDdFMDUy
MTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOyBwYXRoID0gb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEODIwMzA2MTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDA1LDYgKzEyMDEw
LDggQEAKIAkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIENETVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ0RNUHJpdmF0ZS5oOyBwYXRoID0gTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2Nr
Q00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNs
b2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUU4QzA3MTc0NkI5NTcw
MDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogQXVkaW9TZXNzaW9uTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUYyMTYwRDQ4OTkwMEU1
QjA3RiAvKiBNZWRpYUtleUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhS2V5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjMx
NjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXJyb3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IE1lZGlhS2V5RXJyb3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4
NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwNzc1LDYgKzIwNzgyLDggQEAKIAkJCQlDREE3OTgyMTE3MEEyMkRD
MDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggKi8sCiAJCQkJQ0RBNzk4MjMxNzBBMjU4MzAwRDQ1
QzU1IC8qIEF1ZGlvU2Vzc2lvbi5jcHAgKi8sCiAJCQkJQ0RBNzk4MjIxNzBBMjRGNDAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggKi8sCisJCQkJQ0RBRThDMDcxNzQ2Qjk1NzAwNTMy
RDc4IC8qIEF1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwICovLAorCQkJCUNEQUU4QzA4MTc0NkI5NTcw
MDUzMkQ3OCAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyLmggKi8sCiAJCQkJRkQzMTYwNTMxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCAqLywKIAkJCQlGRDYyRjUyRDE0NTg5
OEQ4MDA5NEIwRUQgLyogQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudC5oICovLAogCQkJCUZEMzE2
MDU0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb1V0aWxpdGllcy5jcHAgKi8sCkBAIC0yMDg0MSw2
ICsyMDg1MCw4IEBACiAJCQkJRkQzMTYwQjgxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJl
YWRlck1hYy5jcHAgKi8sCiAJCQkJRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmls
ZVJlYWRlck1hYy5oICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCisJCQkJQ0Q1NERFNDUxNzQ2OEI2RjAwNUU1QjM2IC8qIEF1ZGlvU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwICovLAorCQkJCUNENTRERTQ5MTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRp
b1Nlc3Npb25NYWMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjUwNDMsNiArMjUwNTQsNyBAQAogCQkJCTg0NzMwRDdDMTI0OEYw
QjMwMEQzQTlDOSAvKiBGRURpc3BsYWNlbWVudE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MzU4RTg4MDEzNjBBMzE3MDBFNDc0OEMgLyogRkVEcm9wU2hhZG93LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg0NzMwRDdFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRUZsb29kLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNENTRERTRCMTc0NjlDNkQwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODQ4MDE5NTQxMDhCQUZCMzAwQ0IyQjFGIC8qIEZFR2F1c3Np
YW5CbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDgwMTI0OEYwQjMwMEQzQTlDOSAv
KiBGRUxpZ2h0aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDgyMTI0OEYwQjMwMEQz
QTlDOSAvKiBGRU1lcmdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjYzNzUsNiArMjYzODcsNyBA
QAogCQkJCTkzMzA5RTA5MDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RDRjEyNTFGMTJEMDAzRUYyNjkgLyogUmVz
ZXRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1
MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNENTRERTQ3MTc0
NjhCNkYwMDVFNUIzNiAvKiBBdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNEJDODNGMTYxQ0YwNEEwMDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9y
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ2QjEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VFcnJvckNGLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY4MTcsNiArMjY4MzAsNyBA
QAogCQkJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQzNEQTRBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3NTlFOTNGMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBRThDMDkxNzQ2Qjk1NzAwNTMyRDc4IC8qIEF1ZGlvU2Vz
c2lvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc1OUU5NDIxNEVGMUNGODAwMjZB
MkREIC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzFBOUVDMjE2OEZC
QzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTk0NTE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDk3
NDc0OTExZmI5NGMzNjliZGUyM2MyMThlYzZiZTVjNDY4ZDUzNDkuLmM1MDg2MmM5MjZhZjc4OGIx
N2MyZDAyNTZmYzliMjkxYTg1M2JjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMTM2LDYgKzEzNiwxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVGV4dFRy
YWNrLmgiCiAjZW5kaWYKIAorI2lmIFVTRShBVURJT19TRVNTSU9OKQorI2luY2x1ZGUgIkF1ZGlv
U2Vzc2lvbk1hbmFnZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xODMsNiArMTg3LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIGJv
b2xTdHJpbmcoYm9vbCB2YWwpCiBzdGF0aWMgY29uc3QgY2hhciogbWVkaWFTb3VyY2VCbG9iUHJv
dG9jb2wgPSAiYmxvYiI7CiAjZW5kaWYKIAorc3RhdGljIGNvbnN0IHNpemVfdCBrUHJlZmVycmVk
TG93UG93ZXJCdWZmZXJTaXplID0gNDA5ODsKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTMxNiw2ICszMjIsOSBAQCBIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bQogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgLCBtX2F1ZGlvU291cmNlTm9k
ZSgwKQogI2VuZGlmCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgLCBtX2F1ZGlvU2Vzc2lv
bk1hbmFnZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZSh0YWdOYW1lID09
IHZpZGVvVGFnID8gQXVkaW9TZXNzaW9uTWFuYWdlcjo6VmlkZW8gOiBBdWRpb1Nlc3Npb25NYW5h
Z2VyOjpBdWRpbykpCisjZW5kaWYKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50Iik7CiAgICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yTWVkaWFWb2x1
bWVDYWxsYmFja3ModGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDMwZGMxMjQ1NzM5MmNjY2EzODBiZjk0NGVmNjA4Mjk3NDE1ZTUwOTkuLmM1NzIxZjFhNzM2
Y2E5NWViY2FjY2E5YTZjOWY3YWZjMDYxNmNhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC00OSw2ICs0OSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
I2lmIFVTRShBVURJT19TRVNTSU9OKQorY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIGNsYXNzIEF1ZGlvU291cmNlUHJvdmlkZXI7
CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7CkBAIC03NjUsNiArNzY4LDEwIEBA
IHByaXZhdGU6CiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tfTUVOVSkKICAgICBSZWZQdHI8
UGxhdGZvcm1UZXh0VHJhY2tNZW51SW50ZXJmYWNlPiBtX3BsYXRmb3JtTWVudTsKICNlbmRpZgor
CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbj4gbV9hdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW47CisjZW5kaWYKIH07CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcAppbmRleCBjZGY4MzM3MjM3ZmIwNzk5Mzk2Y2ZiYTI0ZWE4OTQzNWRlYWM1ZmY2
Li43NTI5YTFiZDlkYTlkZjMwMGRlNjQyYzQ3NjMxOWMyZjA2YWU3MGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTI2LDYgKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKIAorI2lm
IFVTRShBVURJT19TRVNTSU9OKQorCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBAIC01OSwxMiArNjEsMTIgQEAgdm9pZCBB
dWRpb1Nlc3Npb246OmVuZGVkQXVkaW9JbnRlcnJ1cHRpb24oKQogICAgICAgICAoKmkpLT5lbmRl
ZEF1ZGlvSW50ZXJydXB0aW9uKCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFU
Rk9STShJT1MpICYmICFQTEFURk9STShNQUMpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsK
IH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZSgwKQor
ICAgIDogbV9wcml2YXRlKG51bGxwdHIpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KQEAg
LTExMiwxNiArMTE0LDE4IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1mbG9hdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1
ZmZlckR1cmF0aW9uKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZl
clNpemUoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJEdXJhdGlvbihmbG9hdCkK
K3ZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKIH0KKwor
I2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCA3YzIwMmViNmIxMDVmN2M0ZDg0NDBkYzllNDUzNzg2
Zjg2YjRmMDMwLi4wZWE2NjRjMTgxYjUwNWMwYjczYWI1NDE2ZWJiY2Q1ZTEzODQwYmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMjYsNiAr
MjYsOCBAQAogI2lmbmRlZiBBdWRpb1Nlc3Npb25faAogI2RlZmluZSBBdWRpb1Nlc3Npb25faAog
CisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjIsOCArNjQsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldEFjdGl2ZShib29sKTsKIAotICAgIGZsb2F0IHByZWZlcnJlZEJ1ZmZlckR1cmF0aW9u
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQcmVmZXJyZWRCdWZmZXJEdXJhdGlvbihmbG9hdCBzZWNv
bmRzKTsKKyAgICBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHZvaWQg
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QpOwogCiAgICAgdm9pZCBiZWdhbkF1ZGlvSW50
ZXJydXB0aW9uKCk7CiAgICAgdm9pZCBlbmRlZEF1ZGlvSW50ZXJydXB0aW9uKCk7CkBAIC03OCw0
ICs4MCw2IEBAIHByaXZhdGU6CiAKIH0KIAorI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQor
CiAjZW5kaWYgLy8gQXVkaW9TZXNzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbkxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25MaXN0ZW5lci5oCmluZGV4IDYyYzViMTE1MzUxOGQ5ZDI5
MGQ4NDZkZGQ2YWNmM2E1NDEzYzExYjQuLmQ4YjgyZTc5NGQwZWFiODliODAxYzQ0ZTAwMjM1ZjNk
OWMyMmVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbkxpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uTGlzdGVuZXIuaApAQCAtMjYsMTAgKzI2LDEyIEBACiAjaWZuZGVmIEF1ZGlvU2Vz
c2lvbkxpc3RlbmVyX2gKICNkZWZpbmUgQXVkaW9TZXNzaW9uTGlzdGVuZXJfaAogCisjaWYgVVNF
KEFVRElPX1NFU1NJT04pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9TZXNz
aW9uTGlzdGVuZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbkxpc3Rl
bmVyKQorICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbkxpc3RlbmVyKTsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnYW5BdWRpb0ludGVycnVwdGlvbigpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZW5kZWRBdWRpb0ludGVycnVwdGlvbigpID0gMDsKQEAgLTQwLDQgKzQy
LDYgQEAgcHJvdGVjdGVkOgogCiB9CiAKKyNlbmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikKKwog
I2VuZGlmIC8vIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJh
MWI5NWIyNGIwYmVlMTNjYzk2Y2MzOTZkNjQ3NjM1MGUxZGEzZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbk1hbmFnZXIuY3BwCkBA
IC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitQYXNzT3duUHRyPEF1ZGlvU2Vzc2lvbk1hbmFnZXJU
b2tlbj4gQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOjpjcmVhdGUoQXVkaW9TZXNzaW9uTWFuYWdl
cjo6QXVkaW9UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb1Nlc3Np
b25NYW5hZ2VyVG9rZW4odHlwZSkpOworfQorCitBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OkF1
ZGlvU2Vzc2lvbk1hbmFnZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlw
ZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5pbmNyZW1lbnRDb3VudCh0eXBlKTsKK30KKworQXVkaW9TZXNzaW9uTWFuYWdl
clRva2VuOjp+QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuKCkKK3sKKyAgICBBdWRpb1Nlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuZGVjcmVtZW50Q291bnQobV90eXBlKTsKK30KKworQXVk
aW9TZXNzaW9uTWFuYWdlciYgQXVkaW9TZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdWRpb1Nlc3Npb25NYW5hZ2VyLCBtYW5hZ2VyLCAo
KSk7CisgICAgcmV0dXJuIG1hbmFnZXI7Cit9CisKK0F1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
U2Vzc2lvbk1hbmFnZXIoKQoreworfQorCitib29sIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OmhhcyhB
dWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA+
PSAwKTsKKyAgICByZXR1cm4gbV90eXBlQ291bnQuY29udGFpbnModHlwZSk7Cit9CisKK3ZvaWQg
QXVkaW9TZXNzaW9uTWFuYWdlcjo6aW5jcmVtZW50Q291bnQoQXVkaW9TZXNzaW9uTWFuYWdlcjo6
QXVkaW9UeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKHR5cGUgPj0gMCk7CisgICAgbV90eXBlQ291
bnQuYWRkKHR5cGUpOworICAgIHVwZGF0ZVNlc3Npb25TdGF0ZSgpOworfQorCit2b2lkIEF1ZGlv
U2Vzc2lvbk1hbmFnZXI6OmRlY3JlbWVudENvdW50KEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OkF1ZGlv
VHlwZSB0eXBlKQoreworICAgIEFTU0VSVCh0eXBlID49IDApOworICAgIG1fdHlwZUNvdW50LnJl
bW92ZSh0eXBlKTsKKyAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKK30KKworI2lmICFQTEFURk9S
TShNQUMpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCit7
Cit9CisjZW5kaWYKKworI2VuZGlmIC8vIFVTRShBVURJT19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uTWFuYWdlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI4YTVjNmEwNzk0ZmI2Njc3NmRhMzk5Yjg3NzQ1ZDIxZWQ5Y2M4YmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb25NYW5hZ2Vy
LmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9TZXNzaW9uTWFu
YWdlcl9oCisjZGVmaW5lIEF1ZGlvU2Vzc2lvbk1hbmFnZXJfaAorCisjaWYgVVNFKEFVRElPX1NF
U1NJT04pCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEF1ZGlvU2Vzc2lvbk1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBBdWRpb1Nlc3Npb25NYW5hZ2VyJiBzaGFyZWRNYW5hZ2VyKCk7CisKKyAgICBlbnVtIEF1ZGlv
VHlwZSB7CisgICAgICAgIE5vbmUsCisgICAgICAgIFZpZGVvLAorICAgICAgICBBdWRpbywKKyAg
ICAgICAgV2ViQXVkaW8sCisgICAgfTsKKworICAgIGJvb2wgaGFzKEF1ZGlvVHlwZSk7CisKK3By
b3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlclRva2VuOworICAg
IHZvaWQgaW5jcmVtZW50Q291bnQoQXVkaW9UeXBlKTsKKyAgICB2b2lkIGRlY3JlbWVudENvdW50
KEF1ZGlvVHlwZSk7CisgICAgCitwcml2YXRlOgorICAgIEF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsK
KworICAgIHZvaWQgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CisKKyAgICBIYXNoQ291bnRlZFNldDxz
aXplX3Q+IG1fdHlwZUNvdW50OworfTsKKworY2xhc3MgQXVkaW9TZXNzaW9uTWFuYWdlclRva2Vu
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxBdWRpb1Nlc3Npb25NYW5hZ2VyVG9r
ZW4+IGNyZWF0ZShBdWRpb1Nlc3Npb25NYW5hZ2VyOjpBdWRpb1R5cGUpOworICAgIH5BdWRpb1Nl
c3Npb25NYW5hZ2VyVG9rZW4oKTsKKworcHJpdmF0ZToKKyAgICBBdWRpb1Nlc3Npb25NYW5hZ2Vy
VG9rZW4oQXVkaW9TZXNzaW9uTWFuYWdlcjo6QXVkaW9UeXBlKTsKKworICAgIEF1ZGlvU2Vzc2lv
bk1hbmFnZXI6OkF1ZGlvVHlwZSBtX3R5cGU7Cit9OworfQorCisjZW5kaWYgLy8gVVNFKEFVRElP
X1NFU1NJT04pCisKKyNlbmRpZiAvLyBBdWRpb1Nlc3Npb25NYW5hZ2VyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcAppbmRleCAzNGIyODhjMjJhMTZiNzVmZGIzOTRlZWJiYTY2ZjJlZGNlOTVlZTAwLi5hMjcx
NTE5NWZiNTRmNDNlYTE3M2YwNGRjMDNiMDdmMDBhODU1NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbklPUy5oIgogCiAj
aW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTQ1LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3NJT1MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCisjaWYg
VVNFKEFVRElPX1NFU1NJT04pCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjZW5kaWYKKwog
U09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94
LCBBdWRpb0NvbXBvbmVudEZpbmROZXh0LCBBdWRpb0NvbXBvbmVudCwgKEF1ZGlvQ29tcG9uZW50
IGluQ29tcG9uZW50LCBjb25zdCBBdWRpb0NvbXBvbmVudERlc2NyaXB0aW9uICppbkRlc2MpLCAo
aW5Db21wb25lbnQsIGluRGVzYykpCiBTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbXBv
bmVudEluc3RhbmNlRGlzcG9zZSwgT1NTdGF0dXMsIChBdWRpb0NvbXBvbmVudEluc3RhbmNlIGlu
SW5zdGFuY2UpLCAoaW5JbnN0YW5jZSkpCkBAIC04Niw3ICs4OSwxMSBAQCBQYXNzT3duUHRyPEF1
ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
IGNhbGxiYWNrLAogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUo
KQogeworI2lmIFVTRShBVURJT19TRVNTSU9OKQogICAgIHJldHVybiBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlm
CiB9CiAKIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCkK
QEAgLTEwNiw5ICsxMTMsMTEgQEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0aW5hdGlv
bklPUyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBkb3VibGUgc2FtcGwKICAgICAsIG1faXNQ
bGF5aW5nKGZhbHNlKQogICAgICwgbV9pbnRlcnJ1cHRlZE9uUGxheWJhY2soZmFsc2UpCiB7Cisj
aWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgQXVkaW9TZXNzaW9uJiBzZXNzaW9uID0gQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCk7CiAgICAgc2Vzc2lvbi5hZGRMaXN0ZW5lcih0aGlzKTsK
ICAgICBzZXNzaW9uLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kKTsKKyNl
bmRpZgogCiAgICAgYXVkaW9EZXN0aW5hdGlvbnMoKS5hZGQodGhpcyk7CiAgICAgaWYgKGF1ZGlv
RGVzdGluYXRpb25zKCkuc2l6ZSgpID09IDEpCkBAIC0xNTEsOCArMTYwLDEwIEBAIEF1ZGlvRGVz
dGluYXRpb25JT1M6OkF1ZGlvRGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFj
aywgZG91YmxlIHNhbXBsCiBBdWRpb0Rlc3RpbmF0aW9uSU9TOjp+QXVkaW9EZXN0aW5hdGlvbklP
UygpCiB7CiAgICAgYXVkaW9EZXN0aW5hdGlvbnMoKS5yZW1vdmUodGhpcyk7CisjaWYgVVNFKEFV
RElPX1NFU1NJT04pCiAgICAgaWYgKCFhdWRpb0Rlc3RpbmF0aW9ucygpLnNpemUoKSkKICAgICAg
ICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0QWN0aXZlKDApOworI2VuZGlmCiAK
ICAgICBpZiAobV9vdXRwdXRVbml0KQogICAgICAgICBBdWRpb0NvbXBvbmVudEluc3RhbmNlRGlz
cG9zZShtX291dHB1dFVuaXQpOwpAQCAtMTg4LDcgKzE5OSw5IEBAIHZvaWQgQXVkaW9EZXN0aW5h
dGlvbklPUzo6Y29uZmlndXJlKCkKICAgICByZXN1bHQgPSBBdWRpb1VuaXRTZXRQcm9wZXJ0eSht
X291dHB1dFVuaXQsIGtBdWRpb1VuaXRQcm9wZXJ0eV9TdHJlYW1Gb3JtYXQsIGtBdWRpb1VuaXRT
Y29wZV9JbnB1dCwgMCwgKHZvaWQqKSZzdHJlYW1Gb3JtYXQsIHNpemVvZihBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24pKTsKICAgICBBU1NFUlQoIXJlc3VsdCk7CiAKLSAgICBBdWRpb1Nlc3Np
b246OnNoYXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJEdXJhdGlvbihuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KGtQcmVmZXJyZWRCdWZmZXJTaXplIC8gbV9zYW1wbGVSYXRlKSk7CisjaWYg
VVNFKEFVRElPX1NFU1NJT04pCisgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0
UHJlZmVycmVkQnVmZmVyU2l6ZShrUHJlZmVycmVkQnVmZmVyU2l6ZSk7CisjZW5kaWYKIH0KIAog
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAppbmRleCBmMGVl
ZWNhMTk3ODZjMjg0YWU2MzRiOWM3ZWE5MTcyOWQ0OTMzNDJkLi5jN2JmM2ZmNjFkYzg4MDJhMDA0
MDNjMjZlZGIzZDQxMjk0NGRhNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKQEAgLTMyLDE1ICszMiwyMSBA
QAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgi
Ci0jaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQv
QXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgVVNFKEFVRElPX1NF
U1NJT04pCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlv
J3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1Mg
OiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyIHsK
K2NsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbgorI2lm
IFVTRShBVURJT19TRVNTSU9OKQorICAgICwgcHVibGljIEF1ZGlvU2Vzc2lvbkxpc3RlbmVyIHsK
KyNlbmRpZgogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNr
JiwgZG91YmxlIHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25JT1Mo
KTsKQEAgLTUzLDggKzU5LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbmZp
Z3VyZSgpOworCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCiAgICAgdmlydHVhbCB2b2lkIGJlZ2Fu
QXVkaW9JbnRlcnJ1cHRpb24oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kZWRBdWRp
b0ludGVycnVwdGlvbigpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICAvLyBEZWZhdWx0T3V0cHV0
VW5pdCBjYWxsYmFjawogICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRh
dGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBV
SW50MzIgYnVzTnVtYmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCog
aW9EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9TZXNzaW9uSU9TLm1tCmluZGV4IDlmYThlM2JlZDFiYWM3NDliYzcxODZkMDliMjQ2OGQxNTBi
MzM5MGIuLjc5ZTI2MWFhMGY4YTRiODc1Y2Y0Y2U1MjlmZTM1NDY1Yjg0MzJiNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5t
bQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBdWRpb1Nl
c3Npb24uaCIKIAotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYg
UExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CkBAIC0yMDEsMTggKzIwMSwxOSBAQCB2b2lkIEF1ZGlv
U2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIEFTU0VSVCghZXJyb3IpOwogfQog
Ci1mbG9hdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlckR1cmF0aW9uKCkgY29uc3QKK3Np
emVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewotICAgIHJl
dHVybiBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1ZmZlckR1
cmF0aW9uXTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gcHJl
ZmVycmVkSU9CdWZmZXJEdXJhdGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKLXZvaWQgQXVkaW9T
ZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJEdXJhdGlvbihmbG9hdCBkdXJhdGlvbikKK3ZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQog
ewogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVy
U2l6ZSAvIHNhbXBsZVJhdGUoKTsKICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNl
XSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9yOiZlcnJvcl07CiAg
ICAgQVNTRVJUKCFlcnJvcik7CiB9CiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZiAvLyBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwCmluZGV4IGExYTU0YzM4MzJmMjZiZjg0YzQyOGRiZDAyY2U4ZGEwOTRmMTZiOTUuLjUzNDIy
ODVlY2U3Nzk1NGYxMzU5ZDM1MDE4NzJkY2IwMzlmYzFkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAK
QEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgogI2luY2x1ZGUgPENv
cmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+CiAKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyNpbmNs
dWRlICJBdWRpb1Nlc3Npb25NYW5hZ2VyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBpbnQga0J1ZmZlclNpemUgPSAxMjg7CkBAIC02MywyMyArNjcsMTEgQEAgUGFz
c093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9J
T0NhbGxiYWNrJiBjYWxsYmFjaywKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2Ft
cGxlUmF0ZSgpCiB7CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG91dHB1dCBkZXZpY2Un
cyBzYW1wbGUtcmF0ZS4KLSAgICBBdWRpb0RldmljZUlEIGRldmljZUlEID0ga0F1ZGlvRGV2aWNl
VW5rbm93bjsKLSAgICBVSW50MzIgaW5mb1NpemUgPSBzaXplb2YoZGV2aWNlSUQpOwotCi0gICAg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgZGVmYXVsdE91dHB1dERldmljZUFkZHJlc3MgPSB7
IGtBdWRpb0hhcmR3YXJlUHJvcGVydHlEZWZhdWx0T3V0cHV0RGV2aWNlLCBrQXVkaW9PYmplY3RQ
cm9wZXJ0eVNjb3BlR2xvYmFsLCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsK
LSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShrQXVkaW9P
YmplY3RTeXN0ZW1PYmplY3QsICZkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcywgMCwgMCwgJmlu
Zm9TaXplLCAodm9pZCopJmRldmljZUlEKTsKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1
cm4gMDsgLy8gZXJyb3IKLQotICAgIEZsb2F0NjQgbm9taW5hbFNhbXBsZVJhdGU7Ci0gICAgaW5m
b1NpemUgPSBzaXplb2YoRmxvYXQ2NCk7Ci0KLSAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVz
cyBub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5Tm9taW5h
bFNhbXBsZVJhdGUsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVj
dFByb3BlcnR5RWxlbWVudE1hc3RlciB9OwotICAgIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJv
cGVydHlEYXRhKGRldmljZUlELCAmbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzLCAwLCAwLCAmaW5m
b1NpemUsICh2b2lkKikmbm9taW5hbFNhbXBsZVJhdGUpOwotICAgIGlmIChyZXN1bHQpCi0gICAg
ICAgIHJldHVybiAwOyAvLyBlcnJvcgotCi0gICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQobm9taW5hbFNhbXBsZVJhdGUpOworI2lmIFVTRShBVURJT19TRVNTSU9OKQorICAgIHJldHVy
biBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zYW1wbGVSYXRlKCk7CisjZWxzZQorICAg
IHJldHVybiAwOworI2VuZGlmCiB9CiAKIHVuc2lnbmVkIGxvbmcgQXVkaW9EZXN0aW5hdGlvbjo6
bWF4Q2hhbm5lbENvdW50KCkKQEAgLTk3LDYgKzg5LDkgQEAgQXVkaW9EZXN0aW5hdGlvbk1hYzo6
QXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBmbG9hdCBzYW1w
bGUKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga0J1ZmZlclNpemUsIGZh
bHNlKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmco
ZmFsc2UpCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgLCBtX2F1ZGlvU2Vzc2lvbk1hbmFn
ZXJUb2tlbihBdWRpb1Nlc3Npb25NYW5hZ2VyVG9rZW46OmNyZWF0ZShBdWRpb1Nlc3Npb25NYW5h
Z2VyOjpXZWJBdWRpbykpCisjZW5kaWYKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERl
ZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKQEAgLTE0OCwxMSArMTQz
LDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpjb25maWd1cmUoKQogCiAgICAgcmVzdWx0
ID0gQXVkaW9Vbml0U2V0UHJvcGVydHkobV9vdXRwdXRVbml0LCBrQXVkaW9Vbml0UHJvcGVydHlf
U3RyZWFtRm9ybWF0LCBrQXVkaW9Vbml0U2NvcGVfSW5wdXQsIDAsICh2b2lkKikmc3RyZWFtRm9y
bWF0LCBzaXplb2YoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKSk7CiAgICAgQVNTRVJUKCFy
ZXN1bHQpOwotCi0gICAgLy8gU2V0IHRoZSBidWZmZXIgZnJhbWUgc2l6ZS4KLSAgICBVSW50MzIg
YnVmZmVyU2l6ZSA9IGtCdWZmZXJTaXplOwotICAgIHJlc3VsdCA9IEF1ZGlvVW5pdFNldFByb3Bl
cnR5KG1fb3V0cHV0VW5pdCwga0F1ZGlvRGV2aWNlUHJvcGVydHlCdWZmZXJGcmFtZVNpemUsIGtB
dWRpb1VuaXRTY29wZV9PdXRwdXQsIDAsICh2b2lkKikmYnVmZmVyU2l6ZSwgc2l6ZW9mKGJ1ZmZl
clNpemUpKTsKLSAgICBBU1NFUlQoIXJlc3VsdCk7CiB9CiAKIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bk1hYzo6c3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKaW5kZXggMDYyYzk2OWU2OWY2OWQyOGJiNThlY2Jk
YzFhNmUxZjVlM2RjYjVjOS4uOTI4YWFjMDNkMjcwMjkwZmQyNjk5MjNiYWJiMmE2MWY0MjUwNTZi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5oCkBAIC0zMiwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJBdWRpb0J1
cy5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQv
QXVkaW9Vbml0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBdWRpb1Nlc3Npb25NYW5hZ2Vy
VG9rZW47CisKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVs
dCBvdXRwdXQgQXVkaW9Vbml0CiAKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiB7CkBAIC02Myw2ICs2NiwxMCBAQCBwcml2YXRlOgogCiAgICAgZmxv
YXQgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7CisKKyNpZiBVU0UoQVVESU9f
U0VTU0lPTikKKyAgICBPd25QdHI8QXVkaW9TZXNzaW9uTWFuYWdlclRva2VuPiBtX2F1ZGlvU2Vz
c2lvbk1hbmFnZXJUb2tlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9u
TWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45Yjc3MTZhNTUxNDI4NzM2NmI5ZDRhYWJjM2VjNzlmMWFmYzU1
MjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKKyNpZiBVU0UoQVVE
SU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9u
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8Q29yZUF1ZGlvL0F1ZGlvSGFyZHdhcmUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBBdWRpb0RldmljZUlEIGRl
ZmF1bHREZXZpY2UoKQoreworICAgIEF1ZGlvRGV2aWNlSUQgZGV2aWNlSUQgPSBrQXVkaW9EZXZp
Y2VVbmtub3duOworICAgIFVJbnQzMiBpbmZvU2l6ZSA9IHNpemVvZihkZXZpY2VJRCk7CisKKyAg
ICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBkZWZhdWx0T3V0cHV0RGV2aWNlQWRkcmVzcyA9
IHsKKyAgICAgICAga0F1ZGlvSGFyZHdhcmVQcm9wZXJ0eURlZmF1bHRPdXRwdXREZXZpY2UsCisg
ICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsCisgICAgICAgIGtBdWRpb09i
amVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlv
T2JqZWN0R2V0UHJvcGVydHlEYXRhKGtBdWRpb09iamVjdFN5c3RlbU9iamVjdCwgJmRlZmF1bHRP
dXRwdXREZXZpY2VBZGRyZXNzLCAwLCAwLCAmaW5mb1NpemUsICh2b2lkKikmZGV2aWNlSUQpOwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiAwOyAvLyBlcnJvcgorICAgIHJldHVybiBk
ZXZpY2VJRDsKK30KKworY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CitwdWJsaWM6ICAgIAor
fTsKKworQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQorICAgIDogbV9wcml2YXRlKGFkb3B0
UHRyKG5ldyBBdWRpb1Nlc3Npb25Qcml2YXRlKCkpKQoreworfQorCitBdWRpb1Nlc3Npb246On5B
dWRpb1Nlc3Npb24oKQoreworfQorCitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nl
c3Npb246OmNhdGVnb3J5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBOb25lOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlU
eXBlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0F1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTm9uZTsKK30KKwordm9pZCBBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Zsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0Cit7CisgICAg
RmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKKyAgICBVSW50MzIgbm9taW5hbFNhbXBsZVJhdGVT
aXplID0gc2l6ZW9mKEZsb2F0NjQpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
bm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzID0geworICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0
eU5vbWluYWxTYW1wbGVSYXRlLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xv
YmFsLAorICAgICAgICBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKKyAgICBP
U1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNl
KCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIDAsIDAsICZub21pbmFsU2FtcGxlUmF0ZVNp
emUsICh2b2lkKikmbm9taW5hbFNhbXBsZVJhdGUpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNh
bXBsZVJhdGUpOworfQorCitzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
Cit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNv
bnN0Cit7CisgICAgVUludDMyIGJ1ZmZlclNpemU7CisgICAgVUludDMyIGJ1ZmZlclNpemVTaXpl
ID0gc2l6ZW9mKGJ1ZmZlclNpemUpOworCisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
cHJlZmVycmVkQnVmZmVyU2l6ZUFkZHJlc3MgPSB7CisgICAgICAgIGtBdWRpb0RldmljZVByb3Bl
cnR5QnVmZmVyRnJhbWVTaXplUmFuZ2UsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2Nv
cGVHbG9iYWwsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9Owor
ICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKGRlZmF1bHRE
ZXZpY2UoKSwgJnByZWZlcnJlZEJ1ZmZlclNpemVBZGRyZXNzLCAwLCAwLCAmYnVmZmVyU2l6ZVNp
emUsICZidWZmZXJTaXplKTsKKworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBidWZmZXJTaXplOworfQorCit2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3sKKyAgICBBdWRpb1ZhbHVlUmFuZ2Ug
YnVmZmVyU2l6ZVJhbmdlID0gezAsIDB9OworICAgIFVJbnQzMiBidWZmZXJTaXplUmFuZ2VTaXpl
ID0gc2l6ZW9mKEF1ZGlvVmFsdWVSYW5nZSk7CisgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYnVmZmVyU2l6ZVJhbmdlQWRkcmVzcyA9IHsKKyAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVy
dHlCdWZmZXJGcmFtZVNpemVSYW5nZSwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29w
ZUdsb2JhbCwKKyAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyCisgICAg
fTsKKyAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZWZh
dWx0RGV2aWNlKCksICZidWZmZXJTaXplUmFuZ2VBZGRyZXNzLCAwLCAwLCAmYnVmZmVyU2l6ZVJh
bmdlU2l6ZSwgJmJ1ZmZlclNpemVSYW5nZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2l6ZV90IG1pbkJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1
ZmZlclNpemVSYW5nZS5tTWluaW11bSk7CisgICAgc2l6ZV90IG1heEJ1ZmZlclNpemUgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlclNpemVSYW5nZS5tTWF4aW11bSk7CisgICAgVUludDMyIGJ1
ZmZlclNpemVPdXQgPSBzdGQ6Om1pbihtYXhCdWZmZXJTaXplLCBzdGQ6Om1heChtaW5CdWZmZXJT
aXplLCBidWZmZXJTaXplKSk7CisKKyAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBwcmVm
ZXJyZWRCdWZmZXJTaXplQWRkcmVzcyA9IHsKKyAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVydHlC
dWZmZXJGcmFtZVNpemUsCisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWws
CisgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlciB9OworCisgICAgcmVz
dWx0ID0gQXVkaW9PYmplY3RTZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmcHJlZmVy
cmVkQnVmZmVyU2l6ZUFkZHJlc3MsIDAsIDAsIHNpemVvZihidWZmZXJTaXplT3V0KSwgKHZvaWQq
KSZidWZmZXJTaXplT3V0KTsKKworI2lmIExPR19ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOworI2Vsc2UKKyAgICBpZiAocmVzdWx0KQorICAgICAgICBMT0coTWVkaWEsICJBdWRp
b1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSAtIGZhaWxlZCB3aXRoIGVycm9y
ICVkIiwgYnVmZmVyU2l6ZSwgcmVzdWx0KTsKKyAgICBlbHNlCisgICAgICAgIExPRyhNZWRpYSwg
IkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVmZmVyU2l6ZSk7
CisjZW5kaWYKK30KKworfQorCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRG
T1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYW5hZ2VyTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjM4MzhmY2I3ZTM1
MTQ3MmNiNjNlNjhhYjlkN2QxY2Y3Njc5ZWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QXVkaW9TZXNzaW9uTWFuYWdlci5oIgorCisjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRG
T1JNKE1BQykKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1dlYkF1ZGlvQnVmZmVyU2l6ZSA9IDEyODsKK3N0
YXRpYyBjb25zdCBzaXplX3Qga0xvd1Bvd2VyVmlkZW9CdWZmZXJTaXplID0gNDA5ODsKKwordm9p
ZCBBdWRpb1Nlc3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uU3RhdGUoKQoreworICAgIExPRyhN
ZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpIC0gdHlwZXM6
IFZpZGVvKCVkKSwgQXVkaW8oJWQpLCBXZWJBdWRpbyglZCkiLCBtX3R5cGVDb3VudC5jb3VudChW
aWRlbyksIG1fdHlwZUNvdW50LmNvdW50KEF1ZGlvKSwgbV90eXBlQ291bnQuY291bnQoV2ViQXVk
aW8pKTsKKworICAgIGlmIChoYXMoV2ViQXVkaW8pKQorICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUp
OworICAgIGVsc2UgaWYgKGhhcyhWaWRlbykgfHwgaGFzKEF1ZGlvKSkKKyAgICAgICAgQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShrTG93UG93ZXJW
aWRlb0J1ZmZlclNpemUpOworfQorCisjZW5kaWYgLy8gVVNFKEFVRElPX1NFU1NJT04pICYmIFBM
QVRGT1JNKE1BQykK
</data>
<flag name="review"
          id="223676"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>