<?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>92505</bug_id>
          
          <creation_ts>2012-07-27 07:21:40 -0700</creation_ts>
          <short_desc>[DRT] Replace JavaScriptThreadingPthreads.cpp with JavaScriptThreading.cpp</short_desc>
          <delta_ts>2013-05-09 14:41:08 -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>Tools / Tests</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>92371</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>levin+threading</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>680612</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 07:21:40 -0700</bug_when>
    <thetext>[DRT] Replace JavaScriptThreadingPthreads.cpp with JavaScriptThreading.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680616</commentid>
    <comment_count>1</comment_count>
      <attachid>154942</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 07:24:47 -0700</bug_when>
    <thetext>Created attachment 154942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680632</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 07:39:49 -0700</bug_when>
    <thetext>Attachment 154942 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/D...&quot; exit_code: 1
Tools/DumpRenderTree/JavaScriptThreading.cpp:82:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680685</commentid>
    <comment_count>3</comment_count>
      <attachid>154942</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-27 08:30:25 -0700</bug_when>
    <thetext>Comment on attachment 154942
Patch

Attachment 154942 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13380200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680707</commentid>
    <comment_count>4</comment_count>
      <attachid>154963</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-27 08:48:17 -0700</bug_when>
    <thetext>Created attachment 154963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680713</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 09:02:01 -0700</bug_when>
    <thetext>Attachment 154963 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/D...&quot; exit_code: 1
Tools/DumpRenderTree/JavaScriptThreading.cpp:82:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681162</commentid>
    <comment_count>6</comment_count>
      <attachid>154963</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-27 15:35:59 -0700</bug_when>
    <thetext>Comment on attachment 154963
Patch

Could you use svn mv instead of deleting the old file &amp; adding the new file? That way, your change will show up as a diff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>870584</commentid>
    <comment_count>7</comment_count>
      <attachid>196817</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-04-07 18:06:43 -0700</bug_when>
    <thetext>Created attachment 196817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886610</commentid>
    <comment_count>8</comment_count>
      <attachid>196817</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-08 22:57:59 -0700</bug_when>
    <thetext>Comment on attachment 196817
Patch

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

Thanks for working on this -- I&apos;m so excited to almost see PThreads gone on Windows!

Overall I think this looks good, but I have some concerns that these modifications will change behavior.  Of course, perhaps the changes will be for the better -- but I can&apos;t tell based on this bug.

Could you please add more documentation in the bug as to why you changed the flow of the program, and what (if any) changes in behavior should be expected?

I don&apos;t see EWS results for this change, so I can&apos;t assess whether this is safe or not.

For these reasons, I&apos;m marking r- until we clear up some of these questions.

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:99
&gt; +            if (javaScriptThreadsShouldTerminate)

Why is this now protected by a mutex? Reading a boolean should be an atomic operation; did you find this was causing you problems?

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:104
&gt; +        if (rand() % 5)

Why the change from random() to rand()?  Is this just to be compatible between Windows and others?

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:107
&gt; +        MutexLocker locker(javaScriptThreadsMutex());

The logic of the following section seems to change the behavior of the original code.  Previously the flow was:
1. Lock mutex.
2. Create a new thread
3. Place it in the detached state (this could have perhaps been done by using pthread_attr_setdetachstate to setup flags for the pthread_create call.
4. Thread is added to the queue.
5. Unlock mutex.

I like the use of the mutex object to control lifetime, but the logic now seems to be:
1. Lock mutex.
2. Get current running thread, and mark it as detached (presumable it was in a &apos;join&apos; state before?)
3. Remove the current thread from the queue.
4. Create a new thread and add it to the thread queue.
5. (automatically Unlock mutex).

Why the change?  Am I misunderstanding your intent with this change?

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:-109
&gt; -    javaScriptThreads()-&gt;remove(pthread_self());

Oh, I see.  The remove was happening here.

Still, why create the thread in a non-detached state?  I think this could have an impact on the way the tests behave.

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:128
&gt; +        javaScriptThreads().add(createThread(&amp;runJavaScriptThread, 0, 0));

These threads are not in a detached state.  If they terminate early, I don&apos;t think they get cleaned up properly.

&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:135
&gt; +        javaScriptThreadsShouldTerminate = true;

Huh -- I see that we *were* locking to update the boolean here.  Maybe this wasn&apos;t necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886783</commentid>
    <comment_count>9</comment_count>
      <attachid>196817</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-05-09 07:30:28 -0700</bug_when>
    <thetext>Comment on attachment 196817
Patch

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

&gt;&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:99
&gt;&gt; +            if (javaScriptThreadsShouldTerminate)
&gt; 
&gt; Why is this now protected by a mutex? Reading a boolean should be an atomic operation; did you find this was causing you problems?

see other comment

&gt;&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:104
&gt;&gt; +        if (rand() % 5)
&gt; 
&gt; Why the change from random() to rand()?  Is this just to be compatible between Windows and others?

yup, but I can keep random() in a first step if you like

&gt;&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:107
&gt;&gt; +        MutexLocker locker(javaScriptThreadsMutex());
&gt; 
&gt; The logic of the following section seems to change the behavior of the original code.  Previously the flow was:
&gt; 1. Lock mutex.
&gt; 2. Create a new thread
&gt; 3. Place it in the detached state (this could have perhaps been done by using pthread_attr_setdetachstate to setup flags for the pthread_create call.
&gt; 4. Thread is added to the queue.
&gt; 5. Unlock mutex.
&gt; 
&gt; I like the use of the mutex object to control lifetime, but the logic now seems to be:
&gt; 1. Lock mutex.
&gt; 2. Get current running thread, and mark it as detached (presumable it was in a &apos;join&apos; state before?)
&gt; 3. Remove the current thread from the queue.
&gt; 4. Create a new thread and add it to the thread queue.
&gt; 5. (automatically Unlock mutex).
&gt; 
&gt; Why the change?  Am I misunderstanding your intent with this change?

I merged the implementation with http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/win/DumpRenderTree.cpp?rev=149716#L1127, since I find it easier to understand and implement with the WTF threading API.
It might have a different timing, but should fulfill all requirements, for which this code was introduced.

&gt;&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:128
&gt;&gt; +        javaScriptThreads().add(createThread(&amp;runJavaScriptThread, 0, 0));
&gt; 
&gt; These threads are not in a detached state.  If they terminate early, I don&apos;t think they get cleaned up properly.

But we call waitForThreadCompletion() for _all_ threads now, which should take care of cleanup.

&gt;&gt; Tools/DumpRenderTree/JavaScriptThreading.cpp:135
&gt;&gt; +        javaScriptThreadsShouldTerminate = true;
&gt; 
&gt; Huh -- I see that we *were* locking to update the boolean here.  Maybe this wasn&apos;t necessary?

I think so too, but didn&apos;t want to change behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886896</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-09 08:53:18 -0700</bug_when>
    <thetext>Based on paroga&apos;s comments, I think this looks fine.  I wish the EWS had processed this, but we&apos;ll just have to watch the builders and make sure nothing goes wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886897</commentid>
    <comment_count>11</comment_count>
      <attachid>196817</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-09 08:53:59 -0700</bug_when>
    <thetext>Comment on attachment 196817
Patch

After discussing further, I think this change looks good. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886900</commentid>
    <comment_count>12</comment_count>
      <attachid>196817</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-09 09:02:46 -0700</bug_when>
    <thetext>Comment on attachment 196817
Patch

Rejecting attachment 196817 from commit-queue.

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

Last 500 characters of output:
es).
Hunk #7 succeeded at 961 (offset 4 lines).
Hunk #8 succeeded at 983 (offset 4 lines).
Hunk #9 succeeded at 995 (offset 4 lines).
patching file Tools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp
rm &apos;Tools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp&apos;
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

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

Full output: http://webkit-queues.appspot.com/results/431283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886902</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-09 09:03:56 -0700</bug_when>
    <thetext>Bah!  Patrick, can you rebase the patch and submit again?  I&apos;ll r+ it before things drift again.  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886963</commentid>
    <comment_count>14</comment_count>
      <attachid>201254</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-05-09 11:17:54 -0700</bug_when>
    <thetext>Created attachment 201254
Rebased Patch (only for EWS)

I&apos;ll rebased the patch to check it via the EWS, but I&apos;ll land it manually via svn to keep track of the rename in the version history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886967</commentid>
    <comment_count>15</comment_count>
      <attachid>201256</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-05-09 11:20:03 -0700</bug_when>
    <thetext>Created attachment 201256
Rebased Patch (only for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886970</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-09 11:21:11 -0700</bug_when>
    <thetext>Attachment 201256 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj&apos;, u&apos;Tools/DumpRenderTree/JavaScriptThreading.cpp&apos;, u&apos;Tools/DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp&apos;]&quot; exit_code: 1
Tools/DumpRenderTree/JavaScriptThreading.cpp:31:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/DumpRenderTree/JavaScriptThreading.cpp:82:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887089</commentid>
    <comment_count>17</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2013-05-09 14:41:08 -0700</bug_when>
    <thetext>Committed r149843: &lt;http://trac.webkit.org/changeset/149843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154942</attachid>
            <date>2012-07-27 07:24:47 -0700</date>
            <delta_ts>2012-07-27 08:48:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92505-20120727162434.patch</filename>
            <type>text/plain</type>
            <size>31773</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg4OTQ3OGM1Zjg5YTkzMDY4ZTM1YjQ1MGYwNTVlNThi
M2ZiYzgwMi4uOGM4NDk5YmQyMzBlNTM2MzI2Mjc5YjUxMTZjMGRmYmE4MGQ4ZjA2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIFtEUlRdIFJlcGxhY2UgSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCB3
aXRoIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkcyBmcm9t
IHRoZSBmaWxlIGFuZCByZW5hbWUgaXQgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KKyAgICAgICAg
VGhpcyBhbGxvd3MgdXMgdG8gdXNlIGl0IGZvciBEUlQgb24gb3RoZXIgcGxhdGZvcm1zIHRvbyBp
biBhIG5leHQgc3RlcC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvSmF2
YVNjcmlwdFRocmVhZGluZy5jcHA6IEFkZGVkLgorICAgICAgICAoamF2YVNjcmlwdFRocmVhZHNN
dXRleCk6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChydW5KYXZhU2Ny
aXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAo
c3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFk
cy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOiBSZW1vdmVkLgorCiAyMDEyLTA3LTI3
ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTlJXVF0g
c2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVzdHJpY3QgcGl4ZWwgdGVzdHMgZm9yIGluZGl2aWR1YWwg
ZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcyNDlhMDliYzQyNWIy
MTM0Y2I5YTYzMTEzY2YwZjkzMDZmNzVjYWUuLmJmMDRmN2UzMjlkOGY4NTk4ZDc0YmE4ZjYxNDcw
MjM1NmM2OGUwNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4LDcgKzEwOCw2
IEBACiAJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUy
NERGMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQkMwRTI2MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYx
NDBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsK
IAkJQkM0NzQxMkEwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTI5MEQwMzhB
NEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi87IH07Ci0JCUJDNDc0MTQxMEQw
MzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NzQxNDAwRDAzOEE1NzAw
NzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi87IH07CiAJCUJDOUQ5
MDI0MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RDkwMjEwQzk3NDcyRDAwOTlBNEEzIC8qIFdv
cmtRdWV1ZS5jcHAgKi87IH07CiAJCUJDOUQ5MDI1MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5
MDIyMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLzsgfTsKIAkJQkM5RDkwMjYwQzk3
NDcyRTAwOTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIzMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVl
dWVJdGVtLmggKi87IH07CkBAIC0yMTEsOCArMjEwLDggQEAKIAkJCWRzdFBhdGggPSBEdW1wUmVu
ZGVyVHJlZS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0g
KAotCQkJCThDQ0RBODJBMTUxQTcyRDEwMDAzRjkzNyAvKiBTYW1wbGVGb250LnNmb250IGluIENv
cHkgRm9udCBGaWxlcyAqLywKIAkJCQk1REI5QUM5NzBGNzIyQzM2MDA2ODQ2NDEgLyogQUhFTV9f
X18uVFRGIGluIENvcHkgRm9udCBGaWxlcyAqLywKKwkJCQk4Q0NEQTgyQTE1MUE3MkQxMDAwM0Y5
MzcgLyogU2FtcGxlRm9udC5zZm9udCBpbiBDb3B5IEZvbnQgRmlsZXMgKi8sCiAJCQkJNURCOUFD
OTgwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIENvcHkg
Rm9udCBGaWxlcyAqLywKIAkJCQk1REI5QUM5OTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjIwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovLAogCQkJCTVEQjlBQzlBMEY3
MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMzAwLnR0ZiBpbiBDb3B5IEZvbnQg
RmlsZXMgKi8sCkBAIC0yNTcsNiArMjU2LDcgQEAKIAkJMjlDRkJBMEUxMjI3MzZFNjAwQkMzMEMw
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0ZCQTJEMTIy
NzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFj
Lm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyQ0NEODk1RjE1QzJEMUVBMDAyODUwODMgLyogSmF2YVNjcmlw
dFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZh
U2NyaXB0VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNF
QTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91
dFRlc3RIZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4
NzFGOTAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1w
UmVuZGVyVHJlZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA4LDcg
KzMwOCw2IEBACiAJCUJDMEUyNERGMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzBFMjYx
NDBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3Jp
cHRUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlw
dFRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzQ3NDE0MDBEMDM4
QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5j
cHA7IHBhdGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkE0QjEzNjkwNURFMDBCMzVERUQgLyogQ29t
cGlsZXJWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IENv
bXBpbGVyVmVyc2lvbi54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9Db21waWxl
clZlcnNpb24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUQ5MDIx
MEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDOUQ5MDIyMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzc1LDggKzM3NCw4IEBACiAJCQkJMTQxQkY0MzkwOTZBNDU1OTAwRTA3NTNDIC8q
IENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxNDFCRjQzNjA5NkE0NTU5
MDBFMDc1M0MgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMTQxQkY0
MzgwOTZBNDU1OTAwRTA3NTNDIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAotCQkJCTE0MUJGNDM1MDk2QTQ1NTkwMEUwNzUzQyAvKiBXZWJLaXQuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMEYzN0E0QUExMUU2NjI5MTAwMjc1RjU0IC8qIFF1YXJ0
ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxQkY0MzUwOTZBNDU1OTAw
RTA3NTNDIC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM5NCwxMCAr
MzkzLDEwIEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1REU4QUU0NDEzQTJDMTU5
MDBENkEzN0QgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3MgKi8s
CiAJCQkJQUU4MjU5RjMwOEQyMjQ2MzAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlBODRGNjA4QTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJQTgxNzA5MDQwOEIxNjREMzAwQ0NCOUZCIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTVERThBRTQ0MTNB
MkMxNTkwMEQ2QTM3RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQkyM0JDQjg5MDBFQTU3NjIzMDAzQzYyODkgLyogT3BlbkdMLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAogCQkJCTkzNDA5OTUxMDg1NDBDQUUwMDdGM0JDOCAvKiBXZWJLaXQu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpAQCAtNDI3LDggKzQyNiw4IEBACiAJ
CQkJQkNBMThDNDYwQzlCNUI5NDAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlLm1tICovLAogCQkJ
CUE4QjkxQkY3MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmNwcCAqLywKIAkJCQlB
OEI5MUJGOTBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5oICovLAorCQkJCTJDQ0Q4
OTVGMTVDMkQxRUEwMDI4NTA4MyAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCAqLywKIAkJCQlC
QzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovLAotCQkJ
CUJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMu
Y3BwICovLAogCQkJCUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZU1h
Yy5oICovLAogCQkJCUJDQTE4QjczMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZURy
YWdnaW5nSW5mby5oICovLAogCQkJCUJDQTE4Qjc0MEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVu
ZGVyVHJlZURyYWdnaW5nSW5mby5tbSAqLywKQEAgLTQ2MCw4ICs0NTksOCBAQAogCQkJCTE0MUJG
NDQ4MDk2QTQ1QzgwMEUwNzUzQyAvKiBJbmZvLnBsaXN0ICovLAogCQkJCTFBQzZDNzdGMEQwNzU4
OUIwMENEMzE2MSAvKiBtYWluLmNwcCAqLywKIAkJCQkxQUM2Qzc4MDBEMDc1ODlCMDBDRDMxNjEg
LyogUGx1Z2luT2JqZWN0LmNwcCAqLywKLQkJCQkwRjM3QTRBNjExRTY2Mjg3MDAyNzVGNTQgLyog
UGx1Z2luT2JqZWN0TWFjLm1tICovLAogCQkJCTE0MUJGNDQ3MDk2QTQ1QzgwMEUwNzUzQyAvKiBQ
bHVnaW5PYmplY3QuaCAqLywKKwkJCQkwRjM3QTRBNjExRTY2Mjg3MDAyNzVGNTQgLyogUGx1Z2lu
T2JqZWN0TWFjLm1tICovLAogCQkJCTFBMjE1QTdGMTFGMjYwOUMwMDhBRDBGNSAvKiBQbHVnaW5U
ZXN0LmNwcCAqLywKIAkJCQkxQTIxNUE4MDExRjI2MDlDMDA4QUQwRjUgLyogUGx1Z2luVGVzdC5o
ICovLAogCQkJCTFBQzZDNzgxMEQwNzU4OUIwMENEMzE2MSAvKiBUZXN0T2JqZWN0LmNwcCAqLywK
QEAgLTQ3MywxMSArNDcyLDExIEBACiAJCTE0MjJBMjY5MEFGNkY0NTIwMEUxQTg4MyAvKiBDb250
cm9sbGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
ODAwNDVBRUIxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLmggKi8sCi0JCQkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyLm1tICovLAogCQkJCUJDRDA4QjM5MEUxMDU3RUYwMEE3RDBDMSAv
KiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNEMDhBNTgwRTEwNDk2QjAw
QTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8sCiAJCQkJQkNEMDhCNzAwRTEw
NTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovLAorCQkJCTgw
MDQ1QUVCMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5oICovLAorCQkJCTgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlci5tbSAqLywKIAkJCQkyOUNGQkEwRjEyMjczNkU2MDBCQzMwQzAgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAogCQkJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJD
MzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovLAogCQkJCTI5Q0ZCQTJEMTIyNzNB
MTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLywKQEAgLTUyMCwx
MCArNTE5LDEwIEBACiAJCQkJQkNBMThCNUMwQzlCMDhDMjAwMTE0MzY5IC8qIFBvbGljeURlbGVn
YXRlLm1tICovLAogCQkJCUJDQTE4QjVEMEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5oICovLAogCQkJCUJDQTE4QjVFMEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSAqLywKLQkJCQlCQ0ExOEI1RjBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxl
Z2F0ZS5oICovLAotCQkJCUJDQTE4QjYwMEM5QjA4QzIwMDExNDM2OSAvKiBVSURlbGVnYXRlLm1t
ICovLAogCQkJCTNBNTYyNkMwMTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVn
YXRlLmggKi8sCiAJCQkJM0E1NjI2QzExMzFDOEIxNzAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2Vy
RGVsZWdhdGUubW0gKi8sCisJCQkJQkNBMThCNUYwQzlCMDhDMjAwMTE0MzY5IC8qIFVJRGVsZWdh
dGUuaCAqLywKKwkJCQlCQ0ExOEI2MDBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5tbSAq
LywKIAkJCSk7CiAJCQluYW1lID0gRGVsZWdhdGVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTU1NCw5ICs1NTMsOSBAQAogCQkxQTMxRUIzNjEzNDY2QUMxMDAwMTczNzIgLyogbWFj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTY2QzM0
RjE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJCQkJMUEz
MUVCMzcxMzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCiAJCQkJMUExNEM4
QTMxNDA2REUwNDAwQjI1NEY3IC8qIFN1cHBvcnRzQ2FyYm9uRXZlbnRNb2RlbC5jcHAgKi8sCi0J
CQkJMUE2NkMzNEYxNDU3NkE5MjAwOTlBMTE1IC8qIENvbnRlbnRzU2NhbGVGYWN0b3IuY3BwICov
LAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
NTgyLDggKzU4MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzQwOTk1NDA4NTQwQ0FGMDA3
RjNCQzggLyogRHVtcFJlbmRlclRyZWUgKi8sCiAJCQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1
IC8qIEltYWdlRGlmZiAqLywKLQkJCQkxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5l
dHNjYXBlUGx1Z0luLnBsdWdpbiAqLywKIAkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyog
TGF5b3V0VGVzdEhlbHBlciAqLywKKwkJCQkxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVz
dE5ldHNjYXBlUGx1Z0luLnBsdWdpbiAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTkyLDYgKzU5MSw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAv
KiBBSEVNX19fXy5UVEYgKi8sCisJCQkJOENDREE4MUYxNTFBNTY1NTAwMDNGOTM3IC8qIFNhbXBs
ZUZvbnQuc2ZvbnQgKi8sCiAJCQkJMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdl
aWdodFdhdGNoZXIxMDAudHRmICovLAogCQkJCTM3NUYwOTcyMERBQzNDQjYwMEM4QjRFNSAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLywKIAkJCQkzNzVGMDk3MzBEQUMzQ0I2MDBDOEI0
RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjMwMC50dGYgKi8sCkBAIC02MDEsNyArNjAxLDYgQEAK
IAkJCQkzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgKi8sCiAJCQkJMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNo
ZXI4MDAudHRmICovLAogCQkJCTM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyOTAwLnR0ZiAqLywKLQkJCQk4Q0NEQTgxRjE1MUE1NjU1MDAwM0Y5MzcgLyogU2Ft
cGxlRm9udC5zZm9udCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTYwOSwxMSArNjA4LDExIEBACiAJCUE4MDNGRjY0MDlDQUFD
QzEwMDlCMkEzNyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQk1REU4QUU0MzEzQTJDMTU4MDBENkEzN0QgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCUJDQjI4NEIyMENGQTgyQ0IwMDdFNTMzRSAvKiBBcHBs
aWNhdGlvblNlcnZpY2VzLmZyYW1ld29yayAqLywKIAkJCQlBRTgyNTdFRjA4RDIyMzg5MDAwNTA3
QUIgLyogQ2FyYm9uLmZyYW1ld29yayAqLywKIAkJCQlBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYg
LyogQ29jb2EuZnJhbWV3b3JrICovLAogCQkJCUE4MTcwOTAzMDhCMTY0RDMwMENDQjlGQiAvKiBK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkJNURFOEFFNDMxM0EyQzE1ODAwRDZBMzdE
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQkyM0JDQjg4RjBFQTU3NjIz
MDAzQzYyODkgLyogT3BlbkdMLmZyYW1ld29yayAqLywKIAkJCQlCNUE3NTJBMTA4QUY1RDFGMDAx
MzhFNDUgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJOTMzNTQzNUYwM0Q3NTUwMjAw
ODYzNUNFIC8qIFdlYktpdC5mcmFtZXdvcmsgKi8sCkBAIC02ODAsOCArNjc5LDggQEAKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkxNDFCRjQ1MzA5
NkE0NUVCMDBFMDc1M0MgLyogUGx1Z2luT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQThG
MDJFODBCQjlCNEVDMDA4Q0ZBMzQgLyogVGVzdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEyMTVBODIxMUYyNjA5QzAwOEFEMEY1IC8qIFBsdWdpblRlc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFBOEYwMkU4MEJCOUI0RUMwMDhDRkEzNCAvKiBUZXN0T2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTY4OSw2ICs2ODgsOCBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJODAwNDVB
RUQxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyOUNGQkExMDEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEUyNEUwMEUyRDk0NTEwMDFC
NkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Ex
OEIzODBDOUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEI5MUJGRjBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03MDMsOCArNzA0LDEwIEBACiAJCQkJQkNBMThCNkYwQzlCMDhEQjAw
MTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QTE4QjYzMEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3NzBGRTIwQTIyQURGNzAwOTM0MkVFIC8qIEdDQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE4NUY2QjMxMDcxNEUxMjAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0NzQxMkEwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFT
Y3JpcHRUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDEzMURCMEM5NzcyMDEwMDg3
MzE3RCAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFCNzgx
NjcxMUFGMzFDMzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0ExOEI3MTBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTE4QjMxMEM5QjAxQjQwMDExNDM2OSAvKiBPYmpD
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMThCN0QwQzlCMDhGMTAwMTE0MzY5
IC8qIE9iakNQbHVnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtNzEzLDE3ICs3MTYsMTMgQEAKIAkJ
CQlCQ0IyODREMDBDRkE4M0NDMDA3RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydENHLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0ExOEI2NTBDOUIwOEMyMDAxMTQzNjkgLyogUG9saWN5RGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTE4QjY3MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0E1NjI2Q0MxMzFDQTAzNjAwMkJF
NkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTE4
QjNDMEM5QjAyNDkwMDExNDM2OSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0ExOEI2OTBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDQzNzczMEYxMjVDQkM0RDAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE3REFBMUQxMzdCM0UyNDAwN0M1N0ZCIC8qIFdl
YkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5RDkwMjUwQzk3NDcyRTAw
OTlBNEEzIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5RDkwMjYwQzk3NDcy
RTAwOTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGNkIz
MTA3MTRFMTIwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUUxQjc4MTY3MTFBRjMxQzMwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMjlDRkJBMTAxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzQTU2MjZDQzEzMUNBMDM2MDAyQkU2
RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3REFB
MUQxMzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJODAwNDVBRUQxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg3MiwyOSArODcxLDI5IEBACiAJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKLQkJCQkxQUM2Qzg0OTBEMDc2Mzg2MDBDRDMxNjEgLyogbWFpbi5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkxQUM2Qzg0QTBEMDc2Mzg2MDBDRDMxNjEgLyogUGx1Z2luT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBQzZDODRCMEQwNzYzODYwMENEMzE2MSAvKiBU
ZXN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGMzdBNEE3MTFFNjYyODcwMDI3NUY1
NCAvKiBQbHVnaW5PYmplY3RNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQTIxNUE4MTExRjI2
MDlDMDA4QUQwRjUgLyogUGx1Z2luVGVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTY2QzM1
MTE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxQTMxRUIzODEzNDY2QUMxMDAwMTczNzIgLyogQ29udmVydFBvaW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMjE1QkU3MTFGMjc2NTgwMDhBRDBGNSAvKiBEb2N1bWVudE9wZW5J
bkRlc3Ryb3lTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFEOUQyRkUxMjAyODQwOTAw
MUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVOUE9iamVjdEludm9rZURlZmF1bHQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMUFDNzdEQ0YxMjA2MDVCNjAwNUMxOUVGIC8qIE5QUnVudGltZVJlbW92
ZVByb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBMjRCQUE5MTIwNzM0RUUwMEZCQjA1
OSAvKiBOUFJ1bnRpbWVPYmplY3RGcm9tRGVzdHJveWVkUGx1Z2luLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUMwNkY5QUJDMTI2N0E3MDYwMDU4RTFGNiAvKiBQYXNzRGlmZmVyZW50TlBQU3RydWN0
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUMwRUMzQzlDMTI3ODdGMDUwMDkzOTE2NCAvKiBOdWxs
TlBQR2V0VmFsdWVQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTcyMDc1MTI4MUM4
MjgwMDRFRjUzMyAvKiBFdmFsdWF0ZUpTQWZ0ZXJSZW1vdmluZ1BsdWdpbkVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMUFENENCMjIxMkE2RDEzNTAwMjdBN0FGIC8qIEdldFVzZXJBZ2Vu
dFdpdGhOdWxsTlBQRnJvbU5QUE5ldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QUQ2QTExNDEz
QzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBRkY2
NkJDMTM3REVGRDIwMDc5MTY5NiAvKiBHZXRVUkxOb3RpZnlXaXRoVVJMVGhhdEZhaWxzVG9Mb2Fk
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBNUNDMUY1MTM3REQyRUMwMEE1RDdFNyAvKiBHZXRV
UkxXaXRoSmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNFMjhBQTEzMTFE
NzNCMDA1MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0cm95aW5nUGx1Z2luLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFBRDRDQjIyMTJBNkQxMzUwMDI3QTdBRiAvKiBHZXRVc2Vy
QWdlbnRXaXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDNkM4
NDkwRDA3NjM4NjAwQ0QzMTYxIC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRjg5
OEQxMzJFRjQxQzAwRTkxNUQ0IC8qIE5QRGVhbGxvY2F0ZUNhbGxlZEJlZm9yZU5QU2h1dGRvd24u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUEzMUVCMzgxMzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZl
cnRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMxMTgyQjEzNEU0QTJCMDA5MTk3NTcg
LyogTlBQU2V0V2luZG93Q2FsbGVkRHVyaW5nRGVzdHJ1Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMUE1Q0MxRjUxMzdERDJFQzAwQTVEN0U3IC8qIEdldFVSTFdpdGhKYXZhU2NyaXB0VVJM
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBRkY2NkJDMTM3REVGRDIwMDc5MTY5NiAvKiBHZXRV
UkxOb3RpZnlXaXRoVVJMVGhhdEZhaWxzVG9Mb2FkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRB
RDZBMTE0MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMUExNEM4QTUxNDA2REUwNDAwQjI1NEY3IC8qIFN1cHBvcnRzQ2FyYm9uRXZlbnRNb2RlbC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTI0QkFBOTEyMDczNEVFMDBGQkIwNTkgLyogTlBSdW50
aW1lT2JqZWN0RnJvbURlc3Ryb3llZFBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUM3
N0RDRjEyMDYwNUI2MDA1QzE5RUYgLyogTlBSdW50aW1lUmVtb3ZlUHJvcGVydHkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQzBFQzNDOUMxMjc4N0YwNTAwOTM5MTY0IC8qIE51bGxOUFBHZXRWYWx1
ZVBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzA2RjlBQkMxMjY3QTcwNjAwNThFMUY2
IC8qIFBhc3NEaWZmZXJlbnROUFBTdHJ1Y3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDNkM4
NEEwRDA3NjM4NjAwQ0QzMTYxIC8qIFBsdWdpbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjM3QTRBNzExRTY2Mjg3MDAyNzVGNTQgLyogUGx1Z2luT2JqZWN0TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMUFEOUQyRkUxMjAyODQwOTAwMUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVO
UE9iamVjdEludm9rZURlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMTVBODExMUYy
NjA5QzAwOEFEMEY1IC8qIFBsdWdpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRTQy
OTgxNDExNDFDNDAwMzg4NzU4IC8qIFByaXZhdGVCcm93c2luZy5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkxQTY2QzM1MTE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQTE0QzhBNTE0MDZERTA0MDBCMjU0RjcgLyogU3VwcG9ydHND
YXJib25FdmVudE1vZGVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBQzZDODRCMEQwNzYzODYw
MENEMzE2MSAvKiBUZXN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtOTEyLDYgKzkxMSw5
IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMDhCNzEwRTEwNTlE
MjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMw
IC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5Q0ZC
QTJFMTIyNzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJD
MiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNB
MThCMzkwQzlCMDIxOTAwMTE0MzY5IC8qIEFwcGxlU2NyaXB0Q29udHJvbGxlci5tIGluIFNvdXJj
ZXMgKi8sCkBAIC05MjcsOSArOTI5LDEwIEBACiAJCQkJQkNBMThCNjQwQzlCMDhDMjAwMTE0MzY5
IC8qIEZyYW1lTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNkM2NTAwQzk4
RTlDMDAwQUMwNjNFIC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ex
OEIyMzBDOUIwMTRCMDAxMTQzNjkgLyogR0NDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQkM0NzQxNDEwRDAzOEE1NzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmdQdGhy
ZWFkcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RjZCMjEwNzE0RTA3MDA3QUEzOTMgLyog
SGlzdG9yeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEwQzk3NzIwMTAw
ODczMTdEIC8qIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBMYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRp
b25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjcyMEM5QjA4REIwMDExNDM2
OSAvKiBOYXZpZ2F0aW9uQ29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzIw
QzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9sbGVyLm0gaW4gU291cmNlcyAqLywKIAkJCQlC
Q0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2JqQ1BsdWdpbi5tIGluIFNvdXJjZXMgKi8sCkBA
IC05MzksMTggKzk0MiwxMyBAQAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAvKiBQaXhl
bER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYwQzlCMDhDMjAw
MTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjgw
QzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJM0E1NjI2Q0IxMzFDQTAyQTAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI0OTBDOUIwMkM0MDAxMTQzNjkgLyogVGV4dElu
cHV0Q29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNkEwQzlCMDhDMjAwMTE0
MzY5IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDM3NzMwRTEyNUNCQzM2
MDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQ0MDU5MDcxMTI2ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI2MEM5QjAxNUMwMDExNDM2OSAvKiBXb3Jr
UXVldWVJdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUY2QjIxMDcxNEUwNzAwN0FB
MzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUxQjc4MTY1MTFB
RjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTI5Q0ZCQTExMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyOUNGQkEyRTEyMjczQTEwMDBCQzMwQzAgLyogQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkzQTU2MjZDQjEz
MUNBMDJBMDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZh
U2NyaXB0VGhyZWFkaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGIxYWIxNjkwY2I4ZjA0ZTlmNjE0NTQw
ZjU3MzQ3OWI1Njk0ZTgwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
SmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwu
Y29tKQorICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisgKiAgICAgICAgICAgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZSA8cGFyb2dhQHBhcm9nYS5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRUaHJlYWRpbmcuaCIK
KworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3RhdGljIGNvbnN0IHNpemVfdCBq
YXZhU2NyaXB0VGhyZWFkc0NvdW50ID0gNDsKK3N0YXRpYyBib29sIGphdmFTY3JpcHRUaHJlYWRz
U2hvdWxkVGVybWluYXRlOworc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJl
YWRzR3JvdXA7CisKK3N0YXRpYyBNdXRleCYgamF2YVNjcmlwdFRocmVhZHNNdXRleCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RhdGljTXV0ZXgsICgpKTsKKyAgICByZXR1
cm4gc3RhdGljTXV0ZXg7Cit9CisKK3R5cGVkZWYgSGFzaFNldDxUaHJlYWRJZGVudGlmaWVyPiBU
aHJlYWRTZXQ7CitzdGF0aWMgVGhyZWFkU2V0JiBqYXZhU2NyaXB0VGhyZWFkcygpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzLCAo
KSk7CisgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9jaygpKTsKKyAg
ICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24g
ZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJt
aW5hdGUKKy8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNpZGVzIHRv
IHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgordm9pZCBydW5KYXZhU2NyaXB0
VGhyZWFkKHZvaWQqKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHQgPQor
ICAgICAgICAidmFyIGFycmF5ID0gW107IgorICAgICAgICAiZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDI0OyBpKyspIHsiCisgICAgICAgICIgICAgYXJyYXkucHVzaChTdHJpbmcoaSkpOyIKKyAgICAg
ICAgIn0iOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eDsKKyAgICB7CisgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBjdHgg
PSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRzR3JvdXAsIDAp
OworICAgIH0KKworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFJlZjsKKyAgICB7CisgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBzY3Jp
cHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpOworICAgIH0KKwor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJl
ZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7CisgICAgICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7
CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
amF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2YWx1
ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3Vu
dF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kp
CisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2
YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGlmIChqYXZhU2NyaXB0VGhyZWFk
c1Nob3VsZFRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2FsbHkuCisgICAgICAgIGlmIChyYW5kKCkg
JSA1KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhy
ZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBkZXRhY2hUaHJlYWQodGhyZWFkKTsKKyAg
ICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUodGhyZWFkKTsKKyAgICAgICAgamF2YVNj
cmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZydW5KYXZhU2NyaXB0VGhyZWFkLCAwLCAw
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZh
U2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHRSZWYpOwor
ICAgIEpTR2FyYmFnZUNvbGxlY3QoY3R4KTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGN0
eCk7Cit9CisKK3ZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCit7CisgICAgamF2YVNjcmlw
dFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CisKKyAgICBNdXRleExvY2tl
ciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsgKytpKQorICAgICAgICBqYXZhU2NyaXB0
VGhyZWFkcygpLmFkZChjcmVhdGVUaHJlYWQoJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAsIDApKTsK
K30KKwordm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQoreworICAgIHsKKyAgICAgICAgTXV0
ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIGphdmFT
Y3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBWZWN0b3I8
VGhyZWFkSWRlbnRpZmllciwgamF2YVNjcmlwdFRocmVhZHNDb3VudD4gdGhyZWFkczsKKyAgICB7
CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwor
ICAgICAgICBjb3B5VG9WZWN0b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFkcyk7CisgICAg
ICAgIEFTU0VSVCh0aHJlYWRzLnNpemUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7
ICsraSkKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkc1tpXSk7CisKKyAg
ICBqYXZhU2NyaXB0VGhyZWFkcygpLmNsZWFyKCk7CisKKyAgICBKU0NvbnRleHRHcm91cFJlbGVh
c2UoamF2YVNjcmlwdFRocmVhZHNHcm91cCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2NmMwMjBlOTc2NGU5NDRkOGMwODg5ZjRj
NDI1MTlhMGFmZjgzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRo
cmVhZHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwu
Y29tKQotICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LSAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgi
Ci0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLQot
c3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7Ci0KLXN0YXRp
YyBwdGhyZWFkX211dGV4X3QgamF2YVNjcmlwdFRocmVhZHNNdXRleCA9IFBUSFJFQURfTVVURVhf
SU5JVElBTElaRVI7Ci1zdGF0aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0
ZTsKLQotc3RhdGljIGNvbnN0IGludCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50ID0gNDsKLQotdHlw
ZWRlZiBIYXNoU2V0PHB0aHJlYWRfdD4gVGhyZWFkU2V0OwotCi1zdGF0aWMgVGhyZWFkU2V0KiBq
YXZhU2NyaXB0VGhyZWFkcygpCi17Ci0gICAgQVNTRVJUKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygm
amF2YVNjcmlwdFRocmVhZHNNdXRleCkgPT0gRUJVU1kpOwotICAgIHN0YXRpYyBUaHJlYWRTZXQg
c3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Ci0gICAgcmV0dXJuICZzdGF0aWNKYXZhU2NyaXB0VGhy
ZWFkczsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBleGVyY2lzZXMgSlNDIGluIGEgbG9vcCB1bnRp
bCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZQotLy8gYmVjb21lcyB0cnVlIG9yIGl0
IHByb2JhYmlsaXN0aWNhbGx5IGRlY2lkZXMgdG8gc3Bhd24gYSByZXBsYWNlbWVudCB0aHJlYWQg
YW5kIGV4aXQuCi12b2lkKiBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqIGFyZykKLXsKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2NyaXB0ID0KLSAgICAgICAgInZhciBhcnJheSA9IFtd
OyIKLSAgICAgICAgImZvciAodmFyIGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7IgotICAgICAgICAi
ICAgIGFycmF5LnB1c2goU3RyaW5nKGkpKTsiCi0gICAgICAgICJ9IjsKLQotICAgIHB0aHJlYWRf
bXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNHbG9iYWxDb250ZXh0
UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2YVNjcmlwdFRocmVhZHNH
cm91cCwgMCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOwotCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsK
LSAgICBKU1N0cmluZ1JlZiBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhzY3JpcHQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011
dGV4KTsKLQotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2
YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsK
LSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2Vw
dGlvbik7Ci0gICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICAgICAgcHRocmVhZF9tdXRl
eF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgICAgIHB0aHJlYWRfbXV0
ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgIHNpemVfdCB2YWx1ZXND
b3VudCA9IDEwMjQ7Ci0gICAgICAgIEpTVmFsdWVSZWYgdmFsdWVzW3ZhbHVlc0NvdW50XTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXNDb3VudDsgKytpKQotICAgICAgICAg
ICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwgMCk7Ci0gICAgICAgIHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgICAgICAvLyBDaGVj
ayBmb3IgY2FuY2VsbGF0aW9uLgotICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRU
ZXJtaW5hdGUpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgLy8gUmVzcGF3biBw
cm9iYWJpbGlzdGljYWxseS4KLSAgICAgICAgaWYgKHJhbmRvbSgpICUgNSA9PSAwKSB7Ci0gICAg
ICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAg
ICAgICAgICAgcHRocmVhZF90IHB0aHJlYWQ7Ci0gICAgICAgICAgICBwdGhyZWFkX2NyZWF0ZSgm
cHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOwotICAgICAgICAgICAgcHRocmVh
ZF9kZXRhY2gocHRocmVhZCk7Ci0gICAgICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5hZGQo
cHRocmVhZCk7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRo
cmVhZHNNdXRleCk7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LWRvbmU6Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsK
LSAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0UmVmKTsKLSAgICBKU0dhcmJhZ2VDb2xsZWN0KGN0
eCk7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwotICAgIGphdmFTY3JpcHRUaHJl
YWRzKCktPnJlbW92ZShwdGhyZWFkX3NlbGYoKSk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2so
JmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIHN0YXJ0
SmF2YVNjcmlwdFRocmVhZHMoKQotewotICAgIGphdmFTY3JpcHRUaHJlYWRzR3JvdXAgPSBKU0Nv
bnRleHRHcm91cENyZWF0ZSgpOwotCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0
VGhyZWFkc011dGV4KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVh
ZHNDb3VudDsgaSsrKSB7Ci0gICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOwotICAgICAgICBwdGhy
ZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOwotICAgICAg
ICBwdGhyZWFkX2RldGFjaChwdGhyZWFkKTsKLSAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+
YWRkKHB0aHJlYWQpOwotICAgIH0KLQotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KTsKLX0KLQotdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQotewot
ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICBq
YXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7Ci0KLSAgICBwdGhyZWFkX211
dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwot
ICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhyZWFkcygpLT5zaXplKCk7Ci0g
ICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQot
ICAgICAgICBpZiAoIXRocmVhZENvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
dXNsZWVwKDEwMDApOwotICAgIH0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154963</attachid>
            <date>2012-07-27 08:48:17 -0700</date>
            <delta_ts>2013-04-07 18:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92505-20120727174804.patch</filename>
            <type>text/plain</type>
            <size>32979</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzODY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDg4OTQ3OGM1Zjg5YTkzMDY4ZTM1YjQ1MGYwNTVlNThi
M2ZiYzgwMi4uOGM4NDk5YmQyMzBlNTM2MzI2Mjc5YjUxMTZjMGRmYmE4MGQ4ZjA2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDEyLTA3LTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIFtEUlRdIFJlcGxhY2UgSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCB3
aXRoIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgZGVwZW5kZW5jeSBvbiBwdGhyZWFkcyBmcm9t
IHRoZSBmaWxlIGFuZCByZW5hbWUgaXQgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KKyAgICAgICAg
VGhpcyBhbGxvd3MgdXMgdG8gdXNlIGl0IGZvciBEUlQgb24gb3RoZXIgcGxhdGZvcm1zIHRvbyBp
biBhIG5leHQgc3RlcC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvSmF2
YVNjcmlwdFRocmVhZGluZy5jcHA6IEFkZGVkLgorICAgICAgICAoamF2YVNjcmlwdFRocmVhZHNN
dXRleCk6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChydW5KYXZhU2Ny
aXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAo
c3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFk
cy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOiBSZW1vdmVkLgorCiAyMDEyLTA3LTI3
ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTlJXVF0g
c2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVzdHJpY3QgcGl4ZWwgdGVzdHMgZm9yIGluZGl2aWR1YWwg
ZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcyNDlhMDliYzQyNWIy
MTM0Y2I5YTYzMTEzY2YwZjkzMDZmNzVjYWUuLjAwNzVhNTcxM2I2ZTBlN2UxN2ViOGY5MjRiOWFj
ZTBhYmMwZmZiZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTYsNiArNTYsNyBA
QAogCQkyOUNGQkExMDEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTBF
MTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovOyB9OwogCQky
OUNGQkExMTEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMEYxMjI3
MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKIAkJMjlD
RkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3
M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OworCQky
Q0EyMjc1QzE1QzJFRjE4MDAwQzdCRDUgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0NEODk1RjE1QzJEMUVB
MDAyODUwODMgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi87IH07CiAJCTJENDAzRjA1MTUw
ODcxRjkwMDUzNThEMiAvKiBDYXJib24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUU4MjU3RUYwOEQyMjM4OTAwMDUwN0FCIC8qIENh
cmJvbi5mcmFtZXdvcmsgKi87IH07CiAJCTJENDAzRjA2MTUwODcxRjkwMDUzNThEMiAvKiBDb2Nv
YS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3b3JrICovOyB9Owog
CQkyRDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIzQkNCODhGMEVBNTc2MjMw
MDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OwpAQCAtMTA4LDcgKzEwOSw2IEBACiAJ
CUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMEUyNERGMEUy
RDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkMw
RTI2MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRB
NEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsKIAkJQkM0
NzQxMkEwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTI5MEQwMzhBNEMwMDcy
QjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggKi87IH07Ci0JCUJDNDc0MTQxMEQwMzhBNTcw
MDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NzQxNDAwRDAzOEE1NzAwNzJCMDA2
IC8qIEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi87IH07CiAJCUJDOUQ5MDI0MEM5
NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5RDkwMjEwQzk3NDcyRDAwOTlBNEEzIC8qIFdvcmtRdWV1
ZS5jcHAgKi87IH07CiAJCUJDOUQ5MDI1MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIyMEM5
NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLzsgfTsKIAkJQkM5RDkwMjYwQzk3NDcyRTAw
OTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIzMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWVJdGVt
LmggKi87IH07CkBAIC0yMTEsOCArMjExLDggQEAKIAkJCWRzdFBhdGggPSBEdW1wUmVuZGVyVHJl
ZS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAotCQkJ
CThDQ0RBODJBMTUxQTcyRDEwMDAzRjkzNyAvKiBTYW1wbGVGb250LnNmb250IGluIENvcHkgRm9u
dCBGaWxlcyAqLywKIAkJCQk1REI5QUM5NzBGNzIyQzM2MDA2ODQ2NDEgLyogQUhFTV9fX18uVFRG
IGluIENvcHkgRm9udCBGaWxlcyAqLywKKwkJCQk4Q0NEQTgyQTE1MUE3MkQxMDAwM0Y5MzcgLyog
U2FtcGxlRm9udC5zZm9udCBpbiBDb3B5IEZvbnQgRmlsZXMgKi8sCiAJCQkJNURCOUFDOTgwRjcy
MkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIENvcHkgRm9udCBG
aWxlcyAqLywKIAkJCQk1REI5QUM5OTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0
Y2hlcjIwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovLAogCQkJCTVEQjlBQzlBMEY3MjJDMzYw
MDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMg
Ki8sCkBAIC0yNTcsNiArMjU3LDcgQEAKIAkJMjlDRkJBMEUxMjI3MzZFNjAwQkMzMEMwIC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI5Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0ZCQTJEMTIyNzNBMTAw
MEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBw
YXRoID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQ0NEODk1RjE1QzJEMUVBMDAyODUwODMgLyogSmF2YVNjcmlwdFRocmVh
ZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0
VGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4
NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5vYmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RI
ZWxwZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAw
NTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBEdW1wUmVuZGVy
VHJlZVByZWZpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1wUmVuZGVy
VHJlZVByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzA4LDcgKzMwOSw2
IEBACiAJCUJDMEUyNERGMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzBFMjYxNDBFMkRB
NEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07
IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJl
YWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFRocmVh
ZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzQ3NDE0MDBEMDM4QTU3MDA3
MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA7IHBh
dGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkE0QjEzNjkwNURFMDBCMzVERUQgLyogQ29tcGlsZXJW
ZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IENvbXBpbGVy
VmVyc2lvbi54Y2NvbmZpZzsgcGF0aCA9IG1hYy9Db25maWd1cmF0aW9ucy9Db21waWxlclZlcnNp
b24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUQ5MDIxMEM5NzQ3
MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
OUQ5MDIyMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzc1LDggKzM3NSw4IEBACiAJCQkJMTQxQkY0MzkwOTZBNDU1OTAwRTA3NTNDIC8qIENhcmJv
bi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxNDFCRjQzNjA5NkE0NTU5MDBFMDc1
M0MgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMTQxQkY0MzgwOTZB
NDU1OTAwRTA3NTNDIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAotCQkJCTE0MUJGNDM1MDk2QTQ1NTkwMEUwNzUzQyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJMEYzN0E0QUExMUU2NjI5MTAwMjc1RjU0IC8qIFF1YXJ0ekNvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJMTQxQkY0MzUwOTZBNDU1OTAwRTA3NTND
IC8qIFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM5NCwxMCArMzk0LDEw
IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk1REU4QUU0NDEzQTJDMTU5MDBENkEz
N0QgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
QUU4MjU5RjMwOEQyMjQ2MzAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQlBODRGNjA4QTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJQTgxNzA5MDQwOEIxNjREMzAwQ0NCOUZCIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTVERThBRTQ0MTNBMkMxNTkw
MEQ2QTM3RCAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywK
IAkJCQkyM0JDQjg5MDBFQTU3NjIzMDAzQzYyODkgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJCTkzNDA5OTUxMDg1NDBDQUUwMDdGM0JDOCAvKiBXZWJLaXQuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwpAQCAtNDI3LDggKzQyNyw4IEBACiAJCQkJQkNB
MThDNDYwQzlCNUI5NDAwMTE0MzY5IC8qIER1bXBSZW5kZXJUcmVlLm1tICovLAogCQkJCUE4Qjkx
QkY3MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmNwcCAqLywKIAkJCQlBOEI5MUJG
OTBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5oICovLAorCQkJCTJDQ0Q4OTVGMTVD
MkQxRUEwMDI4NTA4MyAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCAqLywKIAkJCQlCQzQ3NDEy
OTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovLAotCQkJCUJDNDc0
MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwICov
LAogCQkJCUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZU1hYy5oICov
LAogCQkJCUJDQTE4QjczMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdnaW5n
SW5mby5oICovLAogCQkJCUJDQTE4Qjc0MEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mby5tbSAqLywKQEAgLTQ2MCw4ICs0NjAsOCBAQAogCQkJCTE0MUJGNDQ4MDk2
QTQ1QzgwMEUwNzUzQyAvKiBJbmZvLnBsaXN0ICovLAogCQkJCTFBQzZDNzdGMEQwNzU4OUIwMENE
MzE2MSAvKiBtYWluLmNwcCAqLywKIAkJCQkxQUM2Qzc4MDBEMDc1ODlCMDBDRDMxNjEgLyogUGx1
Z2luT2JqZWN0LmNwcCAqLywKLQkJCQkwRjM3QTRBNjExRTY2Mjg3MDAyNzVGNTQgLyogUGx1Z2lu
T2JqZWN0TWFjLm1tICovLAogCQkJCTE0MUJGNDQ3MDk2QTQ1QzgwMEUwNzUzQyAvKiBQbHVnaW5P
YmplY3QuaCAqLywKKwkJCQkwRjM3QTRBNjExRTY2Mjg3MDAyNzVGNTQgLyogUGx1Z2luT2JqZWN0
TWFjLm1tICovLAogCQkJCTFBMjE1QTdGMTFGMjYwOUMwMDhBRDBGNSAvKiBQbHVnaW5UZXN0LmNw
cCAqLywKIAkJCQkxQTIxNUE4MDExRjI2MDlDMDA4QUQwRjUgLyogUGx1Z2luVGVzdC5oICovLAog
CQkJCTFBQzZDNzgxMEQwNzU4OUIwMENEMzE2MSAvKiBUZXN0T2JqZWN0LmNwcCAqLywKQEAgLTQ3
MywxMSArNDczLDExIEBACiAJCTE0MjJBMjY5MEFGNkY0NTIwMEUxQTg4MyAvKiBDb250cm9sbGVy
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJODAwNDVB
RUIxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgg
Ki8sCi0JCQkJODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tICovLAogCQkJCUJDRDA4QjM5MEUxMDU3RUYwMEE3RDBDMSAvKiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNEMDhBNTgwRTEwNDk2QjAwQTdEMEMx
IC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmggKi8sCiAJCQkJQkNEMDhCNzAwRTEwNTlEMjAw
QTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tICovLAorCQkJCTgwMDQ1QUVC
MTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oICov
LAorCQkJCTgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSAqLywKIAkJCQkyOUNGQkEwRjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuY3BwICovLAogCQkJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAv
KiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovLAogCQkJCTI5Q0ZCQTJEMTIyNzNBMTAwMEJD
MzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLywKQEAgLTUyMCwxMCArNTIw
LDEwIEBACiAJCQkJQkNBMThCNUMwQzlCMDhDMjAwMTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1t
ICovLAogCQkJCUJDQTE4QjVEMEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oICovLAogCQkJCUJDQTE4QjVFMEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSAqLywKLQkJCQlCQ0ExOEI1RjBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5o
ICovLAotCQkJCUJDQTE4QjYwMEM5QjA4QzIwMDExNDM2OSAvKiBVSURlbGVnYXRlLm1tICovLAog
CQkJCTNBNTYyNkMwMTMxQzhCMTcwMDJCRTZEOSAvKiBTdG9yYWdlVHJhY2tlckRlbGVnYXRlLmgg
Ki8sCiAJCQkJM0E1NjI2QzExMzFDOEIxNzAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2VyRGVsZWdh
dGUubW0gKi8sCisJCQkJQkNBMThCNUYwQzlCMDhDMjAwMTE0MzY5IC8qIFVJRGVsZWdhdGUuaCAq
LywKKwkJCQlCQ0ExOEI2MDBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5tbSAqLywKIAkJ
CSk7CiAJCQluYW1lID0gRGVsZWdhdGVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTU1NCw5ICs1NTQsOSBAQAogCQkxQTMxRUIzNjEzNDY2QUMxMDAwMTczNzIgLyogbWFjICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTY2QzM0RjE0NTc2
QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJCQkJMUEzMUVCMzcx
MzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCiAJCQkJMUExNEM4QTMxNDA2
REUwNDAwQjI1NEY3IC8qIFN1cHBvcnRzQ2FyYm9uRXZlbnRNb2RlbC5jcHAgKi8sCi0JCQkJMUE2
NkMzNEYxNDU3NkE5MjAwOTlBMTE1IC8qIENvbnRlbnRzU2NhbGVGYWN0b3IuY3BwICovLAogCQkJ
KTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTgyLDgg
KzU4Miw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzQwOTk1NDA4NTQwQ0FGMDA3RjNCQzgg
LyogRHVtcFJlbmRlclRyZWUgKi8sCiAJCQkJQjVBNzUyNjcwOEFGNEE0QTAwMTM4RTQ1IC8qIElt
YWdlRGlmZiAqLywKLQkJCQkxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5ldHNjYXBl
UGx1Z0luLnBsdWdpbiAqLywKIAkJCQkyRDQwM0YxOTE1MDg3MUY5MDA1MzU4RDIgLyogTGF5b3V0
VGVzdEhlbHBlciAqLywKKwkJCQkxNDFCRjIzMzA5NkE0NENGMDBFMDc1M0MgLyogVGVzdE5ldHNj
YXBlUGx1Z0luLnBsdWdpbiAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTkyLDYgKzU5Miw3IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVN
X19fXy5UVEYgKi8sCisJCQkJOENDREE4MUYxNTFBNTY1NTAwMDNGOTM3IC8qIFNhbXBsZUZvbnQu
c2ZvbnQgKi8sCiAJCQkJMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXIxMDAudHRmICovLAogCQkJCTM3NUYwOTcyMERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLywKIAkJCQkzNzVGMDk3MzBEQUMzQ0I2MDBDOEI0RTUgLyog
V2ViS2l0V2VpZ2h0V2F0Y2hlcjMwMC50dGYgKi8sCkBAIC02MDEsNyArNjAyLDYgQEAKIAkJCQkz
NzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi8s
CiAJCQkJMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAu
dHRmICovLAogCQkJCTM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiAqLywKLQkJCQk4Q0NEQTgxRjE1MUE1NjU1MDAwM0Y5MzcgLyogU2FtcGxlRm9u
dC5zZm9udCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTYwOSwxMSArNjA5LDExIEBACiAJCUE4MDNGRjY0MDlDQUFDQzEwMDlC
MkEzNyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk1REU4QUU0MzEzQTJDMTU4MDBENkEzN0QgLyogbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliICovLAogCQkJCUJDQjI4NEIyMENGQTgyQ0IwMDdFNTMzRSAvKiBBcHBsaWNhdGlv
blNlcnZpY2VzLmZyYW1ld29yayAqLywKIAkJCQlBRTgyNTdFRjA4RDIyMzg5MDAwNTA3QUIgLyog
Q2FyYm9uLmZyYW1ld29yayAqLywKIAkJCQlBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29j
b2EuZnJhbWV3b3JrICovLAogCQkJCUE4MTcwOTAzMDhCMTY0RDMwMENDQjlGQiAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkJNURFOEFFNDMxM0EyQzE1ODAwRDZBMzdEIC8qIGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQkyM0JDQjg4RjBFQTU3NjIzMDAzQzYy
ODkgLyogT3BlbkdMLmZyYW1ld29yayAqLywKIAkJCQlCNUE3NTJBMTA4QUY1RDFGMDAxMzhFNDUg
LyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi8sCiAJCQkJOTMzNTQzNUYwM0Q3NTUwMjAwODYzNUNF
IC8qIFdlYktpdC5mcmFtZXdvcmsgKi8sCkBAIC02ODAsOCArNjgwLDggQEAKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkxNDFCRjQ1MzA5NkE0NUVC
MDBFMDc1M0MgLyogUGx1Z2luT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQThGMDJFODBC
QjlCNEVDMDA4Q0ZBMzQgLyogVGVzdE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMTVB
ODIxMUYyNjA5QzAwOEFEMEY1IC8qIFBsdWdpblRlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTFB
OEYwMkU4MEJCOUI0RUMwMDhDRkEzNCAvKiBUZXN0T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTY4OSw2ICs2ODksOCBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJODAwNDVBRUQxNDc3
MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyOUNGQkExMDEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEUyNEUwMEUyRDk0NTEwMDFCNkJDMiAv
KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ExOEIzODBD
OUIwMjE5MDAxMTQzNjkgLyogQXBwbGVTY3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEI5MUJGRjBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MDMsOCArNzA1LDEwIEBACiAJCQkJQkNBMThCNkYwQzlCMDhEQjAwMTE0MzY5
IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTE4QjYz
MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQ3NzBGRTIwQTIyQURGNzAwOTM0MkVFIC8qIEdDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE4NUY2QjMxMDcxNEUxMjAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM0NzQxMkEwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRU
aHJlYWRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDEzMURCMEM5NzcyMDEwMDg3MzE3RCAv
KiBMYXlvdXRUZXN0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFCNzgxNjcxMUFG
MzFDMzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0ExOEI3MTBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQTE4QjMxMEM5QjAxQjQwMDExNDM2OSAvKiBPYmpDQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBMThCN0QwQzlCMDhGMTAwMTE0MzY5IC8qIE9i
akNQbHVnaW4uaCBpbiBIZWFkZXJzICovLApAQCAtNzEzLDE3ICs3MTcsMTMgQEAKIAkJCQlCQ0Iy
ODREMDBDRkE4M0NDMDA3RTUzM0UgLyogUGl4ZWxEdW1wU3VwcG9ydENHLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0ExOEI2NTBDOUIwOEMyMDAxMTQzNjkgLyogUG9saWN5RGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQTE4QjY3MEM5QjA4QzIwMDExNDM2OSAvKiBSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJM0E1NjI2Q0MxMzFDQTAzNjAwMkJFNkQ5IC8q
IFN0b3JhZ2VUcmFja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTE4QjNDMEM5
QjAyNDkwMDExNDM2OSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0ExOEI2OTBDOUIwOEMyMDAxMTQzNjkgLyogVUlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDQzNzczMEYxMjVDQkM0RDAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDE3REFBMUQxMzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVU
ZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5RDkwMjUwQzk3NDcyRTAwOTlBNEEz
IC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5RDkwMjYwQzk3NDcyRTAwOTlB
NEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGNkIzMTA3MTRF
MTIwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQjc4
MTY3MTFBRjMxQzMwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMjlDRkJBMTAxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkzQTU2MjZDQzEzMUNBMDM2MDAyQkU2RDkgLyog
U3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE3REFBMUQxMzdC
M0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
ODAwNDVBRUQxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg3MiwyOSArODcyLDI5IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKLQkJCQkxQUM2Qzg0OTBEMDc2Mzg2MDBDRDMxNjEgLyogbWFpbi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkxQUM2Qzg0QTBEMDc2Mzg2MDBDRDMxNjEgLyogUGx1Z2luT2JqZWN0LmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTFBQzZDODRCMEQwNzYzODYwMENEMzE2MSAvKiBUZXN0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGMzdBNEE3MTFFNjYyODcwMDI3NUY1NCAvKiBQ
bHVnaW5PYmplY3RNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxQTIxNUE4MTExRjI2MDlDMDA4
QUQwRjUgLyogUGx1Z2luVGVzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTY2QzM1MTE0NTc2
QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxQTMxRUIzODEzNDY2QUMxMDAwMTczNzIgLyogQ29udmVydFBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMjE1QkU3MTFGMjc2NTgwMDhBRDBGNSAvKiBEb2N1bWVudE9wZW5JbkRlc3Ry
b3lTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUFEOUQyRkUxMjAyODQwOTAwMUE3MEQx
IC8qIFBsdWdpblNjcmlwdGFibGVOUE9iamVjdEludm9rZURlZmF1bHQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMUFDNzdEQ0YxMjA2MDVCNjAwNUMxOUVGIC8qIE5QUnVudGltZVJlbW92ZVByb3Bl
cnR5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBMjRCQUE5MTIwNzM0RUUwMEZCQjA1OSAvKiBO
UFJ1bnRpbWVPYmplY3RGcm9tRGVzdHJveWVkUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUMwNkY5QUJDMTI2N0E3MDYwMDU4RTFGNiAvKiBQYXNzRGlmZmVyZW50TlBQU3RydWN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUMwRUMzQzlDMTI3ODdGMDUwMDkzOTE2NCAvKiBOdWxsTlBQR2V0
VmFsdWVQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwRTcyMDc1MTI4MUM4MjgwMDRF
RjUzMyAvKiBFdmFsdWF0ZUpTQWZ0ZXJSZW1vdmluZ1BsdWdpbkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMUFENENCMjIxMkE2RDEzNTAwMjdBN0FGIC8qIEdldFVzZXJBZ2VudFdpdGhO
dWxsTlBQRnJvbU5QUE5ldy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QUQ2QTExNDEzQzgxMjQw
MDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBRkY2NkJDMTM3
REVGRDIwMDc5MTY5NiAvKiBHZXRVUkxOb3RpZnlXaXRoVVJMVGhhdEZhaWxzVG9Mb2FkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTFBNUNDMUY1MTM3REQyRUMwMEE1RDdFNyAvKiBHZXRVUkxXaXRo
SmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNFMjhBQTEzMTFENzNCMDA1
MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0cm95aW5nUGx1Z2luLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTFBRDRDQjIyMTJBNkQxMzUwMDI3QTdBRiAvKiBHZXRVc2VyQWdlbnRX
aXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDNkM4NDkwRDA3
NjM4NjAwQ0QzMTYxIC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDRjg5OEQxMzJF
RjQxQzAwRTkxNUQ0IC8qIE5QRGVhbGxvY2F0ZUNhbGxlZEJlZm9yZU5QU2h1dGRvd24uY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMUEzMUVCMzgxMzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2lu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDMxMTgyQjEzNEU0QTJCMDA5MTk3NTcgLyogTlBQ
U2V0V2luZG93Q2FsbGVkRHVyaW5nRGVzdHJ1Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MUE1Q0MxRjUxMzdERDJFQzAwQTVEN0U3IC8qIEdldFVSTFdpdGhKYXZhU2NyaXB0VVJMLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTFBRkY2NkJDMTM3REVGRDIwMDc5MTY5NiAvKiBHZXRVUkxOb3Rp
ZnlXaXRoVVJMVGhhdEZhaWxzVG9Mb2FkLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBRDZBMTE0
MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUEx
NEM4QTUxNDA2REUwNDAwQjI1NEY3IC8qIFN1cHBvcnRzQ2FyYm9uRXZlbnRNb2RlbC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQTI0QkFBOTEyMDczNEVFMDBGQkIwNTkgLyogTlBSdW50aW1lT2Jq
ZWN0RnJvbURlc3Ryb3llZFBsdWdpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUM3N0RDRjEy
MDYwNUI2MDA1QzE5RUYgLyogTlBSdW50aW1lUmVtb3ZlUHJvcGVydHkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQzBFQzNDOUMxMjc4N0YwNTAwOTM5MTY0IC8qIE51bGxOUFBHZXRWYWx1ZVBvaW50
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzA2RjlBQkMxMjY3QTcwNjAwNThFMUY2IC8qIFBh
c3NEaWZmZXJlbnROUFBTdHJ1Y3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFDNkM4NEEwRDA3
NjM4NjAwQ0QzMTYxIC8qIFBsdWdpbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjM3
QTRBNzExRTY2Mjg3MDAyNzVGNTQgLyogUGx1Z2luT2JqZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMUFEOUQyRkUxMjAyODQwOTAwMUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVOUE9iamVj
dEludm9rZURlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUEyMTVBODExMUYyNjA5QzAw
OEFEMEY1IC8qIFBsdWdpblRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRTQyOTgxNDEx
NDFDNDAwMzg4NzU4IC8qIFByaXZhdGVCcm93c2luZy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkx
QTY2QzM1MTE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkxQTE0QzhBNTE0MDZERTA0MDBCMjU0RjcgLyogU3VwcG9ydHNDYXJib25F
dmVudE1vZGVsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBQzZDODRCMEQwNzYzODYwMENEMzE2
MSAvKiBUZXN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtOTEyLDYgKzkxMiw5IEBACiAJ
CQlmaWxlcyA9ICgKIAkJCQlCQ0QwOEIzQTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEMDhCNzEwRTEwNTlEMjAwQTdE
MEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjlDRkJBMTExMjI3MzZFNjAwQkMzMEMwIC8qIEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI5Q0ZCQTJFMTIy
NzNBMTAwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMEUyNEUxMEUyRDk0NTEwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMiAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMzkw
QzlCMDIxOTAwMTE0MzY5IC8qIEFwcGxlU2NyaXB0Q29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8s
CkBAIC05MjcsOSArOTMwLDExIEBACiAJCQkJQkNBMThCNjQwQzlCMDhDMjAwMTE0MzY5IC8qIEZy
YW1lTG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNkM2NTAwQzk4RTlDMDAw
QUMwNjNFIC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyMzBD
OUIwMTRCMDAxMTQzNjkgLyogR0NDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QkM0NzQxNDEwRDAzOEE1NzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTg1RjZCMjEwNzE0RTA3MDA3QUEzOTMgLyogSGlzdG9y
eURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkNBMjI3NUMxNUMyRUYxODAwMEM3QkQ1
IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEw
Qzk3NzIwMTAwODczMTdEIC8qIExheW91dFRlc3RDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBMYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjcyMEM5QjA4
REIwMDExNDM2OSAvKiBOYXZpZ2F0aW9uQ29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMThCMzIwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9sbGVyLm0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEI3RTBDOUIwOEYxMDAxMTQzNjkgLyogT2JqQ1BsdWdpbi5tIGluIFNvdXJj
ZXMgKi8sCkBAIC05MzksMTggKzk0NCwxMyBAQAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMz
RSAvKiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYw
QzlCMDhDMjAwMTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMThCNjgwQzlCMDhDMjAwMTE0MzY5IC8qIFJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJM0E1NjI2Q0IxMzFDQTAyQTAwMkJFNkQ5IC8qIFN0b3JhZ2VUcmFja2Vy
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI0OTBDOUIwMkM0MDAxMTQzNjkg
LyogVGV4dElucHV0Q29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNkEwQzlC
MDhDMjAwMTE0MzY5IC8qIFVJRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NDM3NzMw
RTEyNUNCQzM2MDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ0MDU5MDcxMTI2ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBv
cnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0QTMgLyog
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI2MEM5QjAxNUMwMDExNDM2
OSAvKiBXb3JrUXVldWVJdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4NUY2QjIxMDcx
NEUwNzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUx
Qjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTI5Q0ZCQTExMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyOUNGQkEyRTEyMjczQTEwMDBCQzMw
QzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkz
QTU2MjZDQjEzMUNBMDJBMDAyQkU2RDkgLyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5tbSBpbiBT
b3VyY2VzICovLAotCQkJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGIxYWIxNjkwY2I4ZjA0
ZTlmNjE0NTQwZjU3MzQ3OWI1Njk0ZTgwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5u
aXNAZ21haWwuY29tKQorICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisgKiAgICAgICAgICAgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZSA8cGFyb2dh
QHBhcm9nYS5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRUaHJl
YWRpbmcuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworc3RhdGljIGNvbnN0
IHNpemVfdCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50ID0gNDsKK3N0YXRpYyBib29sIGphdmFTY3Jp
cHRUaHJlYWRzU2hvdWxkVGVybWluYXRlOworc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFT
Y3JpcHRUaHJlYWRzR3JvdXA7CisKK3N0YXRpYyBNdXRleCYgamF2YVNjcmlwdFRocmVhZHNNdXRl
eCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RhdGljTXV0ZXgsICgpKTsK
KyAgICByZXR1cm4gc3RhdGljTXV0ZXg7Cit9CisKK3R5cGVkZWYgSGFzaFNldDxUaHJlYWRJZGVu
dGlmaWVyPiBUaHJlYWRTZXQ7CitzdGF0aWMgVGhyZWFkU2V0JiBqYXZhU2NyaXB0VGhyZWFkcygp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRU
aHJlYWRzLCAoKSk7CisgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9j
aygpKTsKKyAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Cit9CisKKy8vIFRoaXMg
ZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNT
aG91bGRUZXJtaW5hdGUKKy8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBk
ZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgordm9pZCBydW5K
YXZhU2NyaXB0VGhyZWFkKHZvaWQqKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBz
Y3JpcHQgPQorICAgICAgICAidmFyIGFycmF5ID0gW107IgorICAgICAgICAiZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDI0OyBpKyspIHsiCisgICAgICAgICIgICAgYXJyYXkucHVzaChTdHJpbmcoaSkp
OyIKKyAgICAgICAgIn0iOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0eDsKKyAgICB7Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAg
ICAgICBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRz
R3JvdXAsIDApOworICAgIH0KKworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFJlZjsKKyAgICB7Cisg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAg
ICAgICBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpOwor
ICAgIH0KKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4
TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgs
IHNjcmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7CisgICAgICAgICAgICBBU1NFUlQoIWV4
Y2VwdGlvbik7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHNp
emVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2
YWx1ZXNDb3VudF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0Nv
dW50OyArK2kpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwg
MCwgMCk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGlmIChqYXZhU2Ny
aXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2FsbHkuCisgICAgICAgIGlm
IChyYW5kKCkgJSA1KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIFRocmVhZElkZW50
aWZpZXIgdGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBkZXRhY2hUaHJlYWQodGhy
ZWFkKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUodGhyZWFkKTsKKyAgICAg
ICAgamF2YVNjcmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZydW5KYXZhU2NyaXB0VGhy
ZWFkLCAwLCAwKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgIEpTU3RyaW5nUmVsZWFzZShzY3Jp
cHRSZWYpOworICAgIEpTR2FyYmFnZUNvbGxlY3QoY3R4KTsKKyAgICBKU0dsb2JhbENvbnRleHRS
ZWxlYXNlKGN0eCk7Cit9CisKK3ZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCit7CisgICAg
amF2YVNjcmlwdFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CisKKyAgICBN
dXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsgKytpKQorICAgICAgICBq
YXZhU2NyaXB0VGhyZWFkcygpLmFkZChjcmVhdGVUaHJlYWQoJnJ1bkphdmFTY3JpcHRUaHJlYWQs
IDAsIDApKTsKK30KKwordm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQoreworICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAg
ICAgIGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBWZWN0b3I8VGhyZWFkSWRlbnRpZmllciwgamF2YVNjcmlwdFRocmVhZHNDb3VudD4gdGhyZWFk
czsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011
dGV4KCkpOworICAgICAgICBjb3B5VG9WZWN0b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFk
cyk7CisgICAgICAgIEFTU0VSVCh0aHJlYWRzLnNpemUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0Nv
dW50KTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJl
YWRzQ291bnQ7ICsraSkKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkc1tp
XSk7CisKKyAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmNsZWFyKCk7CisKKyAgICBKU0NvbnRleHRH
cm91cFJlbGVhc2UoamF2YVNjcmlwdFRocmVhZHNHcm91cCk7Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJl
YWRzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2NmMwMjBlOTc2NGU5NDRk
OGMwODg5ZjRjNDI1MTlhMGFmZjgzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhy
ZWFkaW5nUHRocmVhZHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5u
aXNAZ21haWwuY29tKQotICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLSAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0VGhy
ZWFkaW5nLmgiCi0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+Ci0jaW5jbHVkZSA8cHRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KLQotc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7
Ci0KLXN0YXRpYyBwdGhyZWFkX211dGV4X3QgamF2YVNjcmlwdFRocmVhZHNNdXRleCA9IFBUSFJF
QURfTVVURVhfSU5JVElBTElaRVI7Ci1zdGF0aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3Vs
ZFRlcm1pbmF0ZTsKLQotc3RhdGljIGNvbnN0IGludCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50ID0g
NDsKLQotdHlwZWRlZiBIYXNoU2V0PHB0aHJlYWRfdD4gVGhyZWFkU2V0OwotCi1zdGF0aWMgVGhy
ZWFkU2V0KiBqYXZhU2NyaXB0VGhyZWFkcygpCi17Ci0gICAgQVNTRVJUKHB0aHJlYWRfbXV0ZXhf
dHJ5bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCkgPT0gRUJVU1kpOwotICAgIHN0YXRpYyBU
aHJlYWRTZXQgc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Ci0gICAgcmV0dXJuICZzdGF0aWNKYXZh
U2NyaXB0VGhyZWFkczsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBleGVyY2lzZXMgSlNDIGluIGEg
bG9vcCB1bnRpbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZQotLy8gYmVjb21lcyB0
cnVlIG9yIGl0IHByb2JhYmlsaXN0aWNhbGx5IGRlY2lkZXMgdG8gc3Bhd24gYSByZXBsYWNlbWVu
dCB0aHJlYWQgYW5kIGV4aXQuCi12b2lkKiBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqIGFyZykK
LXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2NyaXB0ID0KLSAgICAgICAgInZhciBh
cnJheSA9IFtdOyIKLSAgICAgICAgImZvciAodmFyIGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7Igot
ICAgICAgICAiICAgIGFycmF5LnB1c2goU3RyaW5nKGkpKTsiCi0gICAgICAgICJ9IjsKLQotICAg
IHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNHbG9i
YWxDb250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2YVNjcmlw
dFRocmVhZHNHcm91cCwgMCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOwotCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFk
c011dGV4KTsKLSAgICBKU1N0cmluZ1JlZiBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhzY3JpcHQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0
VGhyZWFkc011dGV4KTsKLQotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhf
bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0
aW9uID0gMDsKLSAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwg
MSwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICAgICAgcHRo
cmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgIHNpemVf
dCB2YWx1ZXNDb3VudCA9IDEwMjQ7Ci0gICAgICAgIEpTVmFsdWVSZWYgdmFsdWVzW3ZhbHVlc0Nv
dW50XTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXNDb3VudDsgKytpKQot
ICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwgMCk7Ci0gICAgICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgICAg
ICAvLyBDaGVjayBmb3IgY2FuY2VsbGF0aW9uLgotICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVh
ZHNTaG91bGRUZXJtaW5hdGUpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgLy8g
UmVzcGF3biBwcm9iYWJpbGlzdGljYWxseS4KLSAgICAgICAgaWYgKHJhbmRvbSgpICUgNSA9PSAw
KSB7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOwotICAgICAgICAgICAgcHRocmVhZF90IHB0aHJlYWQ7Ci0gICAgICAgICAgICBwdGhyZWFk
X2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOwotICAgICAgICAg
ICAgcHRocmVhZF9kZXRhY2gocHRocmVhZCk7Ci0gICAgICAgICAgICBqYXZhU2NyaXB0VGhyZWFk
cygpLT5hZGQocHRocmVhZCk7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2
YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLWRvbmU6Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFk
c011dGV4KTsKLSAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0UmVmKTsKLSAgICBKU0dhcmJhZ2VD
b2xsZWN0KGN0eCk7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOwotICAgIGphdmFT
Y3JpcHRUaHJlYWRzKCktPnJlbW92ZShwdGhyZWFkX3NlbGYoKSk7Ci0gICAgcHRocmVhZF9tdXRl
eF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIHJldHVybiAwOwotfQotCi12
b2lkIHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQotewotICAgIGphdmFTY3JpcHRUaHJlYWRzR3Jv
dXAgPSBKU0NvbnRleHRHcm91cENyZWF0ZSgpOwotCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZq
YXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgamF2YVNj
cmlwdFRocmVhZHNDb3VudDsgaSsrKSB7Ci0gICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOwotICAg
ICAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAp
OwotICAgICAgICBwdGhyZWFkX2RldGFjaChwdGhyZWFkKTsKLSAgICAgICAgamF2YVNjcmlwdFRo
cmVhZHMoKS0+YWRkKHB0aHJlYWQpOwotICAgIH0KLQotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLX0KLQotdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVh
ZHMoKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7
Ci0KLSAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7Ci0KLSAgICBw
dGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRz
TXV0ZXgpOwotICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhyZWFkcygpLT5z
aXplKCk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011
dGV4KTsKLQotICAgICAgICBpZiAoIXRocmVhZENvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgdXNsZWVwKDEwMDApOwotICAgIH0KLX0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196817</attachid>
            <date>2013-04-07 18:06:43 -0700</date>
            <delta_ts>2013-05-09 11:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92505.patch</filename>
            <type>text/plain</type>
            <size>22720</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCShy
ZXZpc2lvbiAxNDc4ODYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFk
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAg
KiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqICAg
ICAgICAgICAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMzEgKzMyLDMzIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5oIgogCi0jaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxz
dGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCitzdGF0aWMgY29uc3Qgc2l6ZV90IGph
dmFTY3JpcHRUaHJlYWRzQ291bnQgPSA0Oworc3RhdGljIGJvb2wgamF2YVNjcmlwdFRocmVhZHNT
aG91bGRUZXJtaW5hdGU7CiBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRocmVh
ZHNHcm91cDsKIAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBqYXZhU2NyaXB0VGhyZWFkc011dGV4
ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKLXN0YXRpYyBib29sIGphdmFTY3JpcHRUaHJl
YWRzU2hvdWxkVGVybWluYXRlOworc3RhdGljIE11dGV4JiBqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBzdGF0aWNNdXRleCwgKCkpOwor
ICAgIHJldHVybiBzdGF0aWNNdXRleDsKK30KIAotc3RhdGljIGNvbnN0IGludCBqYXZhU2NyaXB0
VGhyZWFkc0NvdW50ID0gNDsKLQotdHlwZWRlZiBIYXNoU2V0PHB0aHJlYWRfdD4gVGhyZWFkU2V0
OwotCi1zdGF0aWMgVGhyZWFkU2V0KiBqYXZhU2NyaXB0VGhyZWFkcygpCit0eXBlZGVmIEhhc2hT
ZXQ8VGhyZWFkSWRlbnRpZmllcj4gVGhyZWFkU2V0Oworc3RhdGljIFRocmVhZFNldCYgamF2YVNj
cmlwdFRocmVhZHMoKQogewotICAgIEFTU0VSVChwdGhyZWFkX211dGV4X3RyeWxvY2soJmphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXgpID09IEVCVVNZKTsKLSAgICBzdGF0aWMgVGhyZWFkU2V0IHN0YXRp
Y0phdmFTY3JpcHRUaHJlYWRzOwotICAgIHJldHVybiAmc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRUaHJl
YWRzLCAoKSk7CisgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9jaygp
KTsKKyAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9CiAKIC8vIFRoaXMgZnVu
Y3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91
bGRUZXJtaW5hdGUKIC8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNp
ZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgotdm9pZCogcnVuSmF2
YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCit2b2lkIHJ1bkphdmFTY3JpcHRUaHJlYWQodm9pZCop
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdCA9CiAgICAgICAgICJ2YXIg
YXJyYXkgPSBbXTsiCkBAIC02Myw4NiArNjYsODYgQEAKICAgICAgICAgIiAgICBhcnJheS5wdXNo
KFN0cmluZyhpKSk7IgogICAgICAgICAifSI7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0ds
b2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRzR3JvdXAsIDApOwotICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBKU0ds
b2JhbENvbnRleHRSZWYgY3R4OworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIGN0eCA9IEpTR2xvYmFsQ29udGV4dENy
ZWF0ZUluR3JvdXAoamF2YVNjcmlwdFRocmVhZHNHcm91cCwgMCk7CisgICAgfQogCi0gICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICBKU1N0cmluZ1Jl
ZiBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpOwotICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBKU1N0
cmluZ1JlZiBzY3JpcHRSZWY7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2
YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgc2NyaXB0UmVmID0gSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KTsKKyAgICB9CiAKLSAgICB3aGlsZSAoMSkgewotICAg
ICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4
LCBzY3JpcHRSZWYsIDAsIDAsIDEsICZleGNlcHRpb24pOwotICAgICAgICBBU1NFUlQoIWV4Y2Vw
dGlvbik7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011
dGV4KTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBz
Y3JpcHRSZWYsIDAsIDAsIDEsICZleGNlcHRpb24pOworICAgICAgICAgICAgQVNTRVJUKCFleGNl
cHRpb24pOworICAgICAgICB9CiAKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgc2l6ZV90IHZhbHVlc0NvdW50ID0gMTAyNDsKLSAg
ICAgICAgSlNWYWx1ZVJlZiB2YWx1ZXNbdmFsdWVzQ291bnRdOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCi0gICAgICAgICAgICB2YWx1ZXNbaV0gPSBK
U09iamVjdE1ha2UoY3R4LCAwLCAwKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHNp
emVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2
YWx1ZXNDb3VudF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0Nv
dW50OyArK2kpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwg
MCwgMCk7CisgICAgICAgIH0KIAotICAgICAgICAvLyBDaGVjayBmb3IgY2FuY2VsbGF0aW9uLgot
ICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUpCi0gICAgICAgICAg
ICBnb3RvIGRvbmU7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihq
YXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgaWYgKGphdmFTY3JpcHRUaHJl
YWRzU2hvdWxkVGVybWluYXRlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
ICAgICAgICAgLy8gUmVzcGF3biBwcm9iYWJpbGlzdGljYWxseS4KLSAgICAgICAgaWYgKHJhbmRv
bSgpICUgNSA9PSAwKSB7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3Jp
cHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICAgICAgcHRocmVhZF90IHB0aHJlYWQ7Ci0gICAgICAg
ICAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAp
OwotICAgICAgICAgICAgcHRocmVhZF9kZXRhY2gocHRocmVhZCk7Ci0gICAgICAgICAgICBqYXZh
U2NyaXB0VGhyZWFkcygpLT5hZGQocHRocmVhZCk7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4
X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJhbmQoKSAlIDUpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgp
KTsKKyAgICAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7Cisg
ICAgICAgIGRldGFjaFRocmVhZCh0aHJlYWQpOworICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygp
LnJlbW92ZSh0aHJlYWQpOworICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChjcmVhdGVU
aHJlYWQoJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAsIDApKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
fQogCi1kb25lOgotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAg
ICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFJlZik7CiAgICAgSlNHYXJiYWdlQ29sbGVjdChjdHgp
OwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKLSAgICBqYXZhU2NyaXB0VGhyZWFk
cygpLT5yZW1vdmUocHRocmVhZF9zZWxmKCkpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZq
YXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBzdGFydEph
dmFTY3JpcHRUaHJlYWRzKCkKIHsKICAgICBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwID0gSlNDb250
ZXh0R3JvdXBDcmVhdGUoKTsKIAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRo
cmVhZHNNdXRleCk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgoKSk7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7
IGkrKykgewotICAgICAgICBwdGhyZWFkX3QgcHRocmVhZDsKLSAgICAgICAgcHRocmVhZF9jcmVh
dGUoJnB0aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgcHRocmVh
ZF9kZXRhY2gocHRocmVhZCk7Ci0gICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCktPmFkZChwdGhy
ZWFkKTsKLSAgICB9Ci0KLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVh
ZHNNdXRleCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBqYXZhU2NyaXB0VGhyZWFkc0Nv
dW50OyArK2kpCisgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkuYWRkKGNyZWF0ZVRocmVhZCgm
cnVuSmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOwogfQogCiB2b2lkIHN0b3BKYXZhU2NyaXB0VGhy
ZWFkcygpCiB7Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011
dGV4KCkpOworICAgICAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7
CisgICAgfQogCi0gICAgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUgPSB0cnVlOwor
ICAgIFZlY3RvcjxUaHJlYWRJZGVudGlmaWVyLCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50PiB0aHJl
YWRzOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRz
TXV0ZXgoKSk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihqYXZhU2NyaXB0VGhyZWFkcygpLCB0aHJl
YWRzKTsKKyAgICAgICAgQVNTRVJUKHRocmVhZHMuc2l6ZSgpID09IGphdmFTY3JpcHRUaHJlYWRz
Q291bnQpOworICAgIH0KIAotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRz
Q291bnQ7ICsraSkKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkc1tpXSk7
CiAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0
VGhyZWFkcygpLT5zaXplKCk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KTsKKyAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmNsZWFyKCk7CiAKLSAg
ICAgICAgaWYgKCF0aHJlYWRDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHVz
bGVlcCgxMDAwKTsKLSAgICB9CisgICAgSlNDb250ZXh0R3JvdXBSZWxlYXNlKGphdmFTY3JpcHRU
aHJlYWRzR3JvdXApOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxNDc4ODYpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAJCTI5
Q0ZCQTEwMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMEUxMjI3MzZF
NjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmggKi87IH07CiAJCTI5Q0ZCQTEx
MTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEwRjEyMjczNkU2MDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovOyB9OwogCQkyOUNGQkEyRTEy
MjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUNGQkEyRDEyMjczQTEwMDBC
QzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi87IH07CisJCTJDRTg4RkEy
MTcxMjREOEMwMDczNEZDMCAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDRTg4RkExMTcxMjRDRUUwMDczNEZD
MCAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCAqLzsgfTsKIAkJMkQ0MDNGMDUxNTA4NzFGOTAw
NTM1OEQyIC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBRTgyNTdFRjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZy
YW1ld29yayAqLzsgfTsKIAkJMkQ0MDNGMDYxNTA4NzFGOTAwNTM1OEQyIC8qIENvY29hLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
NEY2MDg5MDhCMTM2REEwMEU5NzQ1RiAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07CiAJCTJENDAz
RjA4MTUwODcxRjkwMDUzNThEMiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjNCQ0I4OEYwRUE1NzYyMzAwM0M2Mjg5
IC8qIE9wZW5HTC5mcmFtZXdvcmsgKi87IH07CkBAIC0xMjEsNyArMTIyLDYgQEAKIAkJQkMwRTI2
MTUwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2
MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSAqLzsgfTsKIAkJQkMwRTI2
MTUwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzBFMjYxNDBFMkRBNEM2MDAx
QjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLzsgfTsKIAkJQkM0NzQxMkEwRDAz
OEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTI5MEQwMzhBNEMwMDcyQjAwNiAvKiBK
YXZhU2NyaXB0VGhyZWFkaW5nLmggKi87IH07Ci0JCUJDNDc0MTQxMEQwMzhBNTcwMDcyQjAwNiAv
KiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NzQxNDAwRDAzOEE1NzAwNzJCMDA2IC8qIEphdmFT
Y3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAgKi87IH07CiAJCUJDOUQ5MDI0MEM5NzQ3MkUwMDk5
QTRBMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5RDkwMjEwQzk3NDcyRDAwOTlBNEEzIC8qIFdvcmtRdWV1ZS5jcHAgKi87
IH07CiAJCUJDOUQ5MDI1MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIyMEM5NzQ3MkUwMDk5
QTRBMyAvKiBXb3JrUXVldWUuaCAqLzsgfTsKIAkJQkM5RDkwMjYwQzk3NDcyRTAwOTlBNEEzIC8q
IFdvcmtRdWV1ZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDOUQ5MDIzMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWVJdGVtLmggKi87IH07
CkBAIC0yNzEsNiArMjcxLDcgQEAKIAkJMjlDRkJBMEUxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
Q0ZCQTBGMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5Q0ZCQTJEMTIyNzNBMTAwMEJD
MzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBwYXRo
ID0gbWFjL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhU2NyaXB0VGhy
ZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNFQTIxNTA4NzE0
MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBuYW1lID0gTGF5b3V0VGVzdEhlbHBlci5tOyBwYXRoID0gbWFjL0xheW91dFRlc3RIZWxw
ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0MDNGMTkxNTA4NzFGOTAwNTM1
OEQyIC8qIExheW91dFRlc3RIZWxwZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IExheW91dFRlc3RIZWxwZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTMxMTE3QjNBMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTW9ja1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHBhdGggPSBtYWMvTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzQsNyArMzM1LDYgQEAK
IAkJQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMyAv
KiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ3NDEy
OTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0VGhyZWFkaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhy
ZWFkaW5nUHRocmVhZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcDsgcGF0aCA9IHB0aHJlYWRzL0phdmFTY3Jp
cHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
OUQ5MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDOUQ5MDIyMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzlEOTAyMzBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlSXRlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya1F1ZXVlSXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU0LDEyICs0NTQsMTIgQEAKIAkJCQlBOEI5MUJG
NzBDRjUyMkI0MDA4RjkxRkYgLyogQ2hlY2tlZE1hbGxvYy5jcHAgKi8sCiAJCQkJQThCOTFCRjkw
Q0Y1MjJCNDAwOEY5MUZGIC8qIENoZWNrZWRNYWxsb2MuaCAqLywKIAkJCQlCQzQ3NDEyOTBEMDM4
QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovLAotCQkJCUJDNDc0MTQwMEQw
MzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwICovLAogCQkJ
CUJDQTE4QzBBMEM5QjU5RUYwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZU1hYy5oICovLAogCQkJ
CUJDQTE4QjczMEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mby5o
ICovLAogCQkJCUJDQTE4Qjc0MEM5QjA4RjEwMDExNDM2OSAvKiBEdW1wUmVuZGVyVHJlZURyYWdn
aW5nSW5mby5tbSAqLywKIAkJCQlBOEQ3OUNFODBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRl
clRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaCAqLywKIAkJCQlBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4
RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UubSAqLywKKwkJCQkyQ0U4OEZB
MTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi8sCiAJCQkJNDRB
OTk3ODIwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovLAogCQkJ
CTQ0QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICov
LAogCQkJCTQ0MDU5MDcwMTI2ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRN
YWMubW0gKi8sCkBAIC04NzAsOCArODcwLDYgQEAKIC8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlv
biAqLwogCQkwOEZCNzc5M0ZFODQxNTVEQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7
CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwotCQkJYXR0cmlidXRlcyA9IHsKLQkJCX07CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5QzMwODkwMkM2RDAwOEE5RUZDIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiRHVtcFJlbmRlclRyZWUiICovOwogCQkJ
Y29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKIAkJCWRldmVsb3BtZW50UmVnaW9u
ID0gRW5nbGlzaDsKQEAgLTk1OSwxMSArOTU3LDEzIEBACiAJCQlmaWxlcyA9ICgKIAkJCQlCQzBF
MjYxNTBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDRDA4QjNBMEUxMDU3RUYwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBQTVBMTVFRjE2RTE1Q0QwMDBGN0M1NjEg
LyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Qw
OEI3MTBFMTA1OUQyMDBBN0QwQzEgLyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUNGQkExMTEyMjcz
NkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTI0RTEwRTJEOTQ1MTAwMUI2QkMyIC8qIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUE1QTE1RjAxNkUx
NUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQzBFMjYxNTBFMkRBNEM2MDAxQjZCQzIgLyogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjM5MEM5QjAyMTkwMDExNDM2OSAvKiBB
cHBsZVNjcmlwdENvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQkZEMENGNTIy
QjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTc5LDkg
Kzk3OSw4IEBACiAJCQkJQkNBMThCNjQwQzlCMDhDMjAwMTE0MzY5IC8qIEZyYW1lTG9hZERlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNkM2NTAwQzk4RTlDMDAwQUMwNjNFIC8qIEdD
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyMzBDOUIwMTRCMDAxMTQz
NjkgLyogR0NDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQUE1QTE1RUYxNkUx
NUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE4NUY2QjIxMDcxNEUwNzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAotCQkJCUJDNDc0MTQxMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0
VGhyZWFkaW5nUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkNFODhGQTIxNzEyNEQ4
QzAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFCNzgxNjUxMUFGMzFCNzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzExMTdCM0QxNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjcyMEM5QjA4REIw
MDExNDM2OSAvKiBOYXZpZ2F0aW9uQ29udHJvbGxlci5tIGluIFNvdXJjZXMgKi8sCkBAIC05OTIs
NyArOTkxLDYgQEAKIAkJCQlCQ0IyODRDRDBDRkE4M0M4MDA3RTUzM0UgLyogUGl4ZWxEdW1wU3Vw
cG9ydENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjI4NEQ2MENGQTgzRDEwMDdFNTMzRSAv
KiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjYwQzlC
MDhDMjAwMTE0MzY5IC8qIFBvbGljeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQUE1
QTE1RjAxNkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQ0ExOEI2ODBDOUIwOEMyMDAxMTQzNjkgLyogUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzQTU2MjZDQjEzMUNBMDJBMDAyQkU2RDkg
LyogU3RvcmFnZVRyYWNrZXJEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMDEzMURB
MEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2Ny
aXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAxNDc4ODYpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAo
QykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKLSAqICAgICAg
ICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5oIgotCi0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLXN0YXRpYyBKU0NvbnRl
eHRHcm91cFJlZiBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwOwotCi1zdGF0aWMgcHRocmVhZF9tdXRl
eF90IGphdmFTY3JpcHRUaHJlYWRzTXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwot
c3RhdGljIGJvb2wgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGU7Ci0KLXN0YXRpYyBj
b25zdCBpbnQgamF2YVNjcmlwdFRocmVhZHNDb3VudCA9IDQ7Ci0KLXR5cGVkZWYgSGFzaFNldDxw
dGhyZWFkX3Q+IFRocmVhZFNldDsKLQotc3RhdGljIFRocmVhZFNldCogamF2YVNjcmlwdFRocmVh
ZHMoKQotewotICAgIEFTU0VSVChwdGhyZWFkX211dGV4X3RyeWxvY2soJmphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgpID09IEVCVVNZKTsKLSAgICBzdGF0aWMgVGhyZWFkU2V0IHN0YXRpY0phdmFTY3Jp
cHRUaHJlYWRzOwotICAgIHJldHVybiAmc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Ci19Ci0KLS8v
IFRoaXMgZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRo
cmVhZHNTaG91bGRUZXJtaW5hdGUKLS8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGlj
YWxseSBkZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgotdm9p
ZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHNjcmlwdCA9Ci0gICAgICAgICJ2YXIgYXJyYXkgPSBbXTsiCi0gICAgICAgICJm
b3IgKHZhciBpID0gMDsgaSA8IDEwMjQ7IGkrKykgeyIKLSAgICAgICAgIiAgICBhcnJheS5wdXNo
KFN0cmluZyhpKSk7IgotICAgICAgICAifSI7Ci0KLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0ds
b2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRzR3JvdXAsIDApOwotICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNTdHJpbmdS
ZWYgc2NyaXB0UmVmID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KTsKLSAg
ICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICB3
aGlsZSAoMSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRz
TXV0ZXgpOwotICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAgIEpTRXZh
bHVhdGVTY3JpcHQoY3R4LCBzY3JpcHRSZWYsIDAsIDAsIDEsICZleGNlcHRpb24pOwotICAgICAg
ICBBU1NFUlQoIWV4Y2VwdGlvbik7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZh
U2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICBzaXplX3QgdmFsdWVzQ291bnQgPSAxMDI0Owot
ICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdmFsdWVzQ291bnQ7ICsraSkKLSAgICAgICAgICAgIHZhbHVlc1tpXSA9
IEpTT2JqZWN0TWFrZShjdHgsIDAsIDApOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygm
amF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbmNlbGxh
dGlvbi4KLSAgICAgICAgaWYgKGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlKQotICAg
ICAgICAgICAgZ290byBkb25lOwotCi0gICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2Fs
bHkuCi0gICAgICAgIGlmIChyYW5kb20oKSAlIDUgPT0gMCkgewotICAgICAgICAgICAgcHRocmVh
ZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgICAgIHB0aHJl
YWRfdCBwdGhyZWFkOwotICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZy
dW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJl
YWQpOwotICAgICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0aHJlYWQpOwotICAg
ICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwot
ICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgfQotCi1kb25lOgotICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNTdHJpbmdS
ZWxlYXNlKHNjcmlwdFJlZik7Ci0gICAgSlNHYXJiYWdlQ29sbGVjdChjdHgpOwotICAgIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKLSAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5yZW1vdmUo
cHRocmVhZF9zZWxmKCkpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBzdGFydEphdmFTY3JpcHRUaHJl
YWRzKCkKLXsKLSAgICBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwID0gSlNDb250ZXh0R3JvdXBDcmVh
dGUoKTsKLQotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7
Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7IGkrKykg
ewotICAgICAgICBwdGhyZWFkX3QgcHRocmVhZDsKLSAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0
aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgcHRocmVhZF9kZXRh
Y2gocHRocmVhZCk7Ci0gICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCktPmFkZChwdGhyZWFkKTsK
LSAgICB9Ci0KLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7Ci19Ci0KLXZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkKLXsKLSAgICBwdGhyZWFkX211
dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgamF2YVNjcmlwdFRocmVh
ZHNTaG91bGRUZXJtaW5hdGUgPSB0cnVlOwotCi0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgcHRo
cmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgaW50IHRo
cmVhZENvdW50ID0gamF2YVNjcmlwdFRocmVhZHMoKS0+c2l6ZSgpOwotICAgICAgICBwdGhyZWFk
X211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgaWYgKCF0
aHJlYWRDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHVzbGVlcCgxMDAwKTsK
LSAgICB9Ci19CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDc4ODkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wNC0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KKworICAgICAgICBbRFJUXSBSZXBsYWNlIEphdmFTY3JpcHRUaHJlYWRp
bmdQdGhyZWFkcy5jcHAgd2l0aCBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1MDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHA6IENvcGllZCBmcm9tIER1bXBSZW5kZXJUcmVl
L3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHAuCisgICAgICAgIChqYXZh
U2NyaXB0VGhyZWFkc011dGV4KToKKyAgICAgICAgKGphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAg
ICAgKHJ1bkphdmFTY3JpcHRUaHJlYWQpOgorICAgICAgICAoc3RhcnRKYXZhU2NyaXB0VGhyZWFk
cyk6CisgICAgICAgIChzdG9wSmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3B0aHJlYWRzOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3B0aHJl
YWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMDQt
MDcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dGhlIHJlc3Qgb2YgU1ZHX0RPTV9PQkpDX0JJTkRJTkdTCg==
</data>
<flag name="review"
          id="218975"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="218976"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201254</attachid>
            <date>2013-05-09 11:17:54 -0700</date>
            <delta_ts>2013-05-09 11:20:03 -0700</delta_ts>
            <desc>Rebased Patch (only for EWS)</desc>
            <filename>bug-92505b.patch</filename>
            <type>text/plain</type>
            <size>26590</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE0OTgyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEzLTA1LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIFtEUlRdIFJlcGxhY2UgSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCB3
aXRoIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1
bGdoYW0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwOiBDb3BpZWQgZnJvbSBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2Ny
aXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwLgorICAgICAgICAoamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChydW5KYXZhU2NyaXB0
VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAoc3Rv
cEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkczog
UmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhy
ZWFkaW5nUHRocmVhZHMuY3BwOiBSZW1vdmVkLgorCiAyMDEzLTA1LTA5ICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
VXBkYXRlIFNpbW9uIFBlbmEgZW1haWwgb24gaGlzIGJlaGFsZi4KSW5kZXg6IER1bXBSZW5kZXJU
cmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNDk4MjApCShmcm9tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5j
cHA6MTQ5ODIwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICAg
ICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQor
ICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0VGhyZWFkaW5nLmgiCisKKyNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworc3RhdGlj
IEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7CisKK3N0YXRpYyBwdGhy
ZWFkX211dGV4X3QgamF2YVNjcmlwdFRocmVhZHNNdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElB
TElaRVI7CitzdGF0aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZTsKKwor
c3RhdGljIGNvbnN0IGludCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50ID0gNDsKKwordHlwZWRlZiBI
YXNoU2V0PHB0aHJlYWRfdD4gVGhyZWFkU2V0OworCitzdGF0aWMgVGhyZWFkU2V0KiBqYXZhU2Ny
aXB0VGhyZWFkcygpCit7CisgICAgQVNTRVJUKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmamF2YVNj
cmlwdFRocmVhZHNNdXRleCkgPT0gRUJVU1kpOworICAgIHN0YXRpYyBUaHJlYWRTZXQgc3RhdGlj
SmF2YVNjcmlwdFRocmVhZHM7CisgICAgcmV0dXJuICZzdGF0aWNKYXZhU2NyaXB0VGhyZWFkczsK
K30KKworLy8gVGhpcyBmdW5jdGlvbiBleGVyY2lzZXMgSlNDIGluIGEgbG9vcCB1bnRpbCBqYXZh
U2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZQorLy8gYmVjb21lcyB0cnVlIG9yIGl0IHByb2Jh
YmlsaXN0aWNhbGx5IGRlY2lkZXMgdG8gc3Bhd24gYSByZXBsYWNlbWVudCB0aHJlYWQgYW5kIGV4
aXQuCit2b2lkKiBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqIGFyZykKK3sKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qgc2NyaXB0ID0KKyAgICAgICAgInZhciBhcnJheSA9IFtdOyIKKyAg
ICAgICAgImZvciAodmFyIGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7IgorICAgICAgICAiICAgIGFy
cmF5LnB1c2goU3RyaW5nKGkpKTsiCisgICAgICAgICJ9IjsKKworICAgIHB0aHJlYWRfbXV0ZXhf
bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGN0
eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2YVNjcmlwdFRocmVhZHNHcm91cCwg
MCk7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwor
CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBK
U1N0cmluZ1JlZiBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3Jp
cHQpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsK
KworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlw
dFRocmVhZHNNdXRleCk7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAg
ICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7
CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxv
Y2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworCisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9j
aygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisgICAgICAgIHNpemVfdCB2YWx1ZXNDb3VudCA9
IDEwMjQ7CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWVzW3ZhbHVlc0NvdW50XTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXNDb3VudDsgKytpKQorICAgICAgICAgICAgdmFs
dWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwgMCk7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKworICAgICAgICAvLyBDaGVjayBmb3Ig
Y2FuY2VsbGF0aW9uLgorICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5h
dGUpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgLy8gUmVzcGF3biBwcm9iYWJp
bGlzdGljYWxseS4KKyAgICAgICAgaWYgKHJhbmRvbSgpICUgNSA9PSAwKSB7CisgICAgICAgICAg
ICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgICAgICAg
ICAgcHRocmVhZF90IHB0aHJlYWQ7CisgICAgICAgICAgICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVh
ZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOworICAgICAgICAgICAgcHRocmVhZF9kZXRh
Y2gocHRocmVhZCk7CisgICAgICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5hZGQocHRocmVh
ZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNN
dXRleCk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICB9CisKK2RvbmU6
CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBK
U1N0cmluZ1JlbGVhc2Uoc2NyaXB0UmVmKTsKKyAgICBKU0dhcmJhZ2VDb2xsZWN0KGN0eCk7Cisg
ICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOworICAgIGphdmFTY3JpcHRUaHJlYWRzKCkt
PnJlbW92ZShwdGhyZWFkX3NlbGYoKSk7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIHN0YXJ0SmF2YVNj
cmlwdFRocmVhZHMoKQoreworICAgIGphdmFTY3JpcHRUaHJlYWRzR3JvdXAgPSBKU0NvbnRleHRH
cm91cENyZWF0ZSgpOworCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFk
c011dGV4KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3Vu
dDsgaSsrKSB7CisgICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgICAgICBwdGhyZWFkX2Ny
ZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOworICAgICAgICBwdGhy
ZWFkX2RldGFjaChwdGhyZWFkKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0
aHJlYWQpOworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KTsKK30KKwordm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQoreworICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisKKyAgICBqYXZhU2Ny
aXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7CisKKyAgICBwdGhyZWFkX211dGV4X3Vu
bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisKKyAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgICAg
ICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhyZWFkcygpLT5zaXplKCk7CisgICAgICAg
IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKworICAgICAg
ICBpZiAoIXRocmVhZENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdXNsZWVw
KDEwMDApOworICAgIH0KK30KSW5kZXg6IER1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJl
YWRpbmcuY3BwCShyZXZpc2lvbiAxNDk4MjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9KYXZh
U2NyaXB0VGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0Bn
bWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KKyAqICAgICAgICAgICAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlIDxwYXJvZ2FAcGFy
b2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMzEgKzMyLDMz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5o
IgogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1zdGF0aWMgSlND
b250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRocmVhZHNHcm91cDsKLQotc3RhdGljIHB0aHJlYWRf
bXV0ZXhfdCBqYXZhU2NyaXB0VGhyZWFkc011dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpF
UjsKK3N0YXRpYyBjb25zdCBzaXplX3QgamF2YVNjcmlwdFRocmVhZHNDb3VudCA9IDQ7CiBzdGF0
aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZTsKK3N0YXRpYyBKU0NvbnRl
eHRHcm91cFJlZiBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwOwogCi1zdGF0aWMgY29uc3QgaW50IGph
dmFTY3JpcHRUaHJlYWRzQ291bnQgPSA0OwotCi10eXBlZGVmIEhhc2hTZXQ8cHRocmVhZF90PiBU
aHJlYWRTZXQ7CitzdGF0aWMgTXV0ZXgmIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CisgICAgcmV0dXJu
IHN0YXRpY011dGV4OworfQogCi1zdGF0aWMgVGhyZWFkU2V0KiBqYXZhU2NyaXB0VGhyZWFkcygp
Cit0eXBlZGVmIEhhc2hTZXQ8VGhyZWFkSWRlbnRpZmllcj4gVGhyZWFkU2V0Oworc3RhdGljIFRo
cmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAgIEFTU0VSVChwdGhyZWFkX211dGV4
X3RyeWxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpID09IEVCVVNZKTsKLSAgICBzdGF0aWMg
VGhyZWFkU2V0IHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzOwotICAgIHJldHVybiAmc3RhdGljSmF2
YVNjcmlwdFRocmVhZHM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRp
Y0phdmFTY3JpcHRUaHJlYWRzLCAoKSk7CisgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011
dGV4KCkudHJ5TG9jaygpKTsKKyAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9
CiAKIC8vIFRoaXMgZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNj
cmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUKIC8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJp
bGlzdGljYWxseSBkZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0
Lgotdm9pZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCit2b2lkIHJ1bkphdmFTY3Jp
cHRUaHJlYWQodm9pZCopCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdCA9
CiAgICAgICAgICJ2YXIgYXJyYXkgPSBbXTsiCkBAIC02Myw4NiArNjYsODYgQEAgdm9pZCogcnVu
SmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCiAgICAgICAgICIgICAgYXJyYXkucHVzaChTdHJp
bmcoaSkpOyIKICAgICAgICAgIn0iOwogCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2Ny
aXB0VGhyZWFkc011dGV4KTsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4ID0gSlNHbG9iYWxD
b250ZXh0Q3JlYXRlSW5Hcm91cChqYXZhU2NyaXB0VGhyZWFkc0dyb3VwLCAwKTsKLSAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICBwdGhyZWFk
X211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIEpTU3RyaW5nUmVmIHNj
cmlwdFJlZiA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdCk7Ci0gICAgcHRo
cmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgd2hpbGUg
KDEpIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKLSAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgICAgICBKU0V2YWx1YXRl
U2NyaXB0KGN0eCwgc2NyaXB0UmVmLCAwLCAwLCAxLCAmZXhjZXB0aW9uKTsKLSAgICAgICAgQVNT
RVJUKCFleGNlcHRpb24pOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlw
dFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0
VGhyZWFkc011dGV4KTsKLSAgICAgICAgc2l6ZV90IHZhbHVlc0NvdW50ID0gMTAyNDsKLSAgICAg
ICAgSlNWYWx1ZVJlZiB2YWx1ZXNbdmFsdWVzQ291bnRdOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCi0gICAgICAgICAgICB2YWx1ZXNbaV0gPSBKU09i
amVjdE1ha2UoY3R4LCAwLCAwKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBjYW5jZWxsYXRpb24u
Ci0gICAgICAgIGlmIChqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSkKLSAgICAgICAg
ICAgIGdvdG8gZG9uZTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY3R4OworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAg
IGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2YVNjcmlwdFRocmVhZHNHcm91
cCwgMCk7CisgICAgfQogCi0gICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2FsbHkuCi0g
ICAgICAgIGlmIChyYW5kb20oKSAlIDUgPT0gMCkgewotICAgICAgICAgICAgcHRocmVhZF9tdXRl
eF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgICAgIHB0aHJlYWRfdCBw
dGhyZWFkOwotICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZydW5KYXZh
U2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJlYWQpOwot
ICAgICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0aHJlYWQpOwotICAgICAgICAg
ICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAg
ICAgICAgZ290byBkb25lOworICAgIEpTU3RyaW5nUmVmIHNjcmlwdFJlZjsKKyAgICB7CisgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAg
ICBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzY3JpcHQpOworICAg
IH0KKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNj
cmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7CisgICAgICAgICAgICBBU1NFUlQoIWV4Y2Vw
dGlvbik7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBs
b2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGNvbnN0IHNpemVf
dCB2YWx1ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1
ZXNDb3VudF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50
OyArK2kpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwg
MCk7CiAgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgICAgIGlmIChqYXZhU2NyaXB0
VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2FsbHkuCisgICAgICAgIGlmIChy
YW5kKCkgJSA1KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAgICAgIFRocmVhZElkZW50aWZp
ZXIgdGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBkZXRhY2hUaHJlYWQodGhyZWFk
KTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUodGhyZWFkKTsKKyAgICAgICAg
amF2YVNjcmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZydW5KYXZhU2NyaXB0VGhyZWFk
LCAwLCAwKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAotZG9uZToKLSAgICBwdGhyZWFkX211
dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgIE11dGV4TG9ja2VyIGxvY2tl
cihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHRS
ZWYpOwogICAgIEpTR2FyYmFnZUNvbGxlY3QoY3R4KTsKICAgICBKU0dsb2JhbENvbnRleHRSZWxl
YXNlKGN0eCk7Ci0gICAgamF2YVNjcmlwdFRocmVhZHMoKS0+cmVtb3ZlKHB0aHJlYWRfc2VsZigp
KTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0g
ICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiB7CiAgICAg
amF2YVNjcmlwdFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CiAKLSAgICBw
dGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50OyBpKyspIHsKLSAgICAgICAgcHRo
cmVhZF90IHB0aHJlYWQ7Ci0gICAgICAgIHB0aHJlYWRfY3JlYXRlKCZwdGhyZWFkLCAwLCAmcnVu
SmF2YVNjcmlwdFRocmVhZCwgMCk7Ci0gICAgICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJlYWQpOwot
ICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5hZGQocHRocmVhZCk7Ci0gICAgfQorICAgIE11
dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogCi0gICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsgKytpKQorICAgICAgICBqYXZhU2Ny
aXB0VGhyZWFkcygpLmFkZChjcmVhdGVUaHJlYWQoJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAsIDAp
KTsKIH0KIAogdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQogewotICAgIHB0aHJlYWRfbXV0
ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICBqYXZhU2NyaXB0VGhyZWFk
c1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7CisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2Nr
ZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHNT
aG91bGRUZXJtaW5hdGUgPSB0cnVlOworICAgIH0KIAotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBWZWN0b3I8VGhyZWFkSWRlbnRpZmllciwg
amF2YVNjcmlwdFRocmVhZHNDb3VudD4gdGhyZWFkczsKKyAgICB7CisgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOworICAgICAgICBjb3B5VG9WZWN0
b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFkcyk7CisgICAgICAgIEFTU0VSVCh0aHJlYWRz
LnNpemUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKKyAgICB9CiAKLSAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOwotICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhyZWFkcygpLT5zaXpl
KCk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7ICsr
aSkKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkc1tpXSk7CiAKLSAgICAg
ICAgaWYgKCF0aHJlYWRDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOworICAgIGphdmFTY3JpcHRU
aHJlYWRzKCkuY2xlYXIoKTsKIAotICAgICAgICB1c2xlZXAoMTAwMCk7Ci0gICAgfQorICAgIEpT
Q29udGV4dEdyb3VwUmVsZWFzZShqYXZhU2NyaXB0VGhyZWFkc0dyb3VwKTsKIH0KSW5kZXg6IER1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ5ODIwKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsNyBAQAogCQkyOUNGQkExMDEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlci5oICovOyB9OwogCQkyOUNGQkExMTEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlDRkJBMEYxMjI3MzZFNjAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
LmNwcCAqLzsgfTsKIAkJMjlDRkJBMkUxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
TWFjLm1tICovOyB9OworCQkyQ0U4OEZBMjE3MTI0RDhDMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgKi87
IH07CiAJCTJENDAzRjA1MTUwODcxRjkwMDUzNThEMiAvKiBDYXJib24uZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUU4MjU3RUYwOEQy
MjM4OTAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsgKi87IH07CiAJCTJENDAzRjA2MTUwODcx
RjkwMDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRGNjA4OTA4QjEzNkRBMDBFOTc0NUYgLyogQ29jb2Eu
ZnJhbWV3b3JrICovOyB9OwogCQkyRDQwM0YwODE1MDg3MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDIzQkNCODhGMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVuR0wuZnJhbWV3b3JrICovOyB9OwpAQCAt
MTIyLDcgKzEyMyw2IEBACiAJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMyIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0gKi87IH07CiAJCUJDMEUyNjE1MEUyREE0QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmls
aXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMzIC8qIEFjY2Vzc2liaWxpdHlDb21tb25NYWMu
bW0gKi87IH07CiAJCUJDNDc0MTJBMEQwMzhBNEMwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFk
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ3
NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZy5oICovOyB9OwotCQlC
QzQ3NDE0MTBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDc0MTQw
MEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwICovOyB9
OwogCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOUQ5MDIxMEM5NzQ3MkQwMDk5
QTRBMyAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQlCQzlEOTAyNTBDOTc0NzJFMDA5OUE0QTMg
LyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzlEOTAyMjBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlLmggKi87IH07CiAJCUJD
OUQ5MDI2MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWVJdGVtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlEOTAyMzBDOTc0NzJFMDA5OUE0QTMg
LyogV29ya1F1ZXVlSXRlbS5oICovOyB9OwpAQCAtMjczLDYgKzI3Myw3IEBACiAJCTI5Q0ZCQTBF
MTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEwRjEyMjczNkU2MDBCQzMwQzAgLyogQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkNFODhGQTExNzEyNENFRTAwNzM0
RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJENDAzRUEyMTUwODcxNDIwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IExheW91dFRlc3RIZWxwZXIubTsg
cGF0aCA9IG1hYy9MYXlvdXRUZXN0SGVscGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENDAzRjE5MTUwODcxRjkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBMYXlvdXRUZXN0SGVscGVy
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkzMTExN0IzQTE1RDlBNTZB
MDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBwYXRoID0g
bWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzM2LDcgKzMzNyw2IEBACiAJCUJDMEUyNjE0MEUyREE0QzYwMDFCNkJDMiAvKiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFjY2Vzc2liaWxpdHlDb21tb25N
YWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRU
aHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFRo
cmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzQ3NDE0MDBEMDM4QTU3
MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3JpcHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA7
IHBhdGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlEOTAyMTBDOTc0NzJEMDA5OUE0QTMgLyogV29ya1F1
ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlEOTAyMjBDOTc0NzJFMDA5OUE0
QTMgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5RDkwMjMwQzk3NDcyRTAw
OTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdvcmtRdWV1ZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1Niwx
MiArNDU2LDEyIEBACiAJCQkJQThCOTFCRjcwQ0Y1MjJCNDAwOEY5MUZGIC8qIENoZWNrZWRNYWxs
b2MuY3BwICovLAogCQkJCUE4QjkxQkY5MENGNTIyQjQwMDhGOTFGRiAvKiBDaGVja2VkTWFsbG9j
LmggKi8sCiAJCQkJQkM0NzQxMjkwRDAzOEE0QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRp
bmcuaCAqLywKLQkJCQlCQzQ3NDE0MDBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVh
ZGluZ1B0aHJlYWRzLmNwcCAqLywKIAkJCQlCQ0ExOEMwQTBDOUI1OUVGMDAxMTQzNjkgLyogRHVt
cFJlbmRlclRyZWVNYWMuaCAqLywKIAkJCQlCQ0ExOEI3MzBDOUIwOEYxMDAxMTQzNjkgLyogRHVt
cFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCAqLywKIAkJCQlCQ0ExOEI3NDBDOUIwOEYxMDAxMTQz
NjkgLyogRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJQThENzlDRTgwRkMy
OEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLmggKi8sCiAJ
CQkJQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5n
U291cmNlLm0gKi8sCisJCQkJMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRU
aHJlYWRpbmcuY3BwICovLAogCQkJCTQ0QTk5NzgyMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNo
aXZlRHVtcFN1cHBvcnQuaCAqLywKIAkJCQk0NEE5OTc4MzBGQ0RFODY0MDA1ODBGMTAgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywKIAkJCQk0NDA1OTA3MDEyNjg0NTM4MDBDRkQ0OEQg
LyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICovLApAQCAtOTg1LDcgKzk4NSw3IEBACiAJ
CQkJQkNBMThCMjMwQzlCMDE0QjAwMTE0MzY5IC8qIEdDQ29udHJvbGxlck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUFBNUExNUVGMTZFMTVDRDAwMEY3QzU2MSAvKiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5
MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKLQkJCQlCQzQ3NDE0MTBEMDM4
QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTJDRTg4RkEyMTcxMjREOEMwMDczNEZDMCAvKiBKYXZhU2NyaXB0VGhyZWFkaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMTE3QjNEMTVEOUE1
NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEI3MjBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIu
bSBpbiBTb3VyY2VzICovLApJbmRleDogRHVtcFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlw
dFRocmVhZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAxNDk4
MjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5n
UHRocmVhZHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdt
YWlsLmNvbSkKLSAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGlu
Zy5oIgotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQu
aD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0KLXN0YXRpYyBKU0NvbnRleHRHcm91cFJlZiBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwOwotCi1z
dGF0aWMgcHRocmVhZF9tdXRleF90IGphdmFTY3JpcHRUaHJlYWRzTXV0ZXggPSBQVEhSRUFEX01V
VEVYX0lOSVRJQUxJWkVSOwotc3RhdGljIGJvb2wgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJt
aW5hdGU7Ci0KLXN0YXRpYyBjb25zdCBpbnQgamF2YVNjcmlwdFRocmVhZHNDb3VudCA9IDQ7Ci0K
LXR5cGVkZWYgSGFzaFNldDxwdGhyZWFkX3Q+IFRocmVhZFNldDsKLQotc3RhdGljIFRocmVhZFNl
dCogamF2YVNjcmlwdFRocmVhZHMoKQotewotICAgIEFTU0VSVChwdGhyZWFkX211dGV4X3RyeWxv
Y2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpID09IEVCVVNZKTsKLSAgICBzdGF0aWMgVGhyZWFk
U2V0IHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzOwotICAgIHJldHVybiAmc3RhdGljSmF2YVNjcmlw
dFRocmVhZHM7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3Ag
dW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUKLS8vIGJlY29tZXMgdHJ1ZSBv
ciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhy
ZWFkIGFuZCBleGl0Lgotdm9pZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCi17Ci0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdCA9Ci0gICAgICAgICJ2YXIgYXJyYXkg
PSBbXTsiCi0gICAgICAgICJmb3IgKHZhciBpID0gMDsgaSA8IDEwMjQ7IGkrKykgeyIKLSAgICAg
ICAgIiAgICBhcnJheS5wdXNoKFN0cmluZyhpKSk7IgotICAgICAgICAifSI7Ci0KLSAgICBwdGhy
ZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgIEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHggPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJl
YWRzR3JvdXAsIDApOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFk
c011dGV4KTsKLQotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7Ci0gICAgSlNTdHJpbmdSZWYgc2NyaXB0UmVmID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoc2NyaXB0KTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVh
ZHNNdXRleCk7Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2so
JmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3JpcHQoY3R4LCBzY3JpcHRSZWYsIDAsIDAsIDEsICZl
eGNlcHRpb24pOwotICAgICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7Ci0gICAgICAgIHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgICAgICBwdGhyZWFk
X211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICBzaXplX3QgdmFs
dWVzQ291bnQgPSAxMDI0OwotICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzQ291bnQ7ICsraSkKLSAgICAg
ICAgICAgIHZhbHVlc1tpXSA9IEpTT2JqZWN0TWFrZShjdHgsIDAsIDApOwotICAgICAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgLy8g
Q2hlY2sgZm9yIGNhbmNlbGxhdGlvbi4KLSAgICAgICAgaWYgKGphdmFTY3JpcHRUaHJlYWRzU2hv
dWxkVGVybWluYXRlKQotICAgICAgICAgICAgZ290byBkb25lOwotCi0gICAgICAgIC8vIFJlc3Bh
d24gcHJvYmFiaWxpc3RpY2FsbHkuCi0gICAgICAgIGlmIChyYW5kb20oKSAlIDUgPT0gMCkgewot
ICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsK
LSAgICAgICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOwotICAgICAgICAgICAgcHRocmVhZF9jcmVh
dGUoJnB0aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgICAgIHB0
aHJlYWRfZGV0YWNoKHB0aHJlYWQpOwotICAgICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+
YWRkKHB0aHJlYWQpOwotICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3Jp
cHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAg
fQotCi1kb25lOgotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdFJlZik7Ci0gICAgSlNHYXJiYWdlQ29sbGVj
dChjdHgpOwotICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY3R4KTsKLSAgICBqYXZhU2NyaXB0
VGhyZWFkcygpLT5yZW1vdmUocHRocmVhZF9zZWxmKCkpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5s
b2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBz
dGFydEphdmFTY3JpcHRUaHJlYWRzKCkKLXsKLSAgICBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwID0g
SlNDb250ZXh0R3JvdXBDcmVhdGUoKTsKLQotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNj
cmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGphdmFTY3JpcHRU
aHJlYWRzQ291bnQ7IGkrKykgewotICAgICAgICBwdGhyZWFkX3QgcHRocmVhZDsKLSAgICAgICAg
cHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAg
ICAgICAgcHRocmVhZF9kZXRhY2gocHRocmVhZCk7Ci0gICAgICAgIGphdmFTY3JpcHRUaHJlYWRz
KCktPmFkZChwdGhyZWFkKTsKLSAgICB9Ci0KLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2
YVNjcmlwdFRocmVhZHNNdXRleCk7Ci19Ci0KLXZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkK
LXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0g
ICAgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUgPSB0cnVlOwotCi0gICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKLSAgICAgICAgaW50IHRocmVhZENvdW50ID0gamF2YVNjcmlwdFRocmVhZHMoKS0+c2l6ZSgp
OwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7
Ci0KLSAgICAgICAgaWYgKCF0aHJlYWRDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIHVzbGVlcCgxMDAwKTsKLSAgICB9Ci19Cg==
</data>
<flag name="commit-queue"
          id="222576"
          type_id="3"
          status="-"
          setter="paroga"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201256</attachid>
            <date>2013-05-09 11:20:03 -0700</date>
            <delta_ts>2013-05-09 11:20:03 -0700</delta_ts>
            <desc>Rebased Patch (only for EWS)</desc>
            <filename>bug-92505b.patch</filename>
            <type>text/plain</type>
            <size>26620</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0OTgyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEzLTA1LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFtEUlRdIFJlcGxhY2UgSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRz
LmNwcCB3aXRoIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjUwNQorCisgICAgICAgIFJldmlld2VkIGJ5IEJy
ZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0phdmFT
Y3JpcHRUaHJlYWRpbmcuY3BwOiBDb3BpZWQgZnJvbSBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9K
YXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwLgorICAgICAgICAoamF2YVNjcmlwdFRocmVh
ZHNNdXRleCk6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgIChydW5KYXZh
U2NyaXB0VGhyZWFkKToKKyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAg
ICAoc3RvcEphdmFTY3JpcHRUaHJlYWRzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhy
ZWFkczogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2Ny
aXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwOiBSZW1vdmVkLgorCiAyMDEzLTA1LTA5ICBNYXJpbyBT
YW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gVXBkYXRlIFNpbW9uIFBlbmEgZW1haWwgb24gaGlzIGJlaGFsZi4KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNDk4
MjApCShmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3B0aHJlYWRzL0phdmFTY3JpcHRUaHJlYWRp
bmdQdGhyZWFkcy5jcHA6MTQ5ODIwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlw
dFRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogICAgICAgICAgIChDKSAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNA
Z21haWwuY29tKQorICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0VGhyZWFk
aW5nLmgiCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW5jbHVkZSA8cHRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKworc3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7CisK
K3N0YXRpYyBwdGhyZWFkX211dGV4X3QgamF2YVNjcmlwdFRocmVhZHNNdXRleCA9IFBUSFJFQURf
TVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRl
cm1pbmF0ZTsKKworc3RhdGljIGNvbnN0IGludCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50ID0gNDsK
KwordHlwZWRlZiBIYXNoU2V0PHB0aHJlYWRfdD4gVGhyZWFkU2V0OworCitzdGF0aWMgVGhyZWFk
U2V0KiBqYXZhU2NyaXB0VGhyZWFkcygpCit7CisgICAgQVNTRVJUKHB0aHJlYWRfbXV0ZXhfdHJ5
bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCkgPT0gRUJVU1kpOworICAgIHN0YXRpYyBUaHJl
YWRTZXQgc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CisgICAgcmV0dXJuICZzdGF0aWNKYXZhU2Ny
aXB0VGhyZWFkczsKK30KKworLy8gVGhpcyBmdW5jdGlvbiBleGVyY2lzZXMgSlNDIGluIGEgbG9v
cCB1bnRpbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZQorLy8gYmVjb21lcyB0cnVl
IG9yIGl0IHByb2JhYmlsaXN0aWNhbGx5IGRlY2lkZXMgdG8gc3Bhd24gYSByZXBsYWNlbWVudCB0
aHJlYWQgYW5kIGV4aXQuCit2b2lkKiBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqIGFyZykKK3sK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2NyaXB0ID0KKyAgICAgICAgInZhciBhcnJh
eSA9IFtdOyIKKyAgICAgICAgImZvciAodmFyIGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7IgorICAg
ICAgICAiICAgIGFycmF5LnB1c2goU3RyaW5nKGkpKTsiCisgICAgICAgICJ9IjsKKworICAgIHB0
aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisgICAgSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2YVNjcmlwdFRo
cmVhZHNHcm91cCwgMCk7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgpOworCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011
dGV4KTsKKyAgICBKU1N0cmluZ1JlZiBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhzY3JpcHQpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KTsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9j
aygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gMDsKKyAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwgMSwg
JmV4Y2VwdGlvbik7CisgICAgICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKyAgICAgICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworCisgICAgICAgIHB0aHJl
YWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisgICAgICAgIHNpemVfdCB2
YWx1ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWVzW3ZhbHVlc0NvdW50
XTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXNDb3VudDsgKytpKQorICAg
ICAgICAgICAgdmFsdWVzW2ldID0gSlNPYmplY3RNYWtlKGN0eCwgMCwgMCk7CisgICAgICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKworICAgICAgICAv
LyBDaGVjayBmb3IgY2FuY2VsbGF0aW9uLgorICAgICAgICBpZiAoamF2YVNjcmlwdFRocmVhZHNT
aG91bGRUZXJtaW5hdGUpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgLy8gUmVz
cGF3biBwcm9iYWJpbGlzdGljYWxseS4KKyAgICAgICAgaWYgKHJhbmRvbSgpICUgNSA9PSAwKSB7
CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgp
OworICAgICAgICAgICAgcHRocmVhZF90IHB0aHJlYWQ7CisgICAgICAgICAgICBwdGhyZWFkX2Ny
ZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOworICAgICAgICAgICAg
cHRocmVhZF9kZXRhY2gocHRocmVhZCk7CisgICAgICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygp
LT5hZGQocHRocmVhZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNj
cmlwdFRocmVhZHNNdXRleCk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAg
ICB9CisKK2RvbmU6CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011
dGV4KTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0UmVmKTsKKyAgICBKU0dhcmJhZ2VDb2xs
ZWN0KGN0eCk7CisgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjdHgpOworICAgIGphdmFTY3Jp
cHRUaHJlYWRzKCktPnJlbW92ZShwdGhyZWFkX3NlbGYoKSk7CisgICAgcHRocmVhZF9tdXRleF91
bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAgIHJldHVybiAwOworfQorCit2b2lk
IHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQoreworICAgIGphdmFTY3JpcHRUaHJlYWRzR3JvdXAg
PSBKU0NvbnRleHRHcm91cENyZWF0ZSgpOworCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZh
U2NyaXB0VGhyZWFkc011dGV4KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgamF2YVNjcmlw
dFRocmVhZHNDb3VudDsgaSsrKSB7CisgICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOworICAgICAg
ICBwdGhyZWFkX2NyZWF0ZSgmcHRocmVhZCwgMCwgJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDApOwor
ICAgICAgICBwdGhyZWFkX2RldGFjaChwdGhyZWFkKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVh
ZHMoKS0+YWRkKHB0aHJlYWQpOworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZq
YXZhU2NyaXB0VGhyZWFkc011dGV4KTsKK30KKwordm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMo
KQoreworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisK
KyAgICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7CisKKyAgICBwdGhy
ZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7CisKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOworICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2NyaXB0VGhyZWFkcygpLT5zaXpl
KCk7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKKworICAgICAgICBpZiAoIXRocmVhZENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgdXNsZWVwKDEwMDApOworICAgIH0KK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNDk4MjApCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Miw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5p
cyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqICAgICAgICAgICAoQykgMjAxMiBQYXRyaWNrIEdh
bnN0ZXJlIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzEsMzEgKzMyLDMzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSmF2
YVNjcmlwdFRocmVhZGluZy5oIgogCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgotI2lu
Y2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi1zdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRocmVhZHNHcm91cDsK
LQotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBqYXZhU2NyaXB0VGhyZWFkc011dGV4ID0gUFRIUkVB
RF9NVVRFWF9JTklUSUFMSVpFUjsKK3N0YXRpYyBjb25zdCBzaXplX3QgamF2YVNjcmlwdFRocmVh
ZHNDb3VudCA9IDQ7CiBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0
ZTsKK3N0YXRpYyBKU0NvbnRleHRHcm91cFJlZiBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwOwogCi1z
dGF0aWMgY29uc3QgaW50IGphdmFTY3JpcHRUaHJlYWRzQ291bnQgPSA0OwotCi10eXBlZGVmIEhh
c2hTZXQ8cHRocmVhZF90PiBUaHJlYWRTZXQ7CitzdGF0aWMgTXV0ZXgmIGphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN0YXRpY011dGV4
LCAoKSk7CisgICAgcmV0dXJuIHN0YXRpY011dGV4OworfQogCi1zdGF0aWMgVGhyZWFkU2V0KiBq
YXZhU2NyaXB0VGhyZWFkcygpCit0eXBlZGVmIEhhc2hTZXQ8VGhyZWFkSWRlbnRpZmllcj4gVGhy
ZWFkU2V0Oworc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAgIEFT
U0VSVChwdGhyZWFkX211dGV4X3RyeWxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpID09IEVC
VVNZKTsKLSAgICBzdGF0aWMgVGhyZWFkU2V0IHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzOwotICAg
IHJldHVybiAmc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzLCAoKSk7CisgICAgQVNTRVJUKCFq
YXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9jaygpKTsKKyAgICByZXR1cm4gc3RhdGljSmF2
YVNjcmlwdFRocmVhZHM7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBh
IGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUKIC8vIGJlY29tZXMg
dHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1l
bnQgdGhyZWFkIGFuZCBleGl0Lgotdm9pZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcp
Cit2b2lkIHJ1bkphdmFTY3JpcHRUaHJlYWQodm9pZCopCiB7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHNjcmlwdCA9CiAgICAgICAgICJ2YXIgYXJyYXkgPSBbXTsiCkBAIC02Myw4NiAr
NjYsODYgQEAgdm9pZCogcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCiAgICAgICAgICIg
ICAgYXJyYXkucHVzaChTdHJpbmcoaSkpOyIKICAgICAgICAgIn0iOwogCi0gICAgcHRocmVhZF9t
dXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICBKU0dsb2JhbENvbnRleHRS
ZWYgY3R4ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqYXZhU2NyaXB0VGhyZWFkc0dy
b3VwLCAwKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRl
eCk7Ci0KLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwot
ICAgIEpTU3RyaW5nUmVmIHNjcmlwdFJlZiA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHNjcmlwdCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOwotCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZh
U2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgICAgICBKU0V2YWx1YXRlU2NyaXB0KGN0eCwgc2NyaXB0UmVmLCAwLCAwLCAxLCAmZXhjZXB0
aW9uKTsKLSAgICAgICAgQVNTRVJUKCFleGNlcHRpb24pOwotICAgICAgICBwdGhyZWFkX211dGV4
X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgcHRocmVhZF9tdXRl
eF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgc2l6ZV90IHZhbHVlc0Nv
dW50ID0gMTAyNDsKLSAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZXNbdmFsdWVzQ291bnRdOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCi0gICAgICAgICAg
ICB2YWx1ZXNbaV0gPSBKU09iamVjdE1ha2UoY3R4LCAwLCAwKTsKLSAgICAgICAgcHRocmVhZF9t
dXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgICAgIC8vIENoZWNr
IGZvciBjYW5jZWxsYXRpb24uCi0gICAgICAgIGlmIChqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRl
cm1pbmF0ZSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICBKU0dsb2JhbENvbnRleHRSZWYg
Y3R4OworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRz
TXV0ZXgoKSk7CisgICAgICAgIGN0eCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoamF2
YVNjcmlwdFRocmVhZHNHcm91cCwgMCk7CisgICAgfQogCi0gICAgICAgIC8vIFJlc3Bhd24gcHJv
YmFiaWxpc3RpY2FsbHkuCi0gICAgICAgIGlmIChyYW5kb20oKSAlIDUgPT0gMCkgewotICAgICAg
ICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAg
ICAgICAgIHB0aHJlYWRfdCBwdGhyZWFkOwotICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0
aHJlYWQsIDAsICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgICAgIHB0aHJlYWRf
ZGV0YWNoKHB0aHJlYWQpOwotICAgICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0
aHJlYWQpOwotICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgpOwotICAgICAgICAgICAgZ290byBkb25lOworICAgIEpTU3RyaW5nUmVmIHNjcmlw
dFJlZjsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFk
c011dGV4KCkpOworICAgICAgICBzY3JpcHRSZWYgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhzY3JpcHQpOworICAgIH0KKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwor
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNFdmFs
dWF0ZVNjcmlwdChjdHgsIHNjcmlwdFJlZiwgMCwgMCwgMSwgJmV4Y2VwdGlvbik7CisgICAgICAg
ICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAg
ICAgICAgIGNvbnN0IHNpemVfdCB2YWx1ZXNDb3VudCA9IDEwMjQ7CisgICAgICAgICAgICBKU1Zh
bHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlc0NvdW50OyArK2kpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gSlNP
YmplY3RNYWtlKGN0eCwgMCwgMCk7CiAgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAg
ICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAg
ICAgIGlmIChqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2Fs
bHkuCisgICAgICAgIGlmIChyYW5kKCkgJSA1KQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CisgICAg
ICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkID0gY3VycmVudFRocmVhZCgpOworICAgICAgICBk
ZXRhY2hUaHJlYWQodGhyZWFkKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUo
dGhyZWFkKTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5hZGQoY3JlYXRlVGhyZWFkKCZy
dW5KYXZhU2NyaXB0VGhyZWFkLCAwLCAwKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAotZG9u
ZToKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwogICAgIEpTU3Ry
aW5nUmVsZWFzZShzY3JpcHRSZWYpOwogICAgIEpTR2FyYmFnZUNvbGxlY3QoY3R4KTsKICAgICBK
U0dsb2JhbENvbnRleHRSZWxlYXNlKGN0eCk7Ci0gICAgamF2YVNjcmlwdFRocmVhZHMoKS0+cmVt
b3ZlKHB0aHJlYWRfc2VsZigpKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlw
dFRocmVhZHNNdXRleCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgc3RhcnRKYXZhU2NyaXB0
VGhyZWFkcygpCiB7CiAgICAgamF2YVNjcmlwdFRocmVhZHNHcm91cCA9IEpTQ29udGV4dEdyb3Vw
Q3JlYXRlKCk7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0
ZXgpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBqYXZhU2NyaXB0VGhyZWFkc0NvdW50OyBp
KyspIHsKLSAgICAgICAgcHRocmVhZF90IHB0aHJlYWQ7Ci0gICAgICAgIHB0aHJlYWRfY3JlYXRl
KCZwdGhyZWFkLCAwLCAmcnVuSmF2YVNjcmlwdFRocmVhZCwgMCk7Ci0gICAgICAgIHB0aHJlYWRf
ZGV0YWNoKHB0aHJlYWQpOwotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5hZGQocHRocmVh
ZCk7Ci0gICAgfQorICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkpOwogCi0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsgKytp
KQorICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChjcmVhdGVUaHJlYWQoJnJ1bkphdmFT
Y3JpcHRUaHJlYWQsIDAsIDApKTsKIH0KIAogdm9pZCBzdG9wSmF2YVNjcmlwdFRocmVhZHMoKQog
ewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAg
ICBqYXZhU2NyaXB0VGhyZWFkc1Nob3VsZFRlcm1pbmF0ZSA9IHRydWU7CisgICAgeworICAgICAg
ICBNdXRleExvY2tlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKKyAgICAgICAg
amF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUgPSB0cnVlOworICAgIH0KIAotICAgIHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBWZWN0b3I8
VGhyZWFkSWRlbnRpZmllciwgamF2YVNjcmlwdFRocmVhZHNDb3VudD4gdGhyZWFkczsKKyAgICB7
CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwor
ICAgICAgICBjb3B5VG9WZWN0b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFkcyk7CisgICAg
ICAgIEFTU0VSVCh0aHJlYWRzLnNpemUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKKyAg
ICB9CiAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmph
dmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICBpbnQgdGhyZWFkQ291bnQgPSBqYXZhU2Ny
aXB0VGhyZWFkcygpLT5zaXplKCk7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZh
U2NyaXB0VGhyZWFkc011dGV4KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGphdmFTY3Jp
cHRUaHJlYWRzQ291bnQ7ICsraSkKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhy
ZWFkc1tpXSk7CiAKLSAgICAgICAgaWYgKCF0aHJlYWRDb3VudCkKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGphdmFTY3JpcHRUaHJlYWRzKCkuY2xlYXIoKTsKIAotICAgICAgICB1c2xlZXAoMTAw
MCk7Ci0gICAgfQorICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZShqYXZhU2NyaXB0VGhyZWFkc0dy
b3VwKTsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ5ODIw
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogCQkyOUNGQkExMDEy
MjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBD
MCAvKiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oICovOyB9OwogCQkyOUNGQkExMTEyMjczNkU2
MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMEYxMjI3MzZFNjAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmNwcCAqLzsgfTsKIAkJMjlDRkJBMkUxMjI3M0ExMDAw
QkMzMEMwIC8qIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRkJBMkQxMjI3M0ExMDAwQkMzMEMwIC8q
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyTWFjLm1tICovOyB9OworCQkyQ0U4OEZBMjE3MTI0RDhD
MDA3MzRGQzAgLyogSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2
YVNjcmlwdFRocmVhZGluZy5jcHAgKi87IH07CiAJCTJENDAzRjA1MTUwODcxRjkwMDUzNThEMiAv
KiBDYXJib24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUU4MjU3RUYwOEQyMjM4OTAwMDUwN0FCIC8qIENhcmJvbi5mcmFtZXdvcmsg
Ki87IH07CiAJCTJENDAzRjA2MTUwODcxRjkwMDUzNThEMiAvKiBDb2NvYS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODRGNjA4OTA4
QjEzNkRBMDBFOTc0NUYgLyogQ29jb2EuZnJhbWV3b3JrICovOyB9OwogCQkyRDQwM0YwODE1MDg3
MUY5MDA1MzU4RDIgLyogT3BlbkdMLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIzQkNCODhGMEVBNTc2MjMwMDNDNjI4OSAvKiBPcGVu
R0wuZnJhbWV3b3JrICovOyB9OwpAQCAtMTIyLDcgKzEyMyw2IEBACiAJCUJDMEUyNjE1MEUyREE0
QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMy
IC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gKi87IH07CiAJCUJDMEUyNjE1MEUyREE0
QzYwMDFCNkJDMyAvKiBBY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwRTI2MTQwRTJEQTRDNjAwMUI2QkMzIC8q
IEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gKi87IH07CiAJCUJDNDc0MTJBMEQwMzhBNEMwMDcy
QjAwNiAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ3NDEyOTBEMDM4QTRDMDA3MkIwMDYgLyogSmF2YVNjcmlw
dFRocmVhZGluZy5oICovOyB9OwotCQlCQzQ3NDE0MTBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNj
cmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNDc0MTQwMEQwMzhBNTcwMDcyQjAwNiAvKiBKYXZhU2NyaXB0VGhy
ZWFkaW5nUHRocmVhZHMuY3BwICovOyB9OwogCQlCQzlEOTAyNDBDOTc0NzJFMDA5OUE0QTMgLyog
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOUQ5MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQlC
QzlEOTAyNTBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlEOTAyMjBDOTc0NzJFMDA5OUE0QTMgLyog
V29ya1F1ZXVlLmggKi87IH07CiAJCUJDOUQ5MDI2MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVl
dWVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzlEOTAyMzBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlSXRlbS5oICovOyB9OwpAQCAtMjcz
LDYgKzI3Myw3IEBACiAJCTI5Q0ZCQTBFMTIyNzM2RTYwMEJDMzBDMCAvKiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEwRjEy
MjczNkU2MDBCQzMwQzAgLyogQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUNGQkEyRDEyMjczQTEwMDBCQzMwQzAgLyog
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgcGF0aCA9IG1hYy9B
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDAzRUEyMTUwODcxNDIwMDUzNThE
MiAvKiBMYXlvdXRUZXN0SGVscGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFt
ZSA9IExheW91dFRlc3RIZWxwZXIubTsgcGF0aCA9IG1hYy9MYXlvdXRUZXN0SGVscGVyLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDAzRjE5MTUwODcxRjkwMDUzNThEMiAvKiBM
YXlvdXRUZXN0SGVscGVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBMYXlvdXRUZXN0SGVscGVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkzMTExN0IzQTE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tXZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM2LDcgKzMzNyw2IEBACiAJCUJDMEUy
NjE0MEUyREE0QzYwMDFCNkJDMiAvKiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dE1hYy5tbTsgcGF0aCA9IG1hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzBFMjYxNDBFMkRBNEM2MDAxQjZCQzMgLyogQWNjZXNz
aWJpbGl0eUNvbW1vbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IEFjY2Vzc2liaWxpdHlDb21tb25NYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NzQxMjkwRDAzOEE0
QzAwNzJCMDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSmF2YVNjcmlwdFRocmVhZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQzQ3NDE0MDBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0
aHJlYWRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEphdmFTY3Jp
cHRUaHJlYWRpbmdQdGhyZWFkcy5jcHA7IHBhdGggPSBwdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFk
aW5nUHRocmVhZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlEOTAyMTBD
OTc0NzJEMDA5OUE0QTMgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzlEOTAyMjBDOTc0NzJFMDA5OUE0QTMgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM5RDkwMjMwQzk3NDcyRTAwOTlBNEEzIC8qIFdvcmtRdWV1ZUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtRdWV1ZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NiwxMiArNDU2LDEyIEBACiAJCQkJQThCOTFCRjcwQ0Y1MjJC
NDAwOEY5MUZGIC8qIENoZWNrZWRNYWxsb2MuY3BwICovLAogCQkJCUE4QjkxQkY5MENGNTIyQjQw
MDhGOTFGRiAvKiBDaGVja2VkTWFsbG9jLmggKi8sCiAJCQkJQkM0NzQxMjkwRDAzOEE0QzAwNzJC
MDA2IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuaCAqLywKLQkJCQlCQzQ3NDE0MDBEMDM4QTU3MDA3
MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLywKIAkJCQlCQ0ExOEMw
QTBDOUI1OUVGMDAxMTQzNjkgLyogRHVtcFJlbmRlclRyZWVNYWMuaCAqLywKIAkJCQlCQ0ExOEI3
MzBDOUIwOEYxMDAxMTQzNjkgLyogRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8uaCAqLywKIAkJ
CQlCQ0ExOEI3NDBDOUIwOEYxMDAxMTQzNjkgLyogRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8u
bW0gKi8sCiAJCQkJQThENzlDRTgwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmls
ZURyYWdnaW5nU291cmNlLmggKi8sCiAJCQkJQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1
bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi8sCisJCQkJMkNFODhGQTExNzEyNENF
RTAwNzM0RkMwIC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwICovLAogCQkJCTQ0QTk5NzgyMEZD
REU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLywKIAkJCQk0NEE5OTc4
MzBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywKIAkJCQk0
NDA1OTA3MDEyNjg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICov
LApAQCAtOTg1LDcgKzk4NSw3IEBACiAJCQkJQkNBMThCMjMwQzlCMDE0QjAwMTE0MzY5IC8qIEdD
Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBNUExNUVGMTZFMTVDRDAwMEY3
QzU2MSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNl
cyAqLywKLQkJCQlCQzQ3NDE0MTBEMDM4QTU3MDA3MkIwMDYgLyogSmF2YVNjcmlwdFRocmVhZGlu
Z1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJDRTg4RkEyMTcxMjREOEMwMDczNEZD
MCAvKiBKYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQjc4MTY1
MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMTE3QjNEMTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI3MjBDOUIwOERCMDAxMTQzNjkg
LyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvcHRocmVhZHMvSmF2YVNjcmlwdFRocmVhZGluZ1B0aHJlYWRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFk
aW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAxNDk4MjApCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9wdGhyZWFkcy9KYXZhU2NyaXB0VGhyZWFkaW5nUHRocmVhZHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAoQykgMjAwNyBH
cmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKLSAqICAgICAgICAgICAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSmF2YVNjcmlwdFRocmVhZGluZy5oIgotCi0jaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KLXN0YXRpYyBKU0NvbnRleHRHcm91cFJl
ZiBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwOwotCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IGphdmFT
Y3JpcHRUaHJlYWRzTXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwotc3RhdGljIGJv
b2wgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGU7Ci0KLXN0YXRpYyBjb25zdCBpbnQg
amF2YVNjcmlwdFRocmVhZHNDb3VudCA9IDQ7Ci0KLXR5cGVkZWYgSGFzaFNldDxwdGhyZWFkX3Q+
IFRocmVhZFNldDsKLQotc3RhdGljIFRocmVhZFNldCogamF2YVNjcmlwdFRocmVhZHMoKQotewot
ICAgIEFTU0VSVChwdGhyZWFkX211dGV4X3RyeWxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgp
ID09IEVCVVNZKTsKLSAgICBzdGF0aWMgVGhyZWFkU2V0IHN0YXRpY0phdmFTY3JpcHRUaHJlYWRz
OwotICAgIHJldHVybiAmc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7Ci19Ci0KLS8vIFRoaXMgZnVu
Y3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91
bGRUZXJtaW5hdGUKLS8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNp
ZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgotdm9pZCogcnVuSmF2
YVNjcmlwdFRocmVhZCh2b2lkKiBhcmcpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHNjcmlwdCA9Ci0gICAgICAgICJ2YXIgYXJyYXkgPSBbXTsiCi0gICAgICAgICJmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMjQ7IGkrKykgeyIKLSAgICAgICAgIiAgICBhcnJheS5wdXNoKFN0cmluZyhp
KSk7IgotICAgICAgICAifSI7Ci0KLSAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOwotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjdHggPSBKU0dsb2JhbENvbnRl
eHRDcmVhdGVJbkdyb3VwKGphdmFTY3JpcHRUaHJlYWRzR3JvdXAsIDApOwotICAgIHB0aHJlYWRf
bXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLQotICAgIHB0aHJlYWRfbXV0
ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNTdHJpbmdSZWYgc2NyaXB0
UmVmID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc2NyaXB0KTsKLSAgICBwdGhyZWFk
X211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICB3aGlsZSAoMSkg
ewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwot
ICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAgIEpTRXZhbHVhdGVTY3Jp
cHQoY3R4LCBzY3JpcHRSZWYsIDAsIDAsIDEsICZleGNlcHRpb24pOwotICAgICAgICBBU1NFUlQo
IWV4Y2VwdGlvbik7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhy
ZWFkc011dGV4KTsKLQotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmphdmFTY3JpcHRUaHJl
YWRzTXV0ZXgpOwotICAgICAgICBzaXplX3QgdmFsdWVzQ291bnQgPSAxMDI0OwotICAgICAgICBK
U1ZhbHVlUmVmIHZhbHVlc1t2YWx1ZXNDb3VudF07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFsdWVzQ291bnQ7ICsraSkKLSAgICAgICAgICAgIHZhbHVlc1tpXSA9IEpTT2JqZWN0
TWFrZShjdHgsIDAsIDApOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlw
dFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbmNlbGxhdGlvbi4KLSAg
ICAgICAgaWYgKGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlKQotICAgICAgICAgICAg
Z290byBkb25lOwotCi0gICAgICAgIC8vIFJlc3Bhd24gcHJvYmFiaWxpc3RpY2FsbHkuCi0gICAg
ICAgIGlmIChyYW5kb20oKSAlIDUgPT0gMCkgewotICAgICAgICAgICAgcHRocmVhZF9tdXRleF9s
b2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgICAgIHB0aHJlYWRfdCBwdGhy
ZWFkOwotICAgICAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAsICZydW5KYXZhU2Ny
aXB0VGhyZWFkLCAwKTsKLSAgICAgICAgICAgIHB0aHJlYWRfZGV0YWNoKHB0aHJlYWQpOwotICAg
ICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS0+YWRkKHB0aHJlYWQpOwotICAgICAgICAgICAg
cHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotICAgICAgICAg
ICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgfQotCi1kb25lOgotICAgIHB0aHJlYWRfbXV0
ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0gICAgSlNTdHJpbmdSZWxlYXNlKHNj
cmlwdFJlZik7Ci0gICAgSlNHYXJiYWdlQ29sbGVjdChjdHgpOwotICAgIEpTR2xvYmFsQ29udGV4
dFJlbGVhc2UoY3R4KTsKLSAgICBqYXZhU2NyaXB0VGhyZWFkcygpLT5yZW1vdmUocHRocmVhZF9z
ZWxmKCkpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBzdGFydEphdmFTY3JpcHRUaHJlYWRzKCkKLXsK
LSAgICBqYXZhU2NyaXB0VGhyZWFkc0dyb3VwID0gSlNDb250ZXh0R3JvdXBDcmVhdGUoKTsKLQot
ICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7IGkrKykgewotICAgICAg
ICBwdGhyZWFkX3QgcHRocmVhZDsKLSAgICAgICAgcHRocmVhZF9jcmVhdGUoJnB0aHJlYWQsIDAs
ICZydW5KYXZhU2NyaXB0VGhyZWFkLCAwKTsKLSAgICAgICAgcHRocmVhZF9kZXRhY2gocHRocmVh
ZCk7Ci0gICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCktPmFkZChwdGhyZWFkKTsKLSAgICB9Ci0K
LSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci19Ci0K
LXZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkKLXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2so
JmphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOwotCi0gICAgamF2YVNjcmlwdFRocmVhZHNTaG91bGRU
ZXJtaW5hdGUgPSB0cnVlOwotCi0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJmphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgcHRocmVhZF9tdXRl
eF9sb2NrKCZqYXZhU2NyaXB0VGhyZWFkc011dGV4KTsKLSAgICAgICAgaW50IHRocmVhZENvdW50
ID0gamF2YVNjcmlwdFRocmVhZHMoKS0+c2l6ZSgpOwotICAgICAgICBwdGhyZWFkX211dGV4X3Vu
bG9jaygmamF2YVNjcmlwdFRocmVhZHNNdXRleCk7Ci0KLSAgICAgICAgaWYgKCF0aHJlYWRDb3Vu
dCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHVzbGVlcCgxMDAwKTsKLSAgICB9Ci19
Cg==
</data>
<flag name="commit-queue"
          id="222578"
          type_id="3"
          status="-"
          setter="paroga"
    />
          </attachment>
      

    </bug>

</bugzilla>