<?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>60595</bug_id>
          
          <creation_ts>2011-05-10 16:10:12 -0700</creation_ts>
          <short_desc>Mac WebKit2 WebProcess needs a shim to make prompts appear to be from the UIProcess</short_desc>
          <delta_ts>2011-06-18 11:56:00 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401608</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-10 16:10:12 -0700</bug_when>
    <thetext>For future work, Mac WebKit2 WebProcess needs a shim.

It makes sense to land a patch of project file and empty implementation voodoo here in a separate patch.

In radar as &lt;rdar://problem/8814289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401614</commentid>
    <comment_count>1</comment_count>
      <attachid>93037</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-10 16:15:29 -0700</bug_when>
    <thetext>Created attachment 93037
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405097</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 09:42:29 -0700</bug_when>
    <thetext>Retitling to &quot;Mac WebKit2 WebProcess needs a shim to make prompts appear to be from the UIProcess&quot;, and staged patches will come through here today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405107</commentid>
    <comment_count>3</comment_count>
      <attachid>93783</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 09:57:30 -0700</bug_when>
    <thetext>Created attachment 93783
Patch #1 - Add/initialize empty shim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405113</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-05-17 10:03:08 -0700</bug_when>
    <thetext>I think this is bug 51599 (or blocking that bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405114</commentid>
    <comment_count>5</comment_count>
      <attachid>93783</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-17 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 93783
Patch #1 - Add/initialize empty shim

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

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:148
&gt; +    else 

To be future proof, this should check for a WebProcess process type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405121</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 10:16:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 93783 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93783&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:148
&gt; &gt; +    else 
&gt; 
&gt; To be future proof, this should check for a WebProcess process type.

Done.

Landed in r86678</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405138</commentid>
    <comment_count>7</comment_count>
      <attachid>93790</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 10:28:20 -0700</bug_when>
    <thetext>Created attachment 93790
Patch #2 - Add stubs for the first wave of shimmed methods, calling through to the actual functions for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405143</commentid>
    <comment_count>8</comment_count>
      <attachid>93790</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-17 10:35:00 -0700</bug_when>
    <thetext>Comment on attachment 93790
Patch #2 - Add stubs for the first wave of shimmed methods, calling through to the actual functions for now.

Attachment 93790 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8709216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405145</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 10:37:52 -0700</bug_when>
    <thetext>Will make sure I fix that build error before landing - I think SnowLeopard just needs an include there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405149</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 10:40:10 -0700</bug_when>
    <thetext>Yup, worked for me locally.

Landed in r86686</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405156</commentid>
    <comment_count>11</comment_count>
      <attachid>93796</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 10:50:10 -0700</bug_when>
    <thetext>Created attachment 93796
Patch #3 - Add CoreIPC stuff for when we marshall to the UIProcess and back</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405160</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-17 10:52:41 -0700</bug_when>
    <thetext>Attachment 93796 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/Shared/mac/SecItemRequestData.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/Shared/mac/SecItemResponseData.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 2 in 8 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>405164</commentid>
    <comment_count>13</comment_count>
      <attachid>93796</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-17 10:55:11 -0700</bug_when>
    <thetext>Comment on attachment 93796
Patch #3 - Add CoreIPC stuff for when we marshall to the UIProcess and back

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

&gt; Source/WebKit2/Shared/mac/SecItemRequestData.cpp:71
&gt; +    if (!expectAttributes)
&gt; +        return true;
&gt; +    
&gt; +    if (!CoreIPC::decode(decoder, secItemRequestData.m_attributesToMatch))
&gt; +        return false;

Could you change this to

if (expectAttributes &amp;&amp; !CoreIPC::decode(decoder, secItemRequestData.m_attributesToMatch)
    return false;

We prefer having all the if statements in decoders return false and then a single return true at the end.

&gt; Source/WebKit2/Shared/mac/SecItemResponseData.h:46
&gt; +    CFTypeRef leakResultObject() { return m_resultObject.leakRef(); }

Any reason why this couldn&apos;t return a RetainPtr&lt;CFTypeRef&gt; instead? (and be called releaseResultObject).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405170</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 11:02:45 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 93796 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93796&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/mac/SecItemRequestData.cpp:71
&gt; &gt; +    if (!expectAttributes)
&gt; &gt; +        return true;
&gt; &gt; +    
&gt; &gt; +    if (!CoreIPC::decode(decoder, secItemRequestData.m_attributesToMatch))
&gt; &gt; +        return false;
&gt; 
&gt; Could you change this to
&gt; 
&gt; if (expectAttributes &amp;&amp; !CoreIPC::decode(decoder, secItemRequestData.m_attributesToMatch)
&gt;     return false;
&gt; 
&gt; We prefer having all the if statements in decoders return false and then a single return true at the end.

Yup!

&gt; 
&gt; &gt; Source/WebKit2/Shared/mac/SecItemResponseData.h:46
&gt; &gt; +    CFTypeRef leakResultObject() { return m_resultObject.leakRef(); }
&gt; 
&gt; Any reason why this couldn&apos;t return a RetainPtr&lt;CFTypeRef&gt; instead? (and be called releaseResultObject).

No reason.  I&apos;ll do it.

I really want to get around to my &quot;add PassRetainPtr&lt;&gt;&quot; spare-time project one of these days...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405175</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 11:07:09 -0700</bug_when>
    <thetext>I went with just returning a RetainPtr and not clearing the member variable - not really important to do so.

This is an opportunity for cleanup once we have PassRetainPtr&lt;&gt;

Landed in r86688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405194</commentid>
    <comment_count>16</comment_count>
      <attachid>93802</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 11:33:03 -0700</bug_when>
    <thetext>Created attachment 93802
Patch #4 - Implement the shim, and have the UIProcess do the work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405201</commentid>
    <comment_count>17</comment_count>
      <attachid>93802</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-17 11:38:48 -0700</bug_when>
    <thetext>Comment on attachment 93802
Patch #4 - Implement the shim, and have the UIProcess do the work.

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

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:275
&gt; +    OwnPtr&lt;SecItemAPIContext&gt; context = adoptPtr(new SecItemAPIContext);    

I think you can allocate the SecItemAPIContext on the stack here.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:303
&gt; +    OwnPtr&lt;SecItemAPIContext&gt; context = adoptPtr(new SecItemAPIContext);    

Ditto.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:330
&gt; +    OwnPtr&lt;SecItemAPIContext&gt; context = adoptPtr(new SecItemAPIContext);    

Ditto.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:356
&gt; +    OwnPtr&lt;SecItemAPIContext&gt; context = adoptPtr(new SecItemAPIContext);    

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405206</commentid>
    <comment_count>18</comment_count>
      <attachid>93802</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-17 11:50:56 -0700</bug_when>
    <thetext>Comment on attachment 93802
Patch #4 - Implement the shim, and have the UIProcess do the work.

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

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:39
&gt; +    CFTypeRef resultObject;
&gt; +    OSStatus resultCode;

There is no reason to declare this early.

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:50
&gt; +    CFTypeRef resultObject;
&gt; +    OSStatus resultCode;

There is no reason to declare this early.

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:61
&gt; +    OSStatus resultCode;

There is no reason to declare this early.

&gt; Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm:71
&gt; +    OSStatus resultCode;

There is no reason to declare this early.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:250
&gt; +struct SecItemAPIContext
&gt; +{

{ on the wrong line.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:287
&gt; +    SecItemAPIContext* context = (SecItemAPIContext*)voidContext;

We don&apos;t generally use c-style casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405372</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-17 16:15:24 -0700</bug_when>
    <thetext>A bunch of tests are crashing on WebKit2 bots after this change:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28WebKit2%20Tests%29/builds/11734

with the following error:
dyld: could not load inserted library: /Volumes/Big/WebKit-BuildSlave/snowleopard-intel-release-tests-wk2/build/WebKitBuild/Release/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcessShim.dylib

I&apos;m not sure if this is due to this changeset or the bot is being flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405378</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 16:26:02 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; A bunch of tests are crashing on WebKit2 bots after this change:
&gt; http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28WebKit2%20Tests%29/builds/11734
&gt; 
&gt; with the following error:
&gt; dyld: could not load inserted library: /Volumes/Big/WebKit-BuildSlave/snowleopard-intel-release-tests-wk2/build/WebKitBuild/Release/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcessShim.dylib
&gt; 
&gt; I&apos;m not sure if this is due to this changeset or the bot is being flaky.

Well, these changesets introduced the concept of the WebProcessShim.dylib.  But why it&apos;s not getting built on the bots is an unanswered question.  Exploring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405401</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 16:48:36 -0700</bug_when>
    <thetext>BTW, forgot to mention:

Part #4 landed in r86692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405417</commentid>
    <comment_count>22</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 17:24:37 -0700</bug_when>
    <thetext>It&apos;s QTKitServer crashing, and it&apos;s crashing because we&apos;re trying to install the WebProcessShim when we launch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405420</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-05-17 17:30:16 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; It&apos;s QTKitServer crashing, and it&apos;s crashing because we&apos;re trying to install the WebProcessShim when we launch it.

While I continue to explore the real fix to this, the tests should be back up and running after the temporary fix that is r86724</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93037</attachid>
            <date>2011-05-10 16:15:29 -0700</date>
            <delta_ts>2011-05-17 09:57:30 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30289</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTkwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUtMTAgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODE0Mjg5PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk1CisgICAgICAgIE1hYyBXZWJLaXQy
IFdlYlByb2Nlc3MgbmVlZHMgYSBzaGltLgorCisgICAgICAgIENyZWF0ZSBhIGNvbW1vbiBTaGlt
LnhjY29uZmlnIGZvciBib3RoIHRoZSBXZWJQcm9jZXNzIGFuZCBQbHVnaW5Qcm9jZXNzIHRvIHNo
YXJlOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1BsdWdpblByb2Nlc3NTaGltLnhjY29uZmln
OiBSZW1vdmVkLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1NoaW0ueGNjb25maWc6IENvcGll
ZCBmcm9tIENvbmZpZ3VyYXRpb25zL1BsdWdpblByb2Nlc3NTaGltLnhjY29uZmlnLgorICAgICAg
ICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBMb2FkIHRo
ZSBhcHByb3ByaWF0ZSBkeWxpYiBmb3Igc2hpbSBpbnN0YWxsYXRpb24sIGFuZCBpbnN0YWxsIHRo
ZSBXZWJQcm9jZXNzIHNoaW0gaW4gV2ViUHJvY2VzcyBtYWluKCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzTWFpbik6CisKKyAgICAgICAgU2hlbGwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNo
aW0gZm9yIG5vdzoKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbTogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYktpdFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6ZSk6CisKIDIw
MTEtMDUtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9u
cy9QbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZwkocmV2aXNpb24gODYx
ODApCisrKyBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hpbS54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMSwzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0vLyBhcmUgbWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
Ly8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLS8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotLy8gRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0vLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0vLyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0KLSNpbmNsdWRlICJCYXNlVGFyZ2V0LnhjY29uZmlnIgotCi1H
Q0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGU7Ci1QUk9EVUNUX05BTUUgPSBQbHVnaW5Qcm9j
ZXNzU2hpbTsKLVNLSVBfSU5TVEFMTCA9IFlFUzsKLQpJbmRleDogQ29uZmlndXJhdGlvbnMvU2hp
bS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDb25maWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCShy
ZXZpc2lvbiA4NjE4MCkJKGZyb20gQ29uZmlndXJhdGlvbnMvUGx1Z2luUHJvY2Vzc1NoaW0ueGNj
b25maWc6ODYxODApCisrKyBDb25maWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1NoaW0ueGNjb25maWcJ
KHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvU2hpbS54
Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw1IEBACiAKIEdDQ19EWU5BTUlDX05PX1BJQyA9
IE5POwogSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9j
YWwvaW5jbHVkZTsKLVBST0RVQ1RfTkFNRSA9IFBsdWdpblByb2Nlc3NTaGltOwogU0tJUF9JTlNU
QUxMID0gWUVTOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFj
L1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gODYxODAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQyLDE2ICsxNDIsMTcgQEAgdm9pZCBQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIGlmICghW2ZyYW1ld29ya3NQYXRoIGhhc1By
ZWZpeDpAIi9TeXN0ZW0vIl0pCiAgICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLmFwcGVuZFZh
bHVlKCJEWUxEX0ZSQU1FV09SS19QQVRIIiwgW2ZyYW1ld29ya3NQYXRoIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbl0sICc6Jyk7CiAKLSAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBl
ID09IFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzcykgewotICAgICAgICAvLyBXZSBuZWVk
IHRvIGluc2VydCB0aGUgcGx1Zy1pbiBwcm9jZXNzIHNoaW0uCi0gICAgICAgIE5TU3RyaW5nICpw
bHVnaW5Qcm9jZXNzU2hpbVBhdGhOU1N0cmluZyA9IFtbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRo
IHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWIiXTsKLSAgICAgICAgY29uc3QgY2hh
ciogcGx1Z2luUHJvY2Vzc1NoaW1QYXRoID0gW3BsdWdpblByb2Nlc3NTaGltUGF0aE5TU3RyaW5n
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGhlIGZpbGUgZXhpc3RzLgotICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVmOwotICAgICAgICBp
ZiAoc3RhdChwbHVnaW5Qcm9jZXNzU2hpbVBhdGgsICZzdGF0QnVmKSA9PSAwICYmIChzdGF0QnVm
LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZSRUcpCi0gICAgICAgICAgICBlbnZpcm9ubWVudFZh
cmlhYmxlcy5hcHBlbmRWYWx1ZSgiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgcGx1Z2luUHJvY2Vz
c1NoaW1QYXRoLCAnOicpOwotICAgIH0KKyAgICBOU1N0cmluZyAqcHJvY2Vzc1NoaW1QYXRoTlNT
dHJpbmc7CisgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1
bmNoZXI6OlBsdWdpblByb2Nlc3MpCisgICAgICAgIHByb2Nlc3NTaGltUGF0aE5TU3RyaW5nID0g
W1twcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9u
ZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJQbHVnaW5Qcm9jZXNzU2hpbS5k
eWxpYiJdOworICAgIGVsc2UgCisgICAgICAgIHByb2Nlc3NTaGltUGF0aE5TU3RyaW5nID0gW1tw
cm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50
XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJQcm9jZXNzU2hpbS5keWxpYiJd
OworICAgIAorICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzaGltIGxpYnJhcnkgZmlsZSBleGlz
dHMgYW5kIGluc2VydCBpdC4KKyAgICBjb25zdCBjaGFyKiBwcm9jZXNzU2hpbVBhdGggPSBbcHJv
Y2Vzc1NoaW1QYXRoTlNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKyAgICBzdHJ1
Y3Qgc3RhdCBzdGF0QnVmOworICAgIGlmIChzdGF0KHByb2Nlc3NTaGltUGF0aCwgJnN0YXRCdWYp
ID09IDAgJiYgKHN0YXRCdWYuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykKKyAgICAgICAg
ZW52aXJvbm1lbnRWYXJpYWJsZXMuYXBwZW5kVmFsdWUoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIs
IHByb2Nlc3NTaGltUGF0aCwgJzonKTsKICAgICAKICAgICBpbnQgcmVzdWx0ID0gcG9zaXhfc3Bh
d24oJnByb2Nlc3NJZGVudGlmaWVyLCBhcmdzWzBdLCAwLCAmYXR0ciwgY29uc3RfY2FzdDxjaGFy
Kio+KGFyZ3MpLCBlbnZpcm9ubWVudFZhcmlhYmxlcy5lbnZpcm9ubWVudFBvaW50ZXIoKSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDExIEBACiAJ
CTM3QzRFOUY2MTMxQzZFN0UwMDI5QkQ1QSAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIzOTZFQTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBj
b25maWcuaCAqLzsgfTsKIAkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjYy
M0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzN0Y5MERFMzEzNzY1NjBFMDA1MUNGNjgg
LyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjYzODk1NEYxMzNCRUYzODAwODk0MUQ1IC8qIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kuaCAqLzsgfTsKKwkJNTEwMDMxRDUxMzc5QzExMzAwQzhERkU0IC8qIFdlYlBy
b2Nlc3NTaGltLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTAwMzFEMzEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uaCAqLzsgfTsKKwkJ
NTEwMDMxRUYxMzc5Q0FDQjAwQzhERkU0IC8qIEFwcEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODY3RDZBNUZFODQwMzA3QzAy
QUFDMDcgLyogQXBwS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJNTEwMDMxRjAxMzc5Q0FDQjAwQzhE
RkU0IC8qIENhcmJvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUExQ0QwNjEwMEZBMUJBMDA3OERFQkMgLyogQ2FyYm9uLmZyYW1l
d29yayAqLzsgfTsKKwkJNTEwMDMxRjExMzc5Q0FDQjAwQzhERkU0IC8qIFF1YXJ0ekNvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFBMUNDNUMxMDBGQTFBMTAwNzhERUJDIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9Owor
CQk1MTAwMzFGNzEzNzlDQjE2MDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAwMzFENDEzNzlDMTEzMDBD
OERGRTQgLyogV2ViUHJvY2Vzc1NoaW0ubW0gKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgwMDVD
MDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJD
b250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKIAkJNTEwRkJCOUExMjg4Qzk1RTAwQUZGREY0
IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRl
eHRNZW51SXRlbURhdGEuY3BwICovOyB9OwogCQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyog
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51
SXRlbURhdGEuaCAqLzsgfTsKQEAgLTMyOSw2ICszMzQsOCBAQAogCQk1MTZBNEE1RDEyMEEyQ0NE
MDBDMDVCN0YgLyogV2ViRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9
OwogCQk1MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM0NTkw
MTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovOyB9OwogCQk1
MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MTEzNDUzMkU4
MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IH07CisJCTUxODNCMzkyMTM3
OUY3QjgwMEU4NzU0RSAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiBpbiBDb3B5IFdlYiBQcm9jZXNz
IFNoaW0gKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMDMxRjYxMzc5Q0FD
QjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovOyB9OworCQk1MTgzQjM5NDEzNzlG
ODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNj
b25maWcgKi87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3
MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovOyB9OwogCQk1MTg3
MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyog
V0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4QUNBRTkxMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CkBAIC04NDksNiArODU2LDEzIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEMwQ0U3Mjg1
MTI0N0U2NjgwMEJDMEVDNDsKIAkJCXJlbW90ZUluZm8gPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJ
fTsKKwkJNTE4M0IzOEQxMzc5RjU0NjAwRTg3NTRFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDUxMDAzMUVBMTM3OUNBQ0Iw
MEM4REZFNDsKKwkJCXJlbW90ZUluZm8gPSBXZWJQcm9jZXNzU2hpbTsKKwkJfTsKIAkJQkNERTA5
MzUxMzI3MjQ5NjAwMTI1OUZCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTg4NCw2ICs4OTgsMTcg
QEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKKwkJNTE4M0IzOEYxMzc5RjU2ODAwRTg3NTRFIC8qIENvcHkgV2ViIFByb2Nlc3MgU2hpbSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IFdlYlByb2Nlc3MuYXBwL0NvbnRlbnRzL01h
Y09TOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJNTE4M0Iz
OTIxMzc5RjdCODAwRTg3NTRFIC8qIFdlYlByb2Nlc3NTaGltLmR5bGliIGluIENvcHkgV2ViIFBy
b2Nlc3MgU2hpbSAqLywKKwkJCSk7CisJCQluYW1lID0gIkNvcHkgV2ViIFByb2Nlc3MgU2hpbSI7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJQkNE
RTA5M0MxMzI3MjQ5NjAwMTI1OUZCIC8qIENvcHkgUGx1Zy1pbiBQcm9jZXNzIFNoaW0gKi8gPSB7
CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTEwODUsNyArMTExMCw2IEBACiAJCTFBQzI1Rjg5MTJBNDhFMDMwMEJE
MjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUMyNUY4QTEyQTQ4RTAzMDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDMjVGQjAxMkE0OEVBNzAwQkQyNjcxIC8qIFBs
dWdpblByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07Ci0JCTFBQzI1RkJCMTJBNDhFREEwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNz
U2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQbHVnaW5Qcm9j
ZXNzU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNDFBQzUx
MjYzQzg4MzAwMDU0RTk0IC8qIEJpbmFyeVNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFDNDFBQzYxMjYzQzg4MzAwMDU0RTk0IC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUM4NkZGMTEzMEI0NkQzMDAyQzEyNTcgLyog
V0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTE2OCw2ICsxMTkyLDkgQEAKIAkJMzNEM0EzQzcxMzM5NjE3OTAwNzA5QkU0
IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGlu
ZyA9IDQ7IG5hbWUgPSBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlckNGTmV0LmNwcDsgcGF0aCA9IFJl
c291cmNlQ2FjaGUvY2YvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJDRk5ldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRP
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZE9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMDMxRDMxMzc5QzExMzAwQzhERkU0
IC8qIFdlYlByb2Nlc3NTaGltLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlByb2Nlc3NTaGltLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDAzMUQ0MTM3
OUMxMTMwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHls
aWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNz
U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTEwMjFF
OUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEZCQjk4MTI4OEM5NUUwMEFGRkRG
NCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJ
dGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjIzLDYgKzEyNTAs
NyBAQAogCQk1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODM0NTkwMTM0NTMy
RTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25E
YXRhYmFzZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29u
RGF0YWJhc2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4M0IzOTMx
Mzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
NEJDNEExMzJFOTA3QTAwNkI5RTI4IC8qIFdlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJY29uRGF0YWJhc2UubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250
ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250
ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4
OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc3MCw2ICsxNzk4LDE2IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CisJCTUxMDAzMUVFMTM3OUNBQ0IwMEM4REZFNCAvKiBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNTEwMDMxRUYxMzc5Q0FD
QjAwQzhERkU0IC8qIEFwcEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1MTAw
MzFGMDEzNzlDQUNCMDBDOERGRTQgLyogQ2FyYm9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAorCQkJCTUxMDAzMUYxMTM3OUNBQ0IwMEM4REZFNCAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQk4REMyRUY1NjA0ODZBNjk0MDA5OEIyMTYgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE3OTcsNiArMTgzNSw3IEBACiAJCQkJMUE1MERCMUUx
MTBBM0JEQzAwMEQzRkU1IC8qIFdlYlByb2Nlc3MuYXBwICovLAogCQkJCTFBQzI1RkIwMTJBNDhF
QTcwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiAqLywKIAkJCQlCQ0RFMDk0MjEz
MjcyNDk2MDAxMjU5RkIgLyogUGx1Z2luUHJvY2Vzcy5hcHAgKi8sCisJCQkJNTEwMDMxRjYxMzc5
Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovLAogCQkJKTsKIAkJCW5hbWUg
PSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTI3LDEyICsxOTY2
LDEyIEBACiAJCTFBNEY5NzY5MTAwRTdCNjYwMDYzN0ExOCAvKiBDb25maWd1cmF0aW9ucyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE4M0IzOTMxMzc5
Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8sCiAJCQkJMUE0Rjk3NkExMDBFN0I2NjAw
NjM3QTE4IC8qIEJhc2UueGNjb25maWcgKi8sCiAJCQkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2
IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8sCiAJCQkJMUE0Rjk3NkIxMDBFN0I2NjAwNjM3QTE4
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKIAkJCQkxQTRGOTc2QzEwMEU3QjY2MDA2MzdB
MTggLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8sCiAJCQkJQkMxMjJGQTMxMzI3MDdGMzAw
RjdFQUMxIC8qIFBsdWdpblByb2Nlc3MueGNjb25maWcgKi8sCi0JCQkJMUFDMjVGQkIxMkE0OEVE
QTAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLnhjY29uZmlnICovLAogCQkJCTFBNEY5NzZF
MTAwRTdCNjYwMDYzN0ExOCAvKiBWZXJzaW9uLnhjY29uZmlnICovLAogCQkJCUJDQjg2RjRCMTE2
QUFBQ0QwMENFMjBCNyAvKiBXZWJLaXQyLnhjY29uZmlnICovLAogCQkJCTVEQUQ3Mjk0MTE2RkY3
MEIwMEVFNTM5NiAvKiBXZWJQcm9jZXNzLnhjY29uZmlnICovLApAQCAtMTk2Nyw2ICsyMDA2LDgg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNkZBMDFEMTFFMTUyNjMwMERCMTM3MSAvKiBXZWJQ
cm9jZXNzTWFpbk1hYy5tbSAqLywKIAkJCQlCQzMwNjVDMzEyNTkyRjg5MDBFNzEyNzggLyogV2Vi
UHJvY2Vzc01hYy5tbSAqLywKKwkJCQk1MTAwMzFEMzEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJv
Y2Vzc1NoaW0uaCAqLywKKwkJCQk1MTAwMzFENDEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vz
c1NoaW0ubW0gKi8sCiAJCQkJRTFCQjE2ODgxMzIwMThCQTAwRjQ5NDMxIC8qIEZ1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIuaCAqLywKIAkJCQlFMUJCMTY4OTEzMjAxOEJBMDBGNDk0MzEgLyogRnVs
bEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLywKIAkJCSk7CkBAIC0zMzI2LDYgKzMzNjcsMTMg
QEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKKwkJNTEwMDMxRUIxMzc5Q0FDQjAwQzhERkU0IC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIAkJOERDMkVGNTAwNDg2QTY5NDAwOThCMjE2IC8qIEhlYWRlcnMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC0zNzE5LDYgKzM3NjcsNyBAQAogCQkJCTZFRTg0OUM4MTM2OEQ5Mzkw
MDM4RDQ4MSAvKiBXS0luc3BlY3Rvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGOTBERTMx
Mzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBN0M2Q0RCMTM3ODk1MDgwMEI5QzA0RCAvKiBFbnZpcm9ubWVudFZhcmlhYmxlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTEwMDMxRDUxMzc5QzExMzAwQzhERkU0IC8qIFdlYlByb2Nl
c3NTaGltLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM3MzEsMTAgKzM3ODAsMTIgQEAKIAkJCWJ1aWxk
UGhhc2VzID0gKAogCQkJCTFBNTBEQjFBMTEwQTNCREMwMDBEM0ZFNSAvKiBSZXNvdXJjZXMgKi8s
CiAJCQkJMUE1MERCMUIxMTBBM0JEQzAwMEQzRkU1IC8qIFNvdXJjZXMgKi8sCisJCQkJNTE4M0Iz
OEYxMzc5RjU2ODAwRTg3NTRFIC8qIENvcHkgV2ViIFByb2Nlc3MgU2hpbSAqLywKIAkJCSk7CiAJ
CQlidWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQk1MTgzQjM4
RTEzNzlGNTQ2MDBFODc1NEUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQkxQTUwREIy
NzExMEEzQkVGMDAwRDNGRTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gV2ViUHJvY2VzczsKQEAgLTM3NTksNiArMzgxMCwyMyBAQAogCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IDFBQzI1RkIwMTJBNDhFQTcwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5keWxp
YiAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5k
eW5hbWljIjsKIAkJfTsKKwkJNTEwMDMxRUExMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NT
aGltICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDUxMDAzMUYyMTM3OUNBQ0IwMEM4REZFNCAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViUHJvY2Vzc1NoaW0iICovOworCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJNTEwMDMxRUIxMzc5Q0FDQjAwQzhERkU0IC8qIEhlYWRlcnMgKi8sCisJ
CQkJNTEwMDMxRUMxMzc5Q0FDQjAwQzhERkU0IC8qIFNvdXJjZXMgKi8sCisJCQkJNTEwMDMxRUUx
Mzc5Q0FDQjAwQzhERkU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9
ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IFdlYlByb2Nl
c3NTaGltOworCQkJcHJvZHVjdE5hbWUgPSBQbHVnaW5Qcm9jZXNzU2hpbTsKKwkJCXByb2R1Y3RS
ZWZlcmVuY2UgPSA1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHls
aWIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnku
ZHluYW1pYyI7CisJCX07CiAJCThEQzJFRjRGMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQyICov
ID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDFERUI5MUFEMDg3MzNEQTUwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViS2l0MiIgKi87CkBAIC0zODI5LDYgKzM4OTcsNyBAQAog
CQkJCUJDREUwOTMzMTMyNzI0OTYwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzICovLAogCQkJCUMw
Q0U3Mjg1MTI0N0U2NjgwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMUFDMjVG
QUYxMkE0OEVBNzAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltICovLAorCQkJCTUxMDAzMUVB
MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbSAqLywKIAkJCSk7CiAJCX07CiAvKiBF
bmQgUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC0zODQ3LDYgKzM5MTYsNyBAQAogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCThEQzJFRjUzMDQ4NkE2
OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNTE4
M0IzOTQxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgaW4gUmVzb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMzk2Niw2ICs0MDM2LDE0IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTUxMDAzMUVDMTM3OUNBQ0IwMEM4REZFNCAvKiBTb3Vy
Y2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNTEwMDMxRjcxMzc5Q0IxNjAw
QzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLm1tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCThEQzJFRjU0MDQ4
NkE2OTQwMDk4QjIxNiAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNDM4MCw2ICs0NDU4
LDExIEBACiAJCQl0YXJnZXQgPSBDMENFNzI4NTEyNDdFNjY4MDBCQzBFQzQgLyogRGVyaXZlZCBT
b3VyY2VzICovOwogCQkJdGFyZ2V0UHJveHkgPSAzN0Y3NDA3ODEyNzIxRjc0MDA5Mzg2OUIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OworCQk1MTgzQjM4RTEzNzlGNTQ2MDBFODc1
NEUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CisJCQl0YXJnZXQgPSA1MTAwMzFFQTEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJvY2Vz
c1NoaW0gKi87CisJCQl0YXJnZXRQcm94eSA9IDUxODNCMzhEMTM3OUY1NDYwMEU4NzU0RSAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCUJDREUwOTM0MTMyNzI0OTYwMDEyNTlG
QiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKIAkJCXRhcmdldCA9IDFBQzI1RkFGMTJBNDhFQTcwMEJEMjY3MSAvKiBQbHVnaW5Qcm9j
ZXNzU2hpbSAqLzsKQEAgLTQ0MzksMzQgKzQ1MjIsMzcgQEAKIAkJfTsKIAkJMUFDMjVGQjExMkE0
OEVBNzAwQkQyNjcxIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFBQzI1RkJCMTJBNDhFREEwMEJE
MjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZyAqLzsKKwkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcg
Ki87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCU9USEVSX0xERkxBR1MgPSAoCiAJCQkJCSIk
KE9USEVSX0xERkxBR1MpIiwKIAkJCQkJIi1sJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJS
QVJZKSIsCiAJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBQbHVnaW5Qcm9jZXNzU2hpbTsKIAkJ
CX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CiAJCTFBQzI1RkIyMTJBNDhFQTcwMEJEMjY3MSAv
KiBSZWxlYXNlICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFBQzI1RkJCMTJBNDhFREEwMEJEMjY3MSAvKiBQbHVn
aW5Qcm9jZXNzU2hpbS54Y2NvbmZpZyAqLzsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi87CiAJCQlidWls
ZFNldHRpbmdzID0gewogCQkJCU9USEVSX0xERkxBR1MgPSAoCiAJCQkJCSIkKE9USEVSX0xERkxB
R1MpIiwKIAkJCQkJIi1sJChXRUJLSVRfU1lTVEVNX0lOVEVSRkFDRV9MSUJSQVJZKSIsCiAJCQkJ
KTsKKwkJCQlQUk9EVUNUX05BTUUgPSBQbHVnaW5Qcm9jZXNzU2hpbTsKIAkJCX07CiAJCQluYW1l
ID0gUmVsZWFzZTsKIAkJfTsKIAkJMUFDMjVGQjMxMkE0OEVBNzAwQkQyNjcxIC8qIFByb2R1Y3Rp
b24gKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUFDMjVGQkIxMkE0OEVEQTAwQkQyNjcxIC8qIFBsdWdpblByb2Nl
c3NTaGltLnhjY29uZmlnICovOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1MTgz
QjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CiAJCQkJT1RIRVJfTERGTEFHUyA9ICgKIAkJCQkJIiQoT1RIRVJfTERGTEFHUykiLAog
CQkJCQkiLWxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UiLAogCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1F
ID0gUGx1Z2luUHJvY2Vzc1NoaW07CiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07
CkBAIC00NTEwLDYgKzQ1OTYsMzAgQEAKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsK
KwkJNTEwMDMxRjMxMzc5Q0FDQjAwQzhERkU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDUxODNC
MzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJQcm9jZXNzU2hpbTsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTUxMDAzMUY0MTM3OUNBQ0IwMEM4REZFNCAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDUxODNCMzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJQcm9jZXNzU2hp
bTsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNTEwMDMxRjUxMzc5Q0FDQjAw
QzhERkU0IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNTE4M0IzOTMxMzc5Rjg1QzAwRTg3
NTRFIC8qIFNoaW0ueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9IFdlYlByb2Nlc3NTaGltOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQk1RDIyRDY5QjExQTc1MzQ2MDBCRjMwRTUgLyogUHJvZHVjdGlvbiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSAxQTRGOTc2QTEwMEU3QjY2MDA2MzdBMTggLyogQmFzZS54Y2NvbmZpZyAqLzsKQEAgLTQ2
NDIsNiArNDc1MiwxNiBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwog
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJNTEwMDMx
RjIxMzc5Q0FDQjAwQzhERkU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJXZWJQcm9jZXNzU2hpbSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1MTAwMzFGMzEzNzlDQUNC
MDBDOERGRTQgLyogRGVidWcgKi8sCisJCQkJNTEwMDMxRjQxMzc5Q0FDQjAwQzhERkU0IC8qIFJl
bGVhc2UgKi8sCisJCQkJNTEwMDMxRjUxMzc5Q0FDQjAwQzhERkU0IC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJQkNERTA5M0UxMzI3MjQ5
NjAwMTI1OUZCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJQbHVnaW5Qcm9jZXNzIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDEzIEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNTZXBhcmF0ZVByb2Nlc3MoKSBjb25zdDsKIAotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICB2b2lkIGluaXRpYWxpemVTaGltKCk7CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAgICAgbWFjaF9wb3J0X3QgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29uc3Qg
eyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KICNlbmRpZgorI2VuZGlm
CiAgICAgCiAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpMaW5rSGFzaCk7CiAgICAg
Ym9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OkxpbmtIYXNoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQkocmV2aXNpb24g
ODYxODApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNyArMzAsMTkgQEAKICNpbXBvcnQgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3NTaGltLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2Fj
aGUuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8YWxnb3Jp
dGhtPgogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPGRsZmNuLmg+CiAj
aW1wb3J0IDxtYWNoL2hvc3RfaW5mby5oPgogI2ltcG9ydCA8bWFjaC9tYWNoLmg+CiAjaW1wb3J0
IDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAKICNpZiBFTkFCTEUoV0VCX1BST0NFU1NfU0FO
REJPWCkKICNpbXBvcnQgPHNhbmRib3guaD4KQEAgLTIzNyw2ICsyMzksMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIG1ldGhvZF9zZXRJbXBsZW1lbnRh
dGlvbihtZXRob2RUb1BhdGNoLCAoSU1QKU5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5Rm9jdXNl
ZFVJRWxlbWVudCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQorewor
ICAgIFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmMgaW5pdEZ1bmMgPSByZWludGVycHJldF9j
YXN0PFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmM+KGRsc3ltKFJUTERfREVGQVVMVCwgIldl
YktpdFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6ZSIpKTsKKyAgICBpbml0RnVuYygpOworfQorCiB2
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtVGVybWluYXRlKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWluTWFjLm1tCShyZXZp
c2lvbiA4NjE4MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NN
YWluTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw5IEBAIGludCBXZWJQcm9jZXNz
TWFpbihjb25zdCBDb21tYW5kTGluZSYgY28KICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKKyAgICAvLyBJbml0
aWFsaXplIHRoZSBzaGltLgorICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemVTaGlt
KCk7CisgICAgCiAgICAgLy8gQ3JlYXRlIHRoZSBjb25uZWN0aW9uLgogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmluaXRpYWxpemUoc2VydmVyUG9ydCwgUnVuTG9vcDo6bWFpbigpKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NoaW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1No
aW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViUHJvY2Vzc1NoaW1faAorI2RlZmluZSBXZWJQcm9jZXNzU2hpbV9oCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit0eXBlZGVmIHZvaWQgKCpXZWJQcm9jZXNzU2hpbUluaXRpYWxpemVGdW5jKSgp
OworCit9CisKKyNlbmRpZiAvLyBXZWJQcm9jZXNzU2hpbV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGltLm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViUHJvY2Vzc1No
aW0uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2V4dGVybiAiQyIgdm9pZCBXZWJLaXRXZWJQ
cm9jZXNzU2hpbUluaXRpYWxpemUoKTsKKworX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkKK3ZvaWQgV2ViS2l0V2ViUHJvY2Vzc1NoaW1Jbml0aWFsaXplKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="86116"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93783</attachid>
            <date>2011-05-17 09:57:30 -0700</date>
            <delta_ts>2011-05-17 10:05:25 -0700</delta_ts>
            <desc>Patch #1 - Add/initialize empty shim</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30454</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Njc1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDUtMTcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgb25lIG9mIDxyZGFyOi8vcHJvYmxlbS84ODE0Mjg5PiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTk1CisgICAgICAg
IE1hYyBXZWJLaXQyIFdlYlByb2Nlc3MgbmVlZHMgYSBzaGltIHRvIG1ha2UgcHJvbXB0cyBhcHBl
YXIgdG8gYmUgZnJvbSB0aGUgVUlQcm9jZXNzCisKKyAgICAgICAgQWRkIGFtIGVtcHR5IHNoaW0g
Zm9yIGEgbmV3IFdlYlByb2Nlc3Mgc2hpbSBhbmQgaW5zdGFsbCBpdCBhdCBsYXVuY2guCisKKyAg
ICAgICAgVXNlIHRoZSBzYW1lIFNoaW0ueGNjb25maWcgZm9yIGJvdGggdGhlIHdlYiBhbmQgcGx1
Z2luIHByb2Nlc3NlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hp
bS54Y2NvbmZpZzogUmVtb3ZlZC4KKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9TaGltLnhjY29u
ZmlnOiBDb3BpZWQgZnJvbSBDb25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZp
Zy4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDogQWRkIGluaXRpYWxpemVTaGltKCkgZm9yIE1h
Yy1vbmx5CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0pOiBJbml0aWFsaXplIHRoZSAo
ZW1wdHkpIHNoaW0gY2FsbGJhY2tzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc01haW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYWluKTogQ2FsbCBp
bml0aWFsaXplU2hpbSgpCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hp
bS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbTog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYktpdFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6ZSk6
IEVtcHR5IGZvciBub3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nl
c3NMYXVuY2hlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKTogSW5zdGFsbCB0aGUgUGx1Z2luIFByb2Nlc3Mgc2hpbSBmb3IgcGx1Z2luIHBy
b2Nlc3NlcworICAgICAgICAgIGFuZCB0aGUgV2ViUHJvY2VzcyBzaGltIGZvciB0aGUgd2ViIGNv
bnRlbnQgcHJvY2Vzcy4KKwogMjAxMS0wNS0xNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hpbS54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9QbHVn
aW5Qcm9jZXNzU2hpbS54Y2NvbmZpZwkocmV2aXNpb24gODY2NzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0vLyBhcmUg
bWV0OgotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotLy8gRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLS8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotLy8gUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0v
LyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0vLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0K
LSNpbmNsdWRlICJCYXNlVGFyZ2V0LnhjY29uZmlnIgotCi1HQ0NfRFlOQU1JQ19OT19QSUMgPSBO
TzsKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGU7Ci1QUk9EVUNUX05BTUUgPSBQbHVnaW5Qcm9jZXNzU2hpbTsKLVNLSVBfSU5TVEFM
TCA9IFlFUzsKLQpJbmRleDogQ29uZmlndXJhdGlvbnMvU2hpbS54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBDb25maWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCShyZXZpc2lvbiA4NjE4MCkJKGZyb20g
Q29uZmlndXJhdGlvbnMvUGx1Z2luUHJvY2Vzc1NoaW0ueGNjb25maWc6ODYxODApCisrKyBDb25m
aWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9TaGltLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1NoaW0ueGNjb25maWcJKHJldmlzaW9uIDg2MTgwKQorKysg
U291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvU2hpbS54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
NSw2ICsyNSw1IEBACiAKIEdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwogSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZTsKLVBST0RVQ1Rf
TkFNRSA9IFBsdWdpblByb2Nlc3NTaGltOwogU0tJUF9JTlNUQUxMID0gWUVTOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gODY2NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTQyLDE2ICsxNDIsMTcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgIGlmICghW2ZyYW1ld29ya3NQYXRoIGhhc1ByZWZpeDpAIi9TeXN0ZW0vIl0pCiAg
ICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzLmFwcGVuZFZhbHVlKCJEWUxEX0ZSQU1FV09SS19Q
QVRIIiwgW2ZyYW1ld29ya3NQYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICc6Jyk7CiAK
LSAgICBpZiAobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlID09IFByb2Nlc3NMYXVuY2hlcjo6
UGx1Z2luUHJvY2VzcykgewotICAgICAgICAvLyBXZSBuZWVkIHRvIGluc2VydCB0aGUgcGx1Zy1p
biBwcm9jZXNzIHNoaW0uCi0gICAgICAgIE5TU3RyaW5nICpwbHVnaW5Qcm9jZXNzU2hpbVBhdGhO
U1N0cmluZyA9IFtbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0
UGF0aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiUGx1Z2luUHJv
Y2Vzc1NoaW0uZHlsaWIiXTsKLSAgICAgICAgY29uc3QgY2hhciogcGx1Z2luUHJvY2Vzc1NoaW1Q
YXRoID0gW3BsdWdpblByb2Nlc3NTaGltUGF0aE5TU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbl07Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZpbGUgZXhpc3RzLgotICAg
ICAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVmOwotICAgICAgICBpZiAoc3RhdChwbHVnaW5Qcm9jZXNz
U2hpbVBhdGgsICZzdGF0QnVmKSA9PSAwICYmIChzdGF0QnVmLnN0X21vZGUgJiBTX0lGTVQpID09
IFNfSUZSRUcpCi0gICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlcy5hcHBlbmRWYWx1ZSgi
RFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgcGx1Z2luUHJvY2Vzc1NoaW1QYXRoLCAnOicpOwotICAg
IH0KKyAgICBOU1N0cmluZyAqcHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmc7CisgICAgaWYgKG1fbGF1
bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9PSBQcm9jZXNzTGF1bmNoZXI6OlBsdWdpblByb2Nlc3Mp
CisgICAgICAgIHByb2Nlc3NTaGltUGF0aE5TU3RyaW5nID0gW1twcm9jZXNzQXBwRXhlY3V0YWJs
ZVBhdGggc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJQbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiJdOworICAgIGVsc2UgCisg
ICAgICAgIHByb2Nlc3NTaGltUGF0aE5TU3RyaW5nID0gW1twcm9jZXNzQXBwRXhlY3V0YWJsZVBh
dGggc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJQcm9jZXNzU2hpbS5keWxpYiJdOworICAgIAorICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IHRoZSBzaGltIGxpYnJhcnkgZmlsZSBleGlzdHMgYW5kIGluc2VydCBpdC4KKyAg
ICBjb25zdCBjaGFyKiBwcm9jZXNzU2hpbVBhdGggPSBbcHJvY2Vzc1NoaW1QYXRoTlNTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKKyAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVmOworICAg
IGlmIChzdGF0KHByb2Nlc3NTaGltUGF0aCwgJnN0YXRCdWYpID09IDAgJiYgKHN0YXRCdWYuc3Rf
bW9kZSAmIFNfSUZNVCkgPT0gU19JRlJFRykKKyAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXMu
YXBwZW5kVmFsdWUoIkRZTERfSU5TRVJUX0xJQlJBUklFUyIsIHByb2Nlc3NTaGltUGF0aCwgJzon
KTsKICAgICAKICAgICBpbnQgcmVzdWx0ID0gcG9zaXhfc3Bhd24oJnByb2Nlc3NJZGVudGlmaWVy
LCBhcmdzWzBdLCAwLCAmYXR0ciwgY29uc3RfY2FzdDxjaGFyKio+KGFyZ3MpLCBlbnZpcm9ubWVu
dFZhcmlhYmxlcy5lbnZpcm9ubWVudFBvaW50ZXIoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDg2Njcy
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5LDggQEAKIAkJMzdDNEU5RjYxMzFDNkU3RTAwMjlC
RDVBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovOyB9OwogCQkzN0Y2
MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8q
IFdLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9s
aWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjM4
OTU0RjEzM0JFRjM4MDA4OTQxRDUgLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyB9Owor
CQk1MTAwMzFENTEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDAzMUQzMTM3OUMxMTMwMEM4
REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5oICovOyB9OworCQk1MTAwMzFGNzEzNzlDQjE2MDBDOERG
RTQgLyogV2ViUHJvY2Vzc1NoaW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTAwMzFENDEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0u
bW0gKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNs
aWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAq
LzsgfTsKIAkJNTEwRkJCOUExMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
RkJCOTgxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovOyB9
OwogCQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkx
Mjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKQEAgLTMz
MSw2ICszMzMsOCBAQAogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9OwogCQk1MTgzNDU5MjEzNDUzMkU5MDA5
MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwICovOyB9OwogCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYg
LyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmggKi87IH07CisJCTUxODNCMzkyMTM3OUY3QjgwMEU4NzU0RSAvKiBXZWJQcm9j
ZXNzU2hpbS5keWxpYiBpbiBDb3B5IFdlYiBQcm9jZXNzIFNoaW0gKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NT
aGltLmR5bGliICovOyB9OworCQk1MTgzQjM5NDEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2Nv
bmZpZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4
M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi87IH07CiAJCTUxODcxQjVC
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuY3BwICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9
OwogCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QUNBRTkx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC04NTMsNiArODU3LDEzIEBACiAJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IEMwQ0U3Mjg1MTI0N0U2NjgwMEJDMEVDNDsKIAkJCXJl
bW90ZUluZm8gPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKKwkJNTE4M0IzOEQxMzc5RjU0NjAw
RTg3NTRFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDUxMDAzMUVBMTM3OUNBQ0IwMEM4REZFNDsKKwkJCXJlbW90ZUluZm8g
PSBXZWJQcm9jZXNzU2hpbTsKKwkJfTsKIAkJQkNERTA5MzUxMzI3MjQ5NjAwMTI1OUZCIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKQEAgLTg4OCw2ICs4OTksMTcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJNTE4M0IzOEYxMzc5RjU2ODAw
RTg3NTRFIC8qIENvcHkgV2ViIFByb2Nlc3MgU2hpbSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlG
aWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0
UGF0aCA9IFdlYlByb2Nlc3MuYXBwL0NvbnRlbnRzL01hY09TOworCQkJZHN0U3ViZm9sZGVyU3Bl
YyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJNTE4M0IzOTIxMzc5RjdCODAwRTg3NTRFIC8qIFdl
YlByb2Nlc3NTaGltLmR5bGliIGluIENvcHkgV2ViIFByb2Nlc3MgU2hpbSAqLywKKwkJCSk7CisJ
CQluYW1lID0gIkNvcHkgV2ViIFByb2Nlc3MgU2hpbSI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJQkNERTA5M0MxMzI3MjQ5NjAwMTI1OUZCIC8q
IENvcHkgUGx1Zy1pbiBQcm9jZXNzIFNoaW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTEwOTEsNyAr
MTExMyw2IEBACiAJCTFBQzI1Rjg5MTJBNDhFMDMwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hp
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUMyNUY4QTEyQTQ4RTAzMDBCRDI2NzEg
LyogUGx1Z2luUHJvY2Vzc1NoaW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFDMjVGQjAxMkE0OEVBNzAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc1No
aW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQzI1RkJC
MTJBNDhFREEwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBQbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNDFBQzUxMjYzQzg4MzAwMDU0RTk0IC8qIEJpbmFy
eVNlbWFwaG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaW5hcnlTZW1h
cGhvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFDNDFBQzYxMjYzQzg4MzAw
MDU0RTk0IC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCaW5hcnlTZW1hcGhvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUM4NkZGMTEzMEI0NkQzMDAyQzEyNTcgLyogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5TaXRlRGF0
YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE3NCw2ICsxMTk1
LDkgQEAKIAkJMzNEM0EzQzcxMzM5NjE3OTAwNzA5QkU0IC8qIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzNGOUQ1QjgxMzEyRjFFRTAwMEQ2ODNGIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyQ0ZO
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSBXZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlckNGTmV0LmNwcDsgcGF0aCA9IFJlc291cmNlQ2FjaGUvY2YvV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTEwMDMxRDMxMzc5QzExMzAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDAzMUQ0MTM3OUMxMTMwMEM4REZFNCAvKiBXZWJQcm9j
ZXNzU2hpbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBy
b2Nlc3NTaGltLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAwMzFGNjEzNzlD
QUNCMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRN
ZW51SXRlbURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBGQkI5OTEy
ODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjI5LDYgKzEyNTMsNyBAQAogCQk1MTdBMzNCNDEzMEIzMDhD
MDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0
YWJhc2VDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0u
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NEJDNEExMzJFOTA3QTAwNkI5RTI4IC8q
IFdlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJ
Y29uRGF0YWJhc2UubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
ODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0
TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3OCw2ICsxODAzLDEzIEBACiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTUx
MDAzMUVFMTM3OUNBQ0IwMEM4REZFNCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CiAJCThEQzJFRjU2MDQ4NkE2OTQwMDk4QjIxNiAvKiBGcmFtZXdvcmtzICov
ID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTgwNSw2ICsxODM3LDcgQEAKIAkJCQkxQTUwREIxRTExMEEz
QkRDMDAwRDNGRTUgLyogV2ViUHJvY2Vzcy5hcHAgKi8sCiAJCQkJMUFDMjVGQjAxMkE0OEVBNzAw
QkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICovLAogCQkJCUJDREUwOTQyMTMyNzI0
OTYwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNzLmFwcCAqLywKKwkJCQk1MTAwMzFGNjEzNzlDQUNC
MDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFBy
b2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5MzcsMTIgKzE5NzAsMTIg
QEAKIAkJMUE0Rjk3NjkxMDBFN0I2NjAwNjM3QTE4IC8qIENvbmZpZ3VyYXRpb25zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTgzQjM5MzEzNzlGODVD
MDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLywKIAkJCQkxQTRGOTc2QTEwMEU3QjY2MDA2MzdB
MTggLyogQmFzZS54Y2NvbmZpZyAqLywKIAkJCQk1REFENzNGMTExNkZGOTBDMDBFRTUzOTYgLyog
QmFzZVRhcmdldC54Y2NvbmZpZyAqLywKIAkJCQkxQTRGOTc2QjEwMEU3QjY2MDA2MzdBMTggLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJCTFBNEY5NzZDMTAwRTdCNjYwMDYzN0ExOCAv
KiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLywKIAkJCQlCQzEyMkZBMzEzMjcwN0YzMDBGN0VB
QzEgLyogUGx1Z2luUHJvY2Vzcy54Y2NvbmZpZyAqLywKLQkJCQkxQUMyNUZCQjEyQTQ4RURBMDBC
RDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0ueGNjb25maWcgKi8sCiAJCQkJMUE0Rjk3NkUxMDBF
N0I2NjAwNjM3QTE4IC8qIFZlcnNpb24ueGNjb25maWcgKi8sCiAJCQkJQkNCODZGNEIxMTZBQUFD
RDAwQ0UyMEI3IC8qIFdlYktpdDIueGNjb25maWcgKi8sCiAJCQkJNURBRDcyOTQxMTZGRjcwQjAw
RUU1Mzk2IC8qIFdlYlByb2Nlc3MueGNjb25maWcgKi8sCkBAIC0xOTc3LDYgKzIwMTAsOCBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nl
c3NNYWluTWFjLm1tICovLAogCQkJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9j
ZXNzTWFjLm1tICovLAorCQkJCTUxMDAzMUQzMTM3OUMxMTMwMEM4REZFNCAvKiBXZWJQcm9jZXNz
U2hpbS5oICovLAorCQkJCTUxMDAzMUQ0MTM3OUMxMTMwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hp
bS5tbSAqLywKIAkJCQlFMUJCMTY4ODEzMjAxOEJBMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNj
ZXNzV2F0Y2hlci5oICovLAogCQkJCUUxQkIxNjg5MTMyMDE4QkEwMEY0OTQzMSAvKiBGdWxsS2V5
Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tICovLAogCQkJKTsKQEAgLTMzMzgsNiArMzM3MywxMyBAQAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owor
CQk1MTAwMzFFQjEzNzlDQUNCMDBDOERGRTQgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OwogCQk4REMyRUY1MDA0ODZBNjk0MDA5OEIyMTYgLyogSGVhZGVycyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKQEAgLTM3MzEsNiArMzc3Myw3IEBACiAJCQkJNkVFODQ5QzgxMzY4RDkzOTAwMzhE
NDgxIC8qIFdLSW5zcGVjdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y5MERFMzEzNzY1
NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE3QzZDREIxMzc4OTUwODAwQjlDMDREIC8qIEVudmlyb25tZW50VmFyaWFibGVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTAwMzFENTEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vzc1No
aW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTc5NzgwMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTE3QjdFMTM4MUYx
MTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBA
IC0zNzQ1LDEwICszNzg4LDEyIEBACiAJCQlidWlsZFBoYXNlcyA9ICgKIAkJCQkxQTUwREIxQTEx
MEEzQkRDMDAwRDNGRTUgLyogUmVzb3VyY2VzICovLAogCQkJCTFBNTBEQjFCMTEwQTNCREMwMDBE
M0ZFNSAvKiBTb3VyY2VzICovLAorCQkJCTUxODNCMzhGMTM3OUY1NjgwMEU4NzU0RSAvKiBDb3B5
IFdlYiBQcm9jZXNzIFNoaW0gKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CiAJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNTE4M0IzOEUxMzc5RjU0NjAwRTg3NTRFIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMUE1MERCMjcxMTBBM0JFRjAwMEQzRkU1IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYlByb2Nlc3M7CkBAIC0zNzcz
LDYgKzM4MTgsMjMgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxQUMyNUZCMDEyQTQ4RUE3MDBC
RDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0uZHlsaWIgKi87CiAJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYyI7CiAJCX07CisJCTUxMDAzMUVB
MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbSAqLyA9IHsKKwkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1MTAwMzFGMjEzNzlDQUNC
MDBDOERGRTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IldlYlByb2Nlc3NTaGltIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTUxMDAzMUVCMTM3
OUNBQ0IwMEM4REZFNCAvKiBIZWFkZXJzICovLAorCQkJCTUxMDAzMUVDMTM3OUNBQ0IwMEM4REZF
NCAvKiBTb3VyY2VzICovLAorCQkJCTUxMDAzMUVFMTM3OUNBQ0IwMEM4REZFNCAvKiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJKTsKKwkJCW5hbWUgPSBXZWJQcm9jZXNzU2hpbTsKKwkJCXByb2R1Y3ROYW1lID0g
UGx1Z2luUHJvY2Vzc1NoaW07CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNTEwMDMxRjYxMzc5Q0FD
QjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovOworCQkJcHJvZHVjdFR5cGUgPSAi
Y29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LmR5bmFtaWMiOworCQl9OwogCQk4REMyRUY0
RjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRh
cmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTFBRDA4NzMzREE1MDAxMEU5
Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYktp
dDIiICovOwpAQCAtMzg0Myw2ICszOTA1LDcgQEAKIAkJCQlCQ0RFMDkzMzEzMjcyNDk2MDAxMjU5
RkIgLyogUGx1Z2luUHJvY2VzcyAqLywKIAkJCQlDMENFNzI4NTEyNDdFNjY4MDBCQzBFQzQgLyog
RGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTFBQzI1RkFGMTJBNDhFQTcwMEJEMjY3MSAvKiBQbHVn
aW5Qcm9jZXNzU2hpbSAqLywKKwkJCQk1MTAwMzFFQTEzNzlDQUNCMDBDOERGRTQgLyogV2ViUHJv
Y2Vzc1NoaW0gKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpA
QCAtMzg2MSw2ICszOTI0LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0
cmluZ3MgaW4gUmVzb3VyY2VzICovLAorCQkJCTUxODNCMzk0MTM3OUY4NUMwMEU4NzU0RSAvKiBT
aGltLnhjY29uZmlnIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM5ODAsNiArNDA0NCwxNCBAQAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQk1
MTAwMzFFQzEzNzlDQUNCMDBDOERGRTQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTUxMDAzMUY3MTM3OUNCMTYwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5t
bSBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQk4REMyRUY1NDA0ODZBNjk0MDA5OEIyMTYgLyogU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKQEAgLTQzOTYsNiArNDQ2OCwxMSBAQAogCQkJdGFyZ2V0ID0gQzBDRTcy
ODUxMjQ3RTY2ODAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLzsKIAkJCXRhcmdldFByb3h5
ID0gMzdGNzQwNzgxMjcyMUY3NDAwOTM4NjlCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsK
IAkJfTsKKwkJNTE4M0IzOEUxMzc5RjU0NjAwRTg3NTRFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNTEwMDMx
RUExMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltICovOworCQkJdGFyZ2V0UHJveHkg
PSA1MTgzQjM4RDEzNzlGNTQ2MDBFODc1NEUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQlCQ0RFMDkzNDEzMjcyNDk2MDAxMjU5RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxQUMyNUZB
RjEyQTQ4RUE3MDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0gKi87CkBAIC00NDU1LDM0ICs0
NTMyLDM3IEBACiAJCX07CiAJCTFBQzI1RkIxMTJBNDhFQTcwMEJEMjY3MSAvKiBEZWJ1ZyAqLyA9
IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQUMyNUZCQjEyQTQ4RURBMDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0u
eGNjb25maWcgKi87CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDUxODNCMzkzMTM3
OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsK
IAkJCQlPVEhFUl9MREZMQUdTID0gKAogCQkJCQkiJChPVEhFUl9MREZMQUdTKSIsCiAJCQkJCSIt
bCQoV0VCS0lUX1NZU1RFTV9JTlRFUkZBQ0VfTElCUkFSWSkiLAogCQkJCSk7CisJCQkJUFJPRFVD
VF9OQU1FID0gUGx1Z2luUHJvY2Vzc1NoaW07CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9
OwogCQkxQUMyNUZCMjEyQTQ4RUE3MDBCRDI2NzEgLyogUmVsZWFzZSAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAx
QUMyNUZCQjEyQTQ4RURBMDBCRDI2NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0ueGNjb25maWcgKi87
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDUxODNCMzkzMTM3OUY4NUMwMEU4NzU0
RSAvKiBTaGltLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlPVEhFUl9M
REZMQUdTID0gKAogCQkJCQkiJChPVEhFUl9MREZMQUdTKSIsCiAJCQkJCSItbCQoV0VCS0lUX1NZ
U1RFTV9JTlRFUkZBQ0VfTElCUkFSWSkiLAogCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gUGx1
Z2luUHJvY2Vzc1NoaW07CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CiAJCTFBQzI1
RkIzMTJBNDhFQTcwMEJEMjY3MSAvKiBQcm9kdWN0aW9uICovID0gewogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247Ci0JCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFBQzI1RkJC
MTJBNDhFREEwMEJEMjY3MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS54Y2NvbmZpZyAqLzsKKwkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNo
aW0ueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCU9USEVSX0xERkxBR1Mg
PSAoCiAJCQkJCSIkKE9USEVSX0xERkxBR1MpIiwKIAkJCQkJIi1sV2ViS2l0U3lzdGVtSW50ZXJm
YWNlIiwKIAkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IFBsdWdpblByb2Nlc3NTaGltOwogCQkJ
fTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtNDUyNiw2ICs0NjA2LDMwIEBACiAJ
CQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CisJCTUxMDAzMUYzMTM3OUNBQ0IwMEM4REZF
NCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hp
bS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0g
V2ViUHJvY2Vzc1NoaW07CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk1MTAwMzFG
NDEzNzlDQUNCMDBDOERGRTQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1MTgzQjM5MzEzNzlG
ODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJUFJPRFVDVF9OQU1FID0gV2ViUHJvY2Vzc1NoaW07CisJCQl9OworCQkJbmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTUxMDAzMUY1MTM3OUNBQ0IwMEM4REZFNCAvKiBQcm9kdWN0aW9uICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDUxODNCMzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICovOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJQcm9jZXNzU2hpbTsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNUQyMkQ2OUIxMUE3NTM0NjAw
QkYzMEU1IC8qIFByb2R1Y3Rpb24gKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUE0Rjk3NkExMDBFN0I2NjAwNjM3
QTE4IC8qIEJhc2UueGNjb25maWcgKi87CkBAIC00NjU4LDYgKzQ3NjIsMTYgQEAKIAkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTUxMDAzMUYyMTM3OUNBQ0IwMEM4REZFNCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViUHJvY2Vzc1NoaW0i
ICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCisJCQkJNTEwMDMxRjMxMzc5Q0FDQjAwQzhERkU0IC8qIERlYnVnICovLAorCQkJ
CTUxMDAzMUY0MTM3OUNBQ0IwMEM4REZFNCAvKiBSZWxlYXNlICovLAorCQkJCTUxMDAzMUY1MTM3
OUNBQ0IwMEM4REZFNCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1
Y3Rpb247CisJCX07CiAJCUJDREUwOTNFMTMyNzI0OTYwMDEyNTlGQiAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUGx1Z2luUHJvY2VzcyIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiA4NjY3
MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw5ICs4NCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU2VwYXJhdGVQcm9j
ZXNzKCkgY29uc3Q7CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRG
T1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBpbml0aWFsaXplU2hpbSgpOwor
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1hY2hfcG9ydF90IGNvbXBv
c2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5k
ZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKKyNlbmRpZgogICAgIAogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmsoV2ViQ29yZTo6TGlua0hhc2gpOwogICAgIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3Jl
OjpMaW5rSGFzaCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDg2NjcyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTcg
KzMwLDE5IEBACiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW1wb3J0ICJXZWJQYWdl
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW1wb3J0ICJX
ZWJQcm9jZXNzU2hpbS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2Fj
aGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQgPGRpc3BhdGNoL2Rp
c3BhdGNoLmg+CisjaW1wb3J0IDxkbGZjbi5oPgogI2ltcG9ydCA8bWFjaC9ob3N0X2luZm8uaD4K
ICNpbXBvcnQgPG1hY2gvbWFjaC5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5o
PgogCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiAjaW1wb3J0IDxzYW5kYm94Lmg+
CkBAIC0yMzcsNiArMjM5LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHIKICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElNUClO
U0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOwogfQogCit2b2lkIFdl
YlByb2Nlc3M6OmluaXRpYWxpemVTaGltKCkKK3sKKyAgICBjb25zdCBXZWJQcm9jZXNzU2hpbUNh
bGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgfTsKKyAgICAKKyAgICBXZWJQcm9jZXNzU2hpbUlu
aXRpYWxpemVGdW5jIGluaXRGdW5jID0gcmVpbnRlcnByZXRfY2FzdDxXZWJQcm9jZXNzU2hpbUlu
aXRpYWxpemVGdW5jPihkbHN5bShSVExEX0RFRkFVTFQsICJXZWJLaXRXZWJQcm9jZXNzU2hpbUlu
aXRpYWxpemUiKSk7CisgICAgaW5pdEZ1bmMoY2FsbGJhY2tzKTsKK30KKwogdm9pZCBXZWJQcm9j
ZXNzOjpwbGF0Zm9ybVRlcm1pbmF0ZSgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQkocmV2aXNpb24gODY2NzIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFpbk1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsOSBAQCBpbnQgV2ViUHJvY2Vzc01haW4oY29uc3Qg
Q29tbWFuZExpbmUmIGNvCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFJ1
bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
c2hpbS4KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplU2hpbSgpOworICAgIAog
ICAgIC8vIENyZWF0ZSB0aGUgY29ubmVjdGlvbi4KICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5p
bml0aWFsaXplKHNlcnZlclBvcnQsIFJ1bkxvb3A6Om1haW4oKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGltLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NoaW0uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGltLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlByb2Nlc3NT
aGltX2gKKyNkZWZpbmUgV2ViUHJvY2Vzc1NoaW1faAorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
c3RydWN0IFdlYlByb2Nlc3NTaGltQ2FsbGJhY2tzIHsKK307CisKK3R5cGVkZWYgdm9pZCAoKldl
YlByb2Nlc3NTaGltSW5pdGlhbGl6ZUZ1bmMpKGNvbnN0IFdlYlByb2Nlc3NTaGltQ2FsbGJhY2tz
JiBjYWxsYmFja3MpOworCit9CisKKyNlbmRpZiAvLyBXZWJQcm9jZXNzU2hpbV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbQkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGlt
Lm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V2ViUHJvY2Vzc1NoaW0uaCIKKworI2RlZmluZSBEWUxEX0lOVEVSUE9TRShfcmVwbGFjZW1lbnQs
X3JlcGxhY2VlKSBcCisgICAgX19hdHRyaWJ1dGVfXygodXNlZCkpIHN0YXRpYyBzdHJ1Y3R7IGNv
bnN0IHZvaWQqIHJlcGxhY2VtZW50OyBjb25zdCB2b2lkKiByZXBsYWNlZTsgfSBfaW50ZXJwb3Nl
XyMjX3JlcGxhY2VlIFwKKyAgICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIl9fREFUQSxfX2lu
dGVycG9zZSIpKSkgPSB7IChjb25zdCB2b2lkKikodW5zaWduZWQgbG9uZykmX3JlcGxhY2VtZW50
LCAoY29uc3Qgdm9pZCopKHVuc2lnbmVkIGxvbmcpJl9yZXBsYWNlZSB9OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworZXh0ZXJuICJDIiB2b2lkIFdlYktpdFdlYlByb2Nlc3NTaGltSW5pdGlhbGl6
ZShjb25zdCBXZWJQcm9jZXNzU2hpbUNhbGxiYWNrcyYpOworCitfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KCJkZWZhdWx0IikpKQordm9pZCBXZWJLaXRXZWJQcm9jZXNzU2hpbUluaXRpYWxpemUo
Y29uc3QgV2ViUHJvY2Vzc1NoaW1DYWxsYmFja3MmIGNhbGxiYWNrcykKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="87004"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93790</attachid>
            <date>2011-05-17 10:28:20 -0700</date>
            <delta_ts>2011-05-17 10:35:00 -0700</delta_ts>
            <desc>Patch #2 - Add stubs for the first wave of shimmed methods, calling through to the actual functions for now.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7172</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NjgxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsMzYgQEAKKzIwMTEtMDUtMTcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgMiBvZiA8cmRhcjovL3Byb2JsZW0vODgxNDI4OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU5NQorICAgICAgICBN
YWMgV2ViS2l0MiBXZWJQcm9jZXNzIG5lZWRzIGEgc2hpbSB0byBtYWtlIHByb21wdHMgYXBwZWFy
IHRvIGJlIGZyb20gdGhlIFVJUHJvY2VzcworCisgICAgICAgIEhvb2t1cCBzb21lIG9mIHRoZSBt
ZXRob2RzIHdlIHBsYW4gdG8gc2hpbSBpbiB0aGUgcGF0Y2gsIGJ1dCBqdXN0IGhhdmUgdGhlbSBj
YWxsIHRocm91Z2gKKyAgICAgICAgdG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbnMgZm9yIG5v
dy4KKworICAgICAgICBBbHNvIHN0dWItb3V0IHRoZSBmdXR1cmUgc2hpbW1lZCB2ZXJzaW9ucyBv
ZiB0aGUgbWV0aG9kcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGlt
Lmg6IEFkZCB0aGUgbWV0aG9kcyB0byB0aGUgc2hpbSBjYWxsYmFja3MuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1NoaW0ubW06CisgICAgICAgIChXZWJLaXQ6OnNoaW1TZWNJ
dGVtQ29weU1hdGNoaW5nKTogQ2FsbCB0aHJvdWdoIHRvIHRoZSBhY3R1YWwgZnVuY3Rpb24gZm9y
IG5vdy4KKyAgICAgICAgKFdlYktpdDo6c2hpbVNlY0l0ZW1BZGQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6c2hpbVNlY0l0ZW1VcGRhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6c2hp
bVNlY0l0ZW1EZWxldGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViS2l0V2ViUHJvY2Vz
c1NoaW1Jbml0aWFsaXplKTogQ29weSBvdmVyIHRoZSBzaGltIGNhbGxiYWNrcy4KKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IExpbmsgdGhlIHNoaW0gdG8gcmVx
dWlyZWQgZnJhbWV3b3Jrcy4KKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjSXRlbUNvcHlNYXRjaGluZyk6
IEFkZCBwbGFjZWhvbGRlcnMgZm9yIHRoZSBmdXR1cmUgdG8tYmUtc2hpbW1lZCBmdW5jdGlvbnMu
CisgICAgICAgIChXZWJLaXQ6OldlYlNlY0l0ZW1BZGQpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViU2VjSXRlbVVwZGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJTZWNJdGVt
RGVsZXRlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVT
aGltKTogUGFzcyBhbG9uZyB0aG9zZSBwbGFjZWhvbGRlcnMgdG8gdGhlIHNoaW0gaW5pdGlhbGl6
ZXIuCisKIDIwMTEtMDUtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KIAotICAgICAgICBQYXJ0IG9uZSBv
ZiA8cmRhcjovL3Byb2JsZW0vODgxNDI4OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MDU5NQorICAgICAgICBQYXJ0IDEgb2YgPHJkYXI6Ly9wcm9ibGVtLzg4
MTQyODk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1OTUK
ICAgICAgICAgTWFjIFdlYktpdDIgV2ViUHJvY2VzcyBuZWVkcyBhIHNoaW0gdG8gbWFrZSBwcm9t
cHRzIGFwcGVhciB0byBiZSBmcm9tIHRoZSBVSVByb2Nlc3MKIAogICAgICAgICBBZGQgYW0gZW1w
dHkgc2hpbSBmb3IgYSBuZXcgV2ViUHJvY2VzcyBzaGltIGFuZCBpbnN0YWxsIGl0IGF0IGxhdW5j
aC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDg2Njc4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDcgQEAK
IAkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2NzEz
MkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFE
MDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0
YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJv
eHlNZXNzYWdlcy5oICovOyB9OworCQk1MUQxMzA0RTEzODJFNUI3MDAzNTFFREQgLyogU2VjdXJp
dHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGNTA2ODQxMjQzMTg2MTAwNTk1NUFFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsg
fTsKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE3MTJG
MTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTY1OUM1NTFF
MTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkE4
MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVC
ODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMTgwNyw2ICsxODA4LDcgQEAK
IAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxRDEzMDRFMTM4MkU1QjcwMDM1MUVERCAv
KiBTZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gODY2Nzgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzksOSArMjM5LDM3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHIKICAgICBtZXRob2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRj
aCwgKElNUClOU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOwogfQog
CitzdGF0aWMgT1NTdGF0dXMgV2ViU2VjSXRlbUNvcHlNYXRjaGluZyhDRkRpY3Rpb25hcnlSZWYg
cXVlcnksIENGVHlwZVJlZiAqcmVzdWx0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIE9TU3RhdHVzIFdlYlNlY0l0ZW1BZGQoQ0ZEaWN0
aW9uYXJ5UmVmIHF1ZXJ5LCBDRlR5cGVSZWYgKnJlc3VsdCkKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBPU1N0YXR1cyBXZWJTZWNJdGVt
VXBkYXRlKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNU
b1VwZGF0ZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gLTE7Cit9
CisKK3N0YXRpYyBPU1N0YXR1cyBXZWJTZWNJdGVtRGVsZXRlKENGRGljdGlvbmFyeVJlZiBxdWVy
eSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIHZv
aWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVNoaW0oKQogewogICAgIGNvbnN0IFdlYlByb2Nlc3NT
aGltQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAgICAgICAgV2ViU2VjSXRlbUNvcHlNYXRjaGlu
ZywKKyAgICAgICAgV2ViU2VjSXRlbUFkZCwKKyAgICAgICAgV2ViU2VjSXRlbVVwZGF0ZSwKKyAg
ICAgICAgV2ViU2VjSXRlbURlbGV0ZQogICAgIH07CiAgICAgCiAgICAgV2ViUHJvY2Vzc1NoaW1J
bml0aWFsaXplRnVuYyBpbml0RnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViUHJvY2Vzc1NoaW1J
bml0aWFsaXplRnVuYz4oZGxzeW0oUlRMRF9ERUZBVUxULCAiV2ViS2l0V2ViUHJvY2Vzc1NoaW1J
bml0aWFsaXplIikpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc1NoaW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzU2hpbS5oCShyZXZpc2lvbiA4NjY3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGltLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEw
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlByb2Nlc3NTaGltQ2FsbGJhY2tz
IHsKKyAgICBPU1N0YXR1cyAoKnNlY0l0ZW1Db3B5TWF0Y2hpbmcpKENGRGljdGlvbmFyeVJlZiBx
dWVyeSwgQ0ZUeXBlUmVmICpyZXN1bHQpOworICAgIE9TU3RhdHVzICgqc2VjSXRlbUFkZCkoQ0ZE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIENGVHlwZVJlZiAqcmVzdWx0KTsKKyAgICBPU1N0YXR1
cyAoKnNlY0l0ZW1VcGRhdGUpKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVm
IGF0dHJpYnV0ZXNUb1VwZGF0ZSk7CisgICAgT1NTdGF0dXMgKCpzZWNJdGVtRGVsZXRlKShDRkRp
Y3Rpb25hcnlSZWYgcXVlcnkpOwogfTsKIAogdHlwZWRlZiB2b2lkICgqV2ViUHJvY2Vzc1NoaW1J
bml0aWFsaXplRnVuYykoY29uc3QgV2ViUHJvY2Vzc1NoaW1DYWxsYmFja3MmIGNhbGxiYWNrcyk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hp
bS5tbQkocmV2aXNpb24gODY2NzgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzU2hpbS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMzcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGV4dGVybiAiQyIgdm9pZCBXZWJLaXRXZWJQcm9jZXNzU2hpbUluaXRp
YWxpemUoY29uc3QgV2ViUHJvY2Vzc1NoaW1DYWxsYmFja3MmKTsKIAorc3RhdGljIFdlYlByb2Nl
c3NTaGltQ2FsbGJhY2tzIHdlYlByb2Nlc3NTaGltQ2FsbGJhY2tzOworCitzdGF0aWMgT1NTdGF0
dXMgc2hpbVNlY0l0ZW1Db3B5TWF0Y2hpbmcoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRlR5cGVS
ZWYgKnJlc3VsdCkKK3sKKyAgICByZXR1cm4gU2VjSXRlbUNvcHlNYXRjaGluZyhxdWVyeSwgcmVz
dWx0KTsKK30KKworc3RhdGljIE9TU3RhdHVzIHNoaW1TZWNJdGVtQWRkKENGRGljdGlvbmFyeVJl
ZiBxdWVyeSwgQ0ZUeXBlUmVmICpyZXN1bHQpCit7CisgICAgcmV0dXJuIFNlY0l0ZW1BZGQocXVl
cnksIHJlc3VsdCk7Cit9CisKK3N0YXRpYyBPU1N0YXR1cyBzaGltU2VjSXRlbVVwZGF0ZShDRkRp
Y3Rpb25hcnlSZWYgcXVlcnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9VcGRhdGUpCit7
CisgICAgcmV0dXJuIFNlY0l0ZW1VcGRhdGUocXVlcnksIGF0dHJpYnV0ZXNUb1VwZGF0ZSk7Cit9
CisKK3N0YXRpYyBPU1N0YXR1cyBzaGltU2VjSXRlbURlbGV0ZShDRkRpY3Rpb25hcnlSZWYgcXVl
cnkpCit7CisgICAgcmV0dXJuIFNlY0l0ZW1EZWxldGUocXVlcnkpOworfQorCitEWUxEX0lOVEVS
UE9TRShzaGltU2VjSXRlbUNvcHlNYXRjaGluZywgU2VjSXRlbUNvcHlNYXRjaGluZykKK0RZTERf
SU5URVJQT1NFKHNoaW1TZWNJdGVtQWRkLCBTZWNJdGVtQWRkKQorRFlMRF9JTlRFUlBPU0Uoc2hp
bVNlY0l0ZW1VcGRhdGUsIFNlY0l0ZW1VcGRhdGUpCitEWUxEX0lOVEVSUE9TRShzaGltU2VjSXRl
bURlbGV0ZSwgU2VjSXRlbURlbGV0ZSkKKwogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkKIHZvaWQgV2ViS2l0V2ViUHJvY2Vzc1NoaW1Jbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NTaGltQ2FsbGJhY2tzJiBjYWxsYmFja3MpCiB7CisgICAgd2ViUHJvY2Vzc1NoaW1DYWxs
YmFja3MgPSBjYWxsYmFja3M7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="87012"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="87014"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93796</attachid>
            <date>2011-05-17 10:50:10 -0700</date>
            <delta_ts>2011-05-17 10:55:11 -0700</delta_ts>
            <desc>Patch #3 - Add CoreIPC stuff for when we marshall to the UIProcess and back</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>24438</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Njg2KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDUtMTcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgMyBvZiA8cmRhcjovL3Byb2JsZW0vODgxNDI4OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU5NQorICAgICAgICBN
YWMgV2ViS2l0MiBXZWJQcm9jZXNzIG5lZWRzIGEgc2hpbSB0byBtYWtlIHByb21wdHMgYXBwZWFy
IHRvIGJlIGZyb20gdGhlIFVJUHJvY2VzcworCisgICAgICAgIEFkZCBDb3JlSVBDIHN0dWZmIHdl
J2xsIG5lZWQgdG8gbWFyc2hhbGwgdGhlIFNlY0l0ZW0gY2FsbHMgdG8gdGhlIFVJUHJvY2VzcyBh
bmQgYmFjay4KKworICAgICAgICBUZWFjaCBBcmd1bWVudENvZGVyc0NGIGFib3V0IENGRGF0ZVJl
ZiwgU2VjS2V5Y2hhaW5JdGVtUmVmLCBhbmQgZ2VuZXJpYyBDRlR5cGVSZWZzOgorICAgICAgICAq
IFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OnR5cGVG
cm9tQ0ZUeXBlUmVmKToKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZSk6CisgICAgICAgIChDb3Jl
SVBDOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmg6CisK
KyAgICAgICAgU2VyaWFsaXphYmxlIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBxdWVyeSBDRkRp
Y3Rpb25hcnlSZWYgYW5kIG9wdGlvbmFsbHkgdGhlIAorICAgICAgICAiYXR0cmlidXRlc1RvTWF0
Y2giIENGRGljdGlvbmFyeVJlZjoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0l0ZW1SZXF1ZXN0
RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGE6OlNl
Y0l0ZW1SZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGE6OnF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6
U2VjSXRlbVJlcXVlc3REYXRhOjphdHRyaWJ1dGVzVG9NYXRjaCk6CisKKyAgICAgICAgU2VyaWFs
aXphYmxlIG9iamVjdCB0aGF0IHJldHVybnMgYW4gT1NTdGF0dXMgYW5kIG9wdGlvbmFsbHkgYSAi
cmVzdWx0IG9iamVjdCIgQ0ZUeXBlUmVmOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2VjSXRlbVJl
c3BvbnNlRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VE
YXRhOjpTZWNJdGVtUmVzcG9uc2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVJlc3Bv
bnNlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGE6OmxlYWtSZXN1bHRPYmpl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpTZWNJdGVtUmVzcG9uc2VEYXRhOjpyZXN1bHRDb2RlKToK
KworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0w
NS0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcAkocmV2aXNpb24gODY2NzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAgZW51bSBDRlR5cGUgewogICAgIENGQXJyYXksCiAgICAgQ0ZCb29sZWFuLAogICAg
IENGRGF0YSwKKyAgICBDRkRhdGUsCiAgICAgQ0ZEaWN0aW9uYXJ5LAogICAgIENGTnVsbCwKICAg
ICBDRk51bWJlciwKQEAgLTUwLDYgKzUxLDcgQEAgZW51bSBDRlR5cGUgewogICAgIENGVVJMLAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBTZWNDZXJ0aWZpY2F0ZSwKKyAgICBTZWNLZXljaGFpbkl0
ZW0sCiAjZW5kaWYKICAgICBOdWxsLAogICAgIFVua25vd24sCkBAIC02OSw2ICs3MSw4IEBAIHN0
YXRpYyBDRlR5cGUgdHlwZUZyb21DRlR5cGVSZWYoQ0ZUeXBlUmUKICAgICAgICAgcmV0dXJuIENG
Qm9vbGVhbjsKICAgICBpZiAodHlwZUlEID09IENGRGF0YUdldFR5cGVJRCgpKQogICAgICAgICBy
ZXR1cm4gQ0ZEYXRhOworICAgIGlmICh0eXBlSUQgPT0gQ0ZEYXRlR2V0VHlwZUlEKCkpCisgICAg
ICAgIHJldHVybiBDRkRhdGU7CiAgICAgaWYgKHR5cGVJRCA9PSBDRkRpY3Rpb25hcnlHZXRUeXBl
SUQoKSkKICAgICAgICAgcmV0dXJuIENGRGljdGlvbmFyeTsKICAgICBpZiAodHlwZUlEID09IENG
TnVsbEdldFR5cGVJRCgpKQpAQCAtODIsMTMgKzg2LDE1IEBAIHN0YXRpYyBDRlR5cGUgdHlwZUZy
b21DRlR5cGVSZWYoQ0ZUeXBlUmUKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKHR5cGVJRCA9
PSBTZWNDZXJ0aWZpY2F0ZUdldFR5cGVJRCgpKQogICAgICAgICByZXR1cm4gU2VjQ2VydGlmaWNh
dGU7CisgICAgaWYgKHR5cGVJRCA9PSBTZWNLZXljaGFpbkl0ZW1HZXRUeXBlSUQoKSkKKyAgICAg
ICAgcmV0dXJuIFNlY0tleWNoYWluSXRlbTsKICNlbmRpZgogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIFVua25vd247CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIENGVHlwZVJlZiB0eXBlUmVmKQordm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBDRlR5cGVSZWYgdHlwZVJlZikKIHsKICAgICBDRlR5cGUg
dHlwZSA9IHR5cGVGcm9tQ0ZUeXBlUmVmKHR5cGVSZWYpOwogICAgIGVuY29kZXItPmVuY29kZUVu
dW0odHlwZSk7CkBAIC0xMDMsNiArMTA5LDkgQEAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jbwogICAgIGNhc2UgQ0ZEYXRhOgogICAgICAgICBlbmNvZGUoZW5jb2Rlciwg
c3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPih0eXBlUmVmKSk7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENGRGF0ZToKKyAgICAgICAgZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PENGRGF0ZVJl
Zj4odHlwZVJlZikpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDRkRpY3Rpb25hcnk6CiAg
ICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHR5cGVS
ZWYpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxLDYgKzEzMCw5IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY28KICAgICBjYXNlIFNlY0NlcnRpZmljYXRlOgogICAg
ICAgICBlbmNvZGUoZW5jb2RlciwgKFNlY0NlcnRpZmljYXRlUmVmKXR5cGVSZWYpOwogICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTZWNLZXljaGFpbkl0ZW06CisgICAgICAgIGVuY29kZShlbmNv
ZGVyLCAoU2VjS2V5Y2hhaW5JdGVtUmVmKXR5cGVSZWYpOworICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBjYXNlIE51bGw6CiAgICAgICAgIHJldHVybjsKQEAgLTEzMSw3ICsxNDMsNyBAQCBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFJldGFpblB0cjxDRlR5cGVSZWY+JiByZXN1bHQpCitib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJldGFpblB0cjxDRlR5cGVSZWY+JiByZXN1bHQpCiB7CiAgICAgQ0ZU
eXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHR5cGUpKQpAQCAtMTU5LDYg
KzE3MSwxMyBAQCBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvCiAgICAg
ICAgIHJlc3VsdC5hZG9wdENGKGRhdGEubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQorICAgIGNhc2UgQ0ZEYXRlOiB7CisgICAgICAgIFJldGFpblB0cjxDRkRhdGVSZWY+
IGRhdGU7CisgICAgICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRhdGUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQuYWRvcHRDRihkYXRlLmxlYWtSZWYoKSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBjYXNlIENGRGljdGlvbmFyeTogewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5OwogICAgICAgICBpZiAo
IWRlY29kZShkZWNvZGVyLCBkaWN0aW9uYXJ5KSkKQEAgLTE5OCw2ICsyMTcsMTMgQEAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjbwogICAgICAgICByZXN1bHQuYWRvcHRD
RihjZXJ0aWZpY2F0ZS5sZWFrUmVmKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgY2FzZSBTZWNLZXljaGFpbkl0ZW06IHsKKyAgICAgICAgUmV0YWluUHRyPFNlY0tleWNoYWlu
SXRlbVJlZj4ga2V5Y2hhaW5JdGVtOworICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBrZXlj
aGFpbkl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1bHQuYWRv
cHRDRihrZXljaGFpbkl0ZW0ubGVha1JlZigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogI2VuZGlmCiAgICAgY2FzZSBOdWxsOgogICAgICAgICByZXN1bHQgPSB0b2tlbk51bGxUeXBl
UmVmKCk7CkBAIC0yNzgsNiArMzA0LDIxIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgUmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBDRkRhdGVSZWYgZGF0ZSkKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVE
b3VibGUoQ0ZEYXRlR2V0QWJzb2x1dGVUaW1lKGRhdGUpKTsKK30KKworYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiYgcmVzdWx0KQorewor
ICAgIGRvdWJsZSBhYnNvbHV0ZVRpbWU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUo
YWJzb2x1dGVUaW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0LmFkb3B0
Q0YoQ0ZEYXRlQ3JlYXRlKDAsIGFic29sdXRlVGltZSkpOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogewogICAgIENGSW5kZXggc2l6ZSA9IENGRGljdGlvbmFyeUdldENvdW50KGRp
Y3Rpb25hcnkpOwpAQCAtNDk2LDYgKzUzNywzMCBAQCBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFJlCiAgICAgcmVzdWx0LmFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVX
aXRoRGF0YSgwLCBkYXRhLmdldCgpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CisKK3ZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgU2VjS2V5Y2hhaW5JdGVtUmVmIGtleWNoYWlu
SXRlbSkKK3sKKyAgICBDRkRhdGFSZWYgZGF0YTsKKyAgICBpZiAoU2VjS2V5Y2hhaW5JdGVtQ3Jl
YXRlUGVyc2lzdGVudFJlZmVyZW5jZShrZXljaGFpbkl0ZW0sICZkYXRhKSA9PSBlcnJTZWNTdWNj
ZXNzKSB7CisgICAgICAgIGVuY29kZShlbmNvZGVyLCBkYXRhKTsKKyAgICAgICAgQ0ZSZWxlYXNl
KGRhdGEpOworICAgIH0KK30KKworYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVtUmVmPiYgcmVzdWx0KQoreworICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7CisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgZGF0
YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNlY0tleWNoYWluSXRlbVJlZiBpdGVt
OworICAgIGlmIChTZWNLZXljaGFpbkl0ZW1Db3B5RnJvbVBlcnNpc3RlbnRSZWZlcmVuY2UoZGF0
YS5nZXQoKSwgJml0ZW0pICE9IGVyclNlY1N1Y2Nlc3MgfHwgIWl0ZW0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICByZXN1bHQuYWRvcHRDRihpdGVtKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAkocmV2aXNpb24gODY2NzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8U2Vj
dXJpdHkvU2VjQ2VydGlmaWNhdGUuaD4KKyNpbmNsdWRlIDxTZWN1cml0eS9TZWNLZXljaGFpbkl0
ZW0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC00OSw2ICs1MCwxMCBAQCBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8CiB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqLCBDRkRhdGFSZWYpOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwg
UmV0YWluUHRyPENGRGF0YVJlZj4mIHJlc3VsdCk7CiAKKy8vIENGRGF0ZVJlZgordm9pZCBlbmNv
ZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZEYXRlUmVmKTsKK2Jvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciosIFJldGFpblB0cjxDRkRhdGVSZWY+JiByZXN1bHQpOworCiAvLyBDRkRpY3Rpb25hcnlS
ZWYKIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGRGljdGlvbmFyeVJlZik7CiBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiYgcmVz
dWx0KTsKQEAgLTYxLDYgKzY2LDEwIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJl
dGFpblB0cjwKIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIENGU3RyaW5nUmVmKTsKIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3Vs
dCk7CiAKKy8vIENGVHlwZVJlZgordm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgQ0ZUeXBl
UmVmKTsKK2Jvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFJldGFpblB0cjxDRlR5cGVSZWY+
JiByZXN1bHQpOworCiAvLyBDRlVSTFJlZgogdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwg
Q0ZVUkxSZWYpOwogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgUmV0YWluUHRyPENGVVJM
UmVmPiYgcmVzdWx0KTsKQEAgLTY5LDYgKzc4LDEwIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciosIFJldGFpblB0cjwKIC8vIFNlY0NlcnRpZmljYXRlUmVmCiB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqLCBTZWNDZXJ0aWZpY2F0ZVJlZik7CiBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+JiByZXN1bHQpOworCisvLyBTZWNL
ZXljaGFpbkl0ZW1SZWYKK3ZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIFNlY0tleWNoYWlu
SXRlbVJlZik7Citib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBSZXRhaW5QdHI8U2VjS2V5
Y2hhaW5JdGVtUmVmPiYgcmVzdWx0KTsKICNlbmRpZgogCiBDRlR5cGVSZWYgdG9rZW5OdWxsVHlw
ZVJlZigpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJl
cXVlc3REYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
U2VjSXRlbVJlcXVlc3REYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWNJdGVtUmVxdWVzdERh
dGEuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnNDRi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VjSXRlbVJlcXVlc3REYXRhOjpT
ZWNJdGVtUmVxdWVzdERhdGEoKQoreworfQorCitTZWNJdGVtUmVxdWVzdERhdGE6OlNlY0l0ZW1S
ZXF1ZXN0RGF0YShDRkRpY3Rpb25hcnlSZWYgcXVlcnkpCisgICAgOiBtX3F1ZXJ5RGljdGlvbmFy
eShxdWVyeSkKK3sKK30KKworU2VjSXRlbVJlcXVlc3REYXRhOjpTZWNJdGVtUmVxdWVzdERhdGEo
Q0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gp
CisgICAgOiBtX3F1ZXJ5RGljdGlvbmFyeShxdWVyeSkKKyAgICAsIG1fYXR0cmlidXRlc1RvTWF0
Y2goYXR0cmlidXRlc1RvTWF0Y2gpCit7Cit9CisKK3ZvaWQgU2VjSXRlbVJlcXVlc3REYXRhOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIENv
cmVJUEM6OmVuY29kZShlbmNvZGVyLCBtX3F1ZXJ5RGljdGlvbmFyeS5nZXQoKSk7CisKKyAgICBl
bmNvZGVyLT5lbmNvZGVCb29sKG1fYXR0cmlidXRlc1RvTWF0Y2guZ2V0KCkpOworICAgIGlmICht
X2F0dHJpYnV0ZXNUb01hdGNoKQorICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgbV9h
dHRyaWJ1dGVzVG9NYXRjaC5nZXQoKSk7Cit9CisKK2Jvb2wgU2VjSXRlbVJlcXVlc3REYXRhOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBTZWNJdGVtUmVxdWVzdERh
dGEmIHNlY0l0ZW1SZXF1ZXN0RGF0YSkKK3sgICAgCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUo
ZGVjb2Rlciwgc2VjSXRlbVJlcXVlc3REYXRhLm1fcXVlcnlEaWN0aW9uYXJ5KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGJvb2wgZXhwZWN0QXR0cmlidXRlczsKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZUJvb2woZXhwZWN0QXR0cmlidXRlcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWV4cGVjdEF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIAorICAgIGlmICghQ29yZUlQQzo6ZGVjb2RlKGRlY29kZXIsIHNlY0l0ZW1SZXF1
ZXN0RGF0YS5tX2F0dHJpYnV0ZXNUb01hdGNoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVxdWVzdERhdGEuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlcXVlc3REYXRhLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNlY0l0
ZW1SZXF1ZXN0RGF0YV9oCisjZGVmaW5lIFNlY0l0ZW1SZXF1ZXN0RGF0YV9oCisKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1
bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKyAgICAKK2NsYXNzIFNlY0l0ZW1SZXF1ZXN0RGF0YSB7CitwdWJsaWM6CisgICAg
U2VjSXRlbVJlcXVlc3REYXRhKCk7CisgICAgU2VjSXRlbVJlcXVlc3REYXRhKENGRGljdGlvbmFy
eVJlZiBxdWVyeSk7CisgICAgU2VjSXRlbVJlcXVlc3REYXRhKENGRGljdGlvbmFyeVJlZiBxdWVy
eSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoKTsKKworICAgIHZvaWQgZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBTZWNJdGVtUmVxdWVzdERhdGEmKTsKKworICAg
IENGRGljdGlvbmFyeVJlZiBxdWVyeSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVlcnlEaWN0aW9uYXJ5
LmdldCgpOyB9CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoKCkgY29uc3Qg
eyByZXR1cm4gbV9hdHRyaWJ1dGVzVG9NYXRjaC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fcXVlcnlEaWN0aW9uYXJ5OworICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IG1fYXR0cmlidXRlc1RvTWF0Y2g7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBTZWNJdGVtUmVxdWVzdERhdGFfaApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWNJdGVtUmVzcG9uc2VEYXRhLmgiCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1NlY0l0ZW1SZXNwb25zZURhdGE6OlNlY0l0ZW1SZXNw
b25zZURhdGEoKQoreworfQorCitTZWNJdGVtUmVzcG9uc2VEYXRhOjpTZWNJdGVtUmVzcG9uc2VE
YXRhKENGVHlwZVJlZiByZXN1bHRPYmplY3QsIE9TU3RhdHVzIHJlc3VsdENvZGUpCisgICAgOiBt
X3Jlc3VsdE9iamVjdChyZXN1bHRPYmplY3QpCisgICAgLCBtX3Jlc3VsdENvZGUocmVzdWx0Q29k
ZSkKK3sKK30KKwordm9pZCBTZWNJdGVtUmVzcG9uc2VEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZUludDY0
KChpbnQ2NF90KW1fcmVzdWx0Q29kZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlQm9vbChtX3Jlc3Vs
dE9iamVjdC5nZXQoKSk7CisgICAgaWYgKG1fcmVzdWx0T2JqZWN0KQorICAgICAgICBDb3JlSVBD
OjplbmNvZGUoZW5jb2RlciwgbV9yZXN1bHRPYmplY3QuZ2V0KCkpOworfQorCitib29sIFNlY0l0
ZW1SZXNwb25zZURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFNlY0l0ZW1SZXNwb25zZURhdGEmIHNlY0l0ZW1SZXNwb25zZURhdGEpCit7CisgICAgaW50NjRf
dCByZXN1bHRDb2RlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50NjQocmVzdWx0Q29kZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzZWNJdGVtUmVzcG9uc2VEYXRhLm1fcmVzdWx0
Q29kZSA9IChPU1N0YXR1cylyZXN1bHRDb2RlOworCisgICAgYm9vbCBleHBlY3RSZXN1bHRPYmpl
Y3Q7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGV4cGVjdFJlc3VsdE9iamVjdCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWV4cGVjdFJlc3VsdE9iamVjdCkg
eworICAgICAgICBzZWNJdGVtUmVzcG9uc2VEYXRhLm1fcmVzdWx0T2JqZWN0ID0gMDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgc2VjSXRlbVJlc3BvbnNlRGF0YS5tX3Jlc3VsdE9iamVjdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9u
c2VEYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNlY0l0ZW1SZXNwb25zZURhdGFfaAorI2RlZmluZSBTZWNJdGVtUmVzcG9uc2VEYXRhX2gK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAg
IGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworICAgIAorY2xhc3MgU2VjSXRlbVJlc3BvbnNlRGF0YSB7Citw
dWJsaWM6CisgICAgU2VjSXRlbVJlc3BvbnNlRGF0YSgpOworICAgIFNlY0l0ZW1SZXNwb25zZURh
dGEoQ0ZUeXBlUmVmIHJlc3VsdCwgT1NTdGF0dXMpOworCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIFNlY0l0ZW1SZXNwb25zZURhdGEmKTsKKworICAgIENGVHlw
ZVJlZiBsZWFrUmVzdWx0T2JqZWN0KCkgeyByZXR1cm4gbV9yZXN1bHRPYmplY3QubGVha1JlZigp
OyB9CisgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29k
ZTsgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IG1fcmVzdWx0T2JqZWN0
OworICAgIE9TU3RhdHVzIG1fcmVzdWx0Q29kZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFNlY0l0ZW1SZXNwb25zZURhdGFfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
ODY2ODYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw2ICszNzAsMTAgQEAKIAkJNTFEMDJGNkIxMzJFQzcz
NzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY4MTMyRUM3
MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5o
ICovOyB9OwogCQk1MUQxMzA0RTEzODJFNUI3MDAzNTFFREQgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNTA2
ODQxMjQzMTg2MTAwNTk1NUFFIC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKKwkJNTFEMTMw
NTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA0RjEzODJFQUMwMDAzNTFF
REQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLzsgfTsKKwkJNTFEMTMwNTQxMzgyRUFDMDAw
MzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1S
ZXF1ZXN0RGF0YS5oICovOyB9OworCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5j
cHAgKi87IH07CisJCTUxRDEzMDU2MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQx
MzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5oICovOyB9OwogCQk2
NTAxQkQxQTEyRjEyNDM0MDBFOUYyNDggLyogV0tCdW5kbGVJbnNwZWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCODZGMTcxMkYxMUQ3QjAw
QjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJNjU5QzU1MUUxMzAwMDY0
MTAwMjVDMEMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTQ2QTgyOTEzMDAw
MTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCAq
LzsgfTsKIAkJNjVCODZGMUUxMkYxMURFMzAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4NkYxODEy
RjExRDdCMDBCN0REOEEgLyogV0tCdW5kbGVJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC0xMjkzLDYgKzEyOTcsMTAgQEAKIAkJNTFE
MDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBX
ZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5
NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1
ZXN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMzA1MDEz
ODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTMwNTIxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1REFENzI5NDExNkZGNzBCMDBFRTUzOTYgLyogV2ViUHJvY2Vzcy54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFz
ZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFy
Z2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQ2QTgyOTEzMDAw
MTY0MDAwQ0VCMUMgLyogSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZVJl
c291cmNlTG9hZENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODY4
LDYgKzI4NzYsMTAgQEAKIAkJCQlCQ0Y1MDVFNjEyNDMwNDdCMDA1OTU1QUUgLyogUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8ubW0gKi8sCiAJCQkJRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFBy
aW50SW5mb01hYy5tbSAqLywKIAkJCQkxQUFCNEFBOTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJv
eEV4dGVuc2lvbk1hYy5tbSAqLywKKwkJCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2Vj
SXRlbVJlcXVlc3REYXRhLmNwcCAqLywKKwkJCQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyog
U2VjSXRlbVJlcXVlc3REYXRhLmggKi8sCisJCQkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovLAorCQkJCTUxRDEzMDUyMTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi8sCiAJCQkJMUE5NjM2QkExMkYzNDg0OTAwNzhB
MDYyIC8qIFNoYXJlYWJsZVN1cmZhY2UuY3BwICovLAogCQkJCTFBOTYzNkJCMTJGMzQ4NDkwMDc4
QTA2MiAvKiBTaGFyZWFibGVTdXJmYWNlLmggKi8sCiAJCQkJQkM5RTk1RDIxMTQ0OUIwMzAwODcw
RTcxIC8qIFVwZGF0ZUNodW5rLmNwcCAqLywKQEAgLTM3NzgsNiArMzc5MCw4IEBACiAJCQkJMUE3
QzZDREIxMzc4OTUwODAwQjlDMDREIC8qIEVudmlyb25tZW50VmFyaWFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTAwMzFENTEzNzlDMTEzMDBDOERGRTQgLyogV2ViUHJvY2Vzc1NoaW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMTc5NzgwMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEzMDU0MTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEzMDU2
MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTQ0NDEsNiArNDQ1NSw4IEBACiAJCQkJMUE3QzZDREExMzc4OTUwODAwQjlDMDREIC8qIEVu
dmlyb25tZW50VmFyaWFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTc5NzdGMTM3RUU4
MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNFMTdCN0QxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1
ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
</data>
<flag name="review"
          id="87018"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93802</attachid>
            <date>2011-05-17 11:33:03 -0700</date>
            <delta_ts>2011-05-17 11:50:56 -0700</delta_ts>
            <desc>Patch #4 - Implement the shim, and have the UIProcess do the work.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19342</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NjkwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDUtMTcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgNCBvZiA8cmRhcjovL3Byb2JsZW0vODgxNDI4OT4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU5NQorICAgICAgICBN
YWMgV2ViS2l0MiBXZWJQcm9jZXNzIG5lZWRzIGEgc2hpbSB0byBtYWtlIHByb21wdHMgYXBwZWFy
IHRvIGJlIGZyb20gdGhlIFVJUHJvY2VzcworCisgICAgICAgIFRoaXMgcGF0Y2ggYWN0dWFsbHkg
aG9va3MgdXAgdGhlIHNoaW0gdG8gdGhlIFdlYlByb2Nlc3Mgc2hpbSBjYWxsYmFja3MsIHdoaWNo
IG1lc3NhZ2VzIHRoZXNlCisgICAgICAgIDQgY2FsbHMgdXAgdG8gdGhlIFVJUHJvY2VzcyBhbmQg
cmV0dXJucyB0aGUgcmVzdWx0LgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIHVuY292
ZXJlZCB0aGUgZmFjdCB0aGF0IENvcmVJUEMgY2FuJ3Qgc3luYyBtZXNzYWdlIG91dCBmcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwKKyAgICAgICAgc28gSSBmaWxlZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NzUgYXMgYSBmb2xsb3d1cCB0byBhbGxvdyB0aGF0Lgor
CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VjSXRlbVJlc3BvbnNlRGF0YTo6U2VjSXRlbVJlc3BvbnNlRGF0YSk6IFJlb3Jk
ZXIgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyB0byBiZSAKKyAgICAgICAgICBhIGxpdHRsZSBj
bGVhbmVyLgorICAgICAgICAqIFNoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oOgorCisg
ICAgICAgIENhbGwgdGhlIHNoaW0gY2FsbGJhY2tzIGZvciBlYWNoIG1ldGhvZDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzU2hpbS5tbToKKyAgICAgICAgKFdlYktpdDo6c2hp
bVNlY0l0ZW1Db3B5TWF0Y2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpzaGltU2VjSXRlbUFkZCk6
CisgICAgICAgIChXZWJLaXQ6OnNoaW1TZWNJdGVtVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6
c2hpbVNlY0l0ZW1EZWxldGUpOgorCisgICAgICAgIEltcGxlbWVudCB0aGUgc2hpbSBjYWxsYmFj
a3MsIHdoaWNoIGVhY2ggbWFyc2hhbGwgdG8gdGhlIG1haW4gdGhyZWFkLCB3aGljaCB0aGVuIGNh
bGxzIG91dCB0byBDb3JlSVBDOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlNlY0l0ZW1Db3B5TWF0Y2hpbmdNYWluVGhyZWFk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjSXRlbUNvcHlNYXRjaGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlY0l0ZW1BZGRPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZWNJdGVtQWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjSXRlbVVwZGF0ZU9uTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY0l0ZW1VcGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZWNJdGVtRGVsZXRlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vj
SXRlbURlbGV0ZSk6CisKKyAgICAgICAgQWRkIHRoZSA0IG1lc3NhZ2VzIGFuZCB0aGVpciBpbXBs
ZW1lbnRhdGlvbnMgaW4gdGhlIFVJUHJvY2VzczoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VjSXRlbUNvcHlNYXRjaGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VjSXRlbUFkZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VjSXRlbVVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VjSXRlbURlbGV0ZSk6CisKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTEtMDUtMTcgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVy
bnN0ZWluLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9uc2VE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1S
ZXNwb25zZURhdGEuY3BwCShyZXZpc2lvbiA4NjY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgU2VjSXRlbVJlc3BvbnNlRGF0YTo6U2VjSXRlbVJlc3BvbnNlRGF0YQogewogfQogCi1T
ZWNJdGVtUmVzcG9uc2VEYXRhOjpTZWNJdGVtUmVzcG9uc2VEYXRhKENGVHlwZVJlZiByZXN1bHRP
YmplY3QsIE9TU3RhdHVzIHJlc3VsdENvZGUpCitTZWNJdGVtUmVzcG9uc2VEYXRhOjpTZWNJdGVt
UmVzcG9uc2VEYXRhKE9TU3RhdHVzIHJlc3VsdENvZGUsIENGVHlwZVJlZiByZXN1bHRPYmplY3Qp
CiAgICAgOiBtX3Jlc3VsdE9iamVjdChyZXN1bHRPYmplY3QpCiAgICAgLCBtX3Jlc3VsdENvZGUo
cmVzdWx0Q29kZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVJl
c3BvbnNlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2Vj
SXRlbVJlc3BvbnNlRGF0YS5oCShyZXZpc2lvbiA4NjY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2VjSXRlbVJlc3BvbnNlRGF0YSB7CiBw
dWJsaWM6CiAgICAgU2VjSXRlbVJlc3BvbnNlRGF0YSgpOwotICAgIFNlY0l0ZW1SZXNwb25zZURh
dGEoQ0ZUeXBlUmVmIHJlc3VsdCwgT1NTdGF0dXMpOworICAgIFNlY0l0ZW1SZXNwb25zZURhdGEo
T1NTdGF0dXMsIENGVHlwZVJlZiByZXN1bHQpOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIFNlY0l0ZW1SZXNwb25zZURhdGEmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDg2NjcyKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCisjaWYgUExBVEZPUk0oTUFDKQorY2xhc3MgU2VjSXRlbVJlcXVlc3REYXRhOworY2xh
c3MgU2VjSXRlbVJlc3BvbnNlRGF0YTsKKyNlbmRpZgorCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTEyNCw2
ICsxMjksMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CiAgICAg
dm9pZCBwbHVnaW5TeW5jTWVzc2FnZVNlbmRUaW1lZE91dChjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZvaWQgc2VjSXRlbUNvcHlNYXRj
aGluZyhjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBTZWNJdGVtUmVzcG9uc2VEYXRhJik7Cisg
ICAgdm9pZCBzZWNJdGVtQWRkKGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIFNlY0l0ZW1SZXNw
b25zZURhdGEmKTsKKyAgICB2b2lkIHNlY0l0ZW1VcGRhdGUoY29uc3QgU2VjSXRlbVJlcXVlc3RE
YXRhJiwgU2VjSXRlbVJlc3BvbnNlRGF0YSYpOworICAgIHZvaWQgc2VjSXRlbURlbGV0ZShjb25z
dCBTZWNJdGVtUmVxdWVzdERhdGEmLCBTZWNJdGVtUmVzcG9uc2VEYXRhJik7CisjZW5kaWYKIAog
ICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gODY2NzIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw0ICszMSwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
UHJveHkgewogICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdp
blBhdGgpIC0+IChDb3JlSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCiAg
ICAgUGx1Z2luU3luY01lc3NhZ2VTZW5kVGltZWRPdXQoV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkK
ICNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNlY0l0ZW1Db3B5TWF0Y2hpbmcoV2Vi
S2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25z
ZURhdGEgcmVzdWx0KQorICAgIFNlY0l0ZW1BZGQoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEg
cXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEgcmVzdWx0KQorICAgIFNlY0l0
ZW1VcGRhdGUoV2ViS2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNl
Y0l0ZW1SZXNwb25zZURhdGEgcmVzdWx0KQorICAgIFNlY0l0ZW1EZWxldGUoV2ViS2l0OjpTZWNJ
dGVtUmVxdWVzdERhdGEgcXVlcnkpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURhdGEgcmVz
dWx0KQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1Byb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKKworI2ltcG9ydCAiU2VjSXRlbVJlcXVlc3REYXRhLmgiCisjaW1w
b3J0ICJTZWNJdGVtUmVzcG9uc2VEYXRhLmgiCisjaW1wb3J0IDxTZWN1cml0eS9TZWNJdGVtLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VjSXRlbUNv
cHlNYXRjaGluZyhjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHF1ZXJ5RGF0YSwgU2VjSXRlbVJl
c3BvbnNlRGF0YSYgcmVzdWx0KQoreworICAgIENGRGljdGlvbmFyeVJlZiBxdWVyeSA9IHF1ZXJ5
RGF0YS5xdWVyeSgpOworICAgIENGVHlwZVJlZiByZXN1bHRPYmplY3Q7CisgICAgT1NTdGF0dXMg
cmVzdWx0Q29kZTsKKworICAgIHJlc3VsdENvZGUgPSBTZWNJdGVtQ29weU1hdGNoaW5nKHF1ZXJ5
LCAmcmVzdWx0T2JqZWN0KTsKKworICAgIHJlc3VsdCA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVz
dWx0Q29kZSwgcmVzdWx0T2JqZWN0KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlY0l0
ZW1BZGQoY29uc3QgU2VjSXRlbVJlcXVlc3REYXRhJiBxdWVyeURhdGEsIFNlY0l0ZW1SZXNwb25z
ZURhdGEmIHJlc3VsdCkKK3sKKyAgICBDRkRpY3Rpb25hcnlSZWYgcXVlcnkgPSBxdWVyeURhdGEu
cXVlcnkoKTsKKyAgICBDRlR5cGVSZWYgcmVzdWx0T2JqZWN0OworICAgIE9TU3RhdHVzIHJlc3Vs
dENvZGU7CisKKyAgICByZXN1bHRDb2RlID0gU2VjSXRlbUFkZChxdWVyeSwgJnJlc3VsdE9iamVj
dCk7CisKKyAgICByZXN1bHQgPSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIHJlc3Vs
dE9iamVjdCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZWNJdGVtVXBkYXRlKGNvbnN0
IFNlY0l0ZW1SZXF1ZXN0RGF0YSYgcXVlcnlEYXRhLCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXN1
bHQpCit7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5ID0gcXVlcnlEYXRhLnF1ZXJ5KCk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoID0gcXVlcnlEYXRhLmF0dHJpYnV0
ZXNUb01hdGNoKCk7CisgICAgT1NTdGF0dXMgcmVzdWx0Q29kZTsKKworICAgIHJlc3VsdENvZGUg
PSBTZWNJdGVtVXBkYXRlKHF1ZXJ5LCBhdHRyaWJ1dGVzVG9NYXRjaCk7CisKKyAgICByZXN1bHQg
PSBTZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIDApOworfQorCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2VjSXRlbURlbGV0ZShjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmIHF1ZXJ5RGF0
YSwgU2VjSXRlbVJlc3BvbnNlRGF0YSYgcmVzdWx0KQoreworICAgIENGRGljdGlvbmFyeVJlZiBx
dWVyeSA9IHF1ZXJ5RGF0YS5xdWVyeSgpOworICAgIE9TU3RhdHVzIHJlc3VsdENvZGU7CisKKyAg
ICByZXN1bHRDb2RlID0gU2VjSXRlbURlbGV0ZShxdWVyeSk7CisKKyAgICByZXN1bHQgPSBTZWNJ
dGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDg2Njg4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNiArMzc0LDcgQEAK
IAkJNTFEMTMwNTQxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNTAxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1MUQxMzA1NTEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyog
U2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU2MTM4MkVBQzAwMDM1MUVE
RCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3Bv
bnNlRGF0YS5oICovOyB9OworCQk1MUQxMzA1ODEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFEMTMwNTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLzsg
fTsKIAkJNjUwMUJEMUExMkYxMjQzNDAwRTlGMjQ4IC8qIFdLQnVuZGxlSW5zcGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qjg2RjE3MTJG
MTFEN0IwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3BlY3Rvci5jcHAgKi87IH07CiAJCTY1OUM1NTFF
MTMwMDA2NDEwMDI1QzBDMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkE4
MjkxMzAwMDE2NDAwMENFQjFDIC8qIEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dC5jcHAgKi87IH07CiAJCTY1Qjg2RjFFMTJGMTFERTMwMEI3REQ4QSAvKiBXS0J1bmRsZUluc3Bl
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVC
ODZGMTgxMkYxMUQ3QjAwQjdERDhBIC8qIFdLQnVuZGxlSW5zcGVjdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMTMwMSw2ICsxMzAyLDcgQEAK
IAkJNTFEMTMwNTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXNwb25zZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VjSXRlbVJlc3BvbnNlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RDEzMDUyMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTMwNTcxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nl
c3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlByb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDcy
OTQxMTZGRjcwQjAwRUU1Mzk2IC8qIFdlYlByb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gV2ViUHJvY2Vzcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0NkE4MjkxMzAwMDE2NDAwMENFQjFDIC8q
IEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEzNCw2ICszMTM2LDcgQEAK
IAkJCQlCQzU3NTA5NTEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMuaCAq
LywKIAkJCQlCQzU3NTA5NjEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJveHlNYWMu
bW0gKi8sCiAJCQkJQkM4NEVCMTcxMkE3MTAwQzAwODNGMkRBIC8qIFdlYlByZWZlcmVuY2VzTWFj
Lm1tICovLAorCQkJCTUxRDEzMDU3MTM4MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlN
YWMubW0gKi8sCiAJCQkJQ0RDQTg1QzYxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCAqLywKIAkJCSk7CkBAIC00NDU3LDYgKzQ0NjAs
NyBAQAogCQkJCUJDRTE3QjdEMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTUxMzgyRUFDMDAwMzUx
RUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTMw
NTgxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFj
Lm1tCShyZXZpc2lvbiA4NjY4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDExIEBACiAKICNpbXBv
cnQgIkZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNp
b24uaCIKKyNpbXBvcnQgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgorI2ltcG9ydCAiU2VjSXRlbVJl
c3BvbnNlRGF0YS5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NTaGltLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtMjM5LDI4ICsyNDIs
MTIzIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICBtZXRo
b2Rfc2V0SW1wbGVtZW50YXRpb24obWV0aG9kVG9QYXRjaCwgKElNUClOU0FwcGxpY2F0aW9uQWNj
ZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQpOwogfQogCi1zdGF0aWMgT1NTdGF0dXMgV2ViU2Vj
SXRlbUNvcHlNYXRjaGluZyhDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENGVHlwZVJlZiAqcmVzdWx0
KQorLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDk3
NSkgLSBPbmNlIENvcmVJUEMgc3VwcG9ydHMgc3luYyBtZXNzYWdpbmcgZnJvbSBhIHNlY29uZGFy
eSB0aHJlYWQsCisvLyB3ZSBjYW4gcmVtb3ZlIFNlY0l0ZW1BUElDb250ZXh0IGFuZCB0aGVzZSA0
IG1haW4tdGhyZWFkIG1ldGhvZHMsIGFuZCB3ZSBjYW4gaGF2ZSB0aGUgc2hpbSBtZXRob2RzIGNh
bGwgb3V0IGRpcmVjdGx5IAorLy8gZnJvbSB3aGF0ZXZlciB0aHJlYWQgdGhleSdyZSBvbi4KKwor
c3RydWN0IFNlY0l0ZW1BUElDb250ZXh0Cit7CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5Owor
ICAgIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9VcGRhdGU7CisgICAgQ0ZUeXBlUmVmIHJl
c3VsdE9iamVjdDsKKyAgICBPU1N0YXR1cyByZXN1bHRDb2RlOworfTsKKworc3RhdGljIHZvaWQg
V2ViU2VjSXRlbUNvcHlNYXRjaGluZ01haW5UaHJlYWQodm9pZCogdm9pZENvbnRleHQpCit7Cisg
ICAgU2VjSXRlbUFQSUNvbnRleHQqIGNvbnRleHQgPSAoU2VjSXRlbUFQSUNvbnRleHQqKXZvaWRD
b250ZXh0OworICAgIAorICAgIFNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShjb250ZXh0
LT5xdWVyeSk7CisgICAgU2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZTsKKyAgICBpZiAoIVdl
YlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6U2VjSXRlbUNvcHlNYXRjaGluZyhyZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OlNlY0l0ZW1Db3B5TWF0Y2hpbmc6OlJlcGx5KHJlc3BvbnNlKSwgMCkp
IHsKKyAgICAgICAgY29udGV4dC0+cmVzdWx0Q29kZSA9IGVyclNlY0ludGVyYWN0aW9uTm90QWxs
b3dlZDsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgY29udGV4dC0+cmVzdWx0T2JqZWN0ID0gcmVzcG9uc2UucmVzdWx0T2Jq
ZWN0KCkubGVha1JlZigpOworICAgIGNvbnRleHQtPnJlc3VsdENvZGUgPSByZXNwb25zZS5yZXN1
bHRDb2RlKCk7Cit9CisKK3N0YXRpYyBPU1N0YXR1cyBXZWJTZWNJdGVtQ29weU1hdGNoaW5nKENG
RGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZUeXBlUmVmKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIC0xOworICAgIE93blB0cjxTZWNJdGVtQVBJQ29udGV4
dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBTZWNJdGVtQVBJQ29udGV4dCk7ICAgIAorICAgIGNv
bnRleHQtPnF1ZXJ5ID0gcXVlcnk7CisgICAgCisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
V2ViU2VjSXRlbUNvcHlNYXRjaGluZ01haW5UaHJlYWQsIGNvbnRleHQuZ2V0KCkpOworICAgIAor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgICpyZXN1bHQgPSBjb250ZXh0LT5yZXN1bHRPYmplY3Q7
CisgICAgcmV0dXJuIGNvbnRleHQtPnJlc3VsdENvZGU7Cit9CisKK3N0YXRpYyB2b2lkIFdlYlNl
Y0l0ZW1BZGRPbk1haW5UaHJlYWQodm9pZCogdm9pZENvbnRleHQpCit7CisgICAgU2VjSXRlbUFQ
SUNvbnRleHQqIGNvbnRleHQgPSAoU2VjSXRlbUFQSUNvbnRleHQqKXZvaWRDb250ZXh0OworICAg
IAorICAgIFNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShjb250ZXh0LT5xdWVyeSk7Cisg
ICAgU2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
U2VjSXRlbUFkZChyZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0l0
ZW1BZGQ6OlJlcGx5KHJlc3BvbnNlKSwgMCkpIHsKKyAgICAgICAgY29udGV4dC0+cmVzdWx0Q29k
ZSA9IGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgY29udGV4dC0+cmVzdWx0
T2JqZWN0ID0gcmVzcG9uc2UucmVzdWx0T2JqZWN0KCkubGVha1JlZigpOworICAgIGNvbnRleHQt
PnJlc3VsdENvZGUgPSByZXNwb25zZS5yZXN1bHRDb2RlKCk7CiB9CiAKLXN0YXRpYyBPU1N0YXR1
cyBXZWJTZWNJdGVtQWRkKENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZUeXBlUmVmICpyZXN1bHQp
CitzdGF0aWMgT1NTdGF0dXMgV2ViU2VjSXRlbUFkZChDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENG
VHlwZVJlZiogcmVzdWx0KQoreyAgICAKKyAgICBPd25QdHI8U2VjSXRlbUFQSUNvbnRleHQ+IGNv
bnRleHQgPSBhZG9wdFB0cihuZXcgU2VjSXRlbUFQSUNvbnRleHQpOyAgICAKKyAgICBjb250ZXh0
LT5xdWVyeSA9IHF1ZXJ5OworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFdlYlNl
Y0l0ZW1BZGRPbk1haW5UaHJlYWQsIGNvbnRleHQuZ2V0KCkpOworICAgIAorICAgIGlmIChyZXN1
bHQpCisgICAgICAgICpyZXN1bHQgPSBjb250ZXh0LT5yZXN1bHRPYmplY3Q7CisgICAgcmV0dXJu
IGNvbnRleHQtPnJlc3VsdENvZGU7Cit9CisKK3N0YXRpYyB2b2lkIFdlYlNlY0l0ZW1VcGRhdGVP
bk1haW5UaHJlYWQodm9pZCogdm9pZENvbnRleHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIC0xOworICAgIFNlY0l0ZW1BUElDb250ZXh0KiBjb250ZXh0ID0gKFNl
Y0l0ZW1BUElDb250ZXh0Kil2b2lkQ29udGV4dDsKKyAgICAKKyAgICBTZWNJdGVtUmVxdWVzdERh
dGEgcmVxdWVzdERhdGEoY29udGV4dC0+cXVlcnksIGNvbnRleHQtPmF0dHJpYnV0ZXNUb1VwZGF0
ZSk7CisgICAgU2VjSXRlbVJlc3BvbnNlRGF0YSByZXNwb25zZTsKKyAgICBpZiAoIVdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6U2VjSXRlbVVwZGF0ZShyZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlNlY0l0ZW1VcGRhdGU6OlJlcGx5KHJlc3BvbnNlKSwgMCkpIHsKKyAgICAgICAgY29udGV4
dC0+cmVzdWx0Q29kZSA9IGVyclNlY0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgY29u
dGV4dC0+cmVzdWx0Q29kZSA9IHJlc3BvbnNlLnJlc3VsdENvZGUoKTsKIH0KIAogc3RhdGljIE9T
U3RhdHVzIFdlYlNlY0l0ZW1VcGRhdGUoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25h
cnlSZWYgYXR0cmlidXRlc1RvVXBkYXRlKQoreyAgICAKKyAgICBPd25QdHI8U2VjSXRlbUFQSUNv
bnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihuZXcgU2VjSXRlbUFQSUNvbnRleHQpOyAgICAKKyAg
ICBjb250ZXh0LT5xdWVyeSA9IHF1ZXJ5OworICAgIGNvbnRleHQtPmF0dHJpYnV0ZXNUb1VwZGF0
ZSA9IGF0dHJpYnV0ZXNUb1VwZGF0ZTsKKyAgICAKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2Fp
dChXZWJTZWNJdGVtVXBkYXRlT25NYWluVGhyZWFkLCBjb250ZXh0LmdldCgpKTsKKyAgICAKKyAg
ICByZXR1cm4gY29udGV4dC0+cmVzdWx0Q29kZTsKK30KKworc3RhdGljIHZvaWQgV2ViU2VjSXRl
bURlbGV0ZU9uTWFpblRocmVhZCh2b2lkKiB2b2lkQ29udGV4dCkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gLTE7CisgICAgU2VjSXRlbUFQSUNvbnRleHQqIGNvbnRl
eHQgPSAoU2VjSXRlbUFQSUNvbnRleHQqKXZvaWRDb250ZXh0OworICAgIAorICAgIFNlY0l0ZW1S
ZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShjb250ZXh0LT5xdWVyeSk7CisgICAgU2VjSXRlbVJlc3Bv
bnNlRGF0YSByZXNwb25zZTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U2VjSXRlbURlbGV0ZShy
ZXF1ZXN0RGF0YSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlNlY0l0ZW1EZWxldGU6OlJl
cGx5KHJlc3BvbnNlKSwgMCkpIHsKKyAgICAgICAgY29udGV4dC0+cmVzdWx0Q29kZSA9IGVyclNl
Y0ludGVyYWN0aW9uTm90QWxsb3dlZDsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgY29udGV4dC0+cmVzdWx0Q29kZSA9IHJl
c3BvbnNlLnJlc3VsdENvZGUoKTsKIH0KIAogc3RhdGljIE9TU3RhdHVzIFdlYlNlY0l0ZW1EZWxl
dGUoQ0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiAtMTsKK3sgICAgCisgICAgT3duUHRyPFNlY0l0ZW1BUElDb250ZXh0PiBjb250
ZXh0ID0gYWRvcHRQdHIobmV3IFNlY0l0ZW1BUElDb250ZXh0KTsgICAgCisgICAgY29udGV4dC0+
cXVlcnkgPSBxdWVyeTsKKyAgICAKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChXZWJTZWNJ
dGVtRGVsZXRlT25NYWluVGhyZWFkLCBjb250ZXh0LmdldCgpKTsKKworICAgIHJldHVybiBjb250
ZXh0LT5yZXN1bHRDb2RlOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVTaGltKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGltLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NTaGlt
Lm1tCShyZXZpc2lvbiA4NjY4NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NTaGltLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyNCArMzcsMjQgQEAgZXh0ZXJu
ICJDIiB2b2lkIFdlYktpdFdlYlByb2Nlc3NTaGltSW5pdAogCiBzdGF0aWMgV2ViUHJvY2Vzc1No
aW1DYWxsYmFja3Mgd2ViUHJvY2Vzc1NoaW1DYWxsYmFja3M7CiAKLXN0YXRpYyBPU1N0YXR1cyBz
aGltU2VjSXRlbUNvcHlNYXRjaGluZyhDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENGVHlwZVJlZiAq
cmVzdWx0KQorc3RhdGljIE9TU3RhdHVzIHNoaW1TZWNJdGVtQ29weU1hdGNoaW5nKENGRGljdGlv
bmFyeVJlZiBxdWVyeSwgQ0ZUeXBlUmVmKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIFNlY0l0ZW1D
b3B5TWF0Y2hpbmcocXVlcnksIHJlc3VsdCk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3NTaGltQ2Fs
bGJhY2tzLnNlY0l0ZW1Db3B5TWF0Y2hpbmcocXVlcnksIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBP
U1N0YXR1cyBzaGltU2VjSXRlbUFkZChDRkRpY3Rpb25hcnlSZWYgcXVlcnksIENGVHlwZVJlZiAq
cmVzdWx0KQorc3RhdGljIE9TU3RhdHVzIHNoaW1TZWNJdGVtQWRkKENGRGljdGlvbmFyeVJlZiBx
dWVyeSwgQ0ZUeXBlUmVmKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIFNlY0l0ZW1BZGQocXVlcnks
IHJlc3VsdCk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3NTaGltQ2FsbGJhY2tzLnNlY0l0ZW1BZGQo
cXVlcnksIHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBPU1N0YXR1cyBzaGltU2VjSXRlbVVwZGF0ZShD
RkRpY3Rpb25hcnlSZWYgcXVlcnksIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzVG9VcGRhdGUp
CiB7Ci0gICAgcmV0dXJuIFNlY0l0ZW1VcGRhdGUocXVlcnksIGF0dHJpYnV0ZXNUb1VwZGF0ZSk7
CisgICAgcmV0dXJuIHdlYlByb2Nlc3NTaGltQ2FsbGJhY2tzLnNlY0l0ZW1VcGRhdGUocXVlcnks
IGF0dHJpYnV0ZXNUb1VwZGF0ZSk7CiB9CiAKIHN0YXRpYyBPU1N0YXR1cyBzaGltU2VjSXRlbURl
bGV0ZShDRkRpY3Rpb25hcnlSZWYgcXVlcnkpCiB7Ci0gICAgcmV0dXJuIFNlY0l0ZW1EZWxldGUo
cXVlcnkpOworICAgIHJldHVybiB3ZWJQcm9jZXNzU2hpbUNhbGxiYWNrcy5zZWNJdGVtRGVsZXRl
KHF1ZXJ5KTsKIH0KIAogRFlMRF9JTlRFUlBPU0Uoc2hpbVNlY0l0ZW1Db3B5TWF0Y2hpbmcsIFNl
Y0l0ZW1Db3B5TWF0Y2hpbmcpCg==
</data>
<flag name="review"
          id="87024"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>