<?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>38826</bug_id>
          
          <creation_ts>2010-05-09 17:49:00 -0700</creation_ts>
          <short_desc>Don&apos;t convert filenames to URLs in edit drags.</short_desc>
          <delta_ts>2010-06-10 07:31:54 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jianli</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223117</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-05-09 17:49:00 -0700</bug_when>
    <thetext>This is on Chromium, but I believe the same will happen in Safari.

Go to any web page, set the page to be contentEditable, and then drag and drop a file. A link is created with an absolute file:// path. This is because DragController calls DragData::asURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228727</commentid>
    <comment_count>1</comment_count>
      <attachid>56666</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-05-20 21:02:14 -0700</bug_when>
    <thetext>Created attachment 56666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228728</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-05-20 21:10:39 -0700</bug_when>
    <thetext>Darin, do you mind reviewing this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231989</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 15:53:09 -0700</bug_when>
    <thetext>Oliver has also worked on drag code in the past and may be interested in this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231991</commentid>
    <comment_count>4</comment_count>
      <attachid>56666</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-28 15:55:00 -0700</bug_when>
    <thetext>Comment on attachment 56666
Patch

&gt; +            String url = dragData-&gt;asURL(false, &amp;title);

Boolean parameters suck. It&apos;s hard, at the call site, to know what the true/false means. Either use an enum, or have two separate methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231999</commentid>
    <comment_count>5</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-05-28 16:18:16 -0700</bug_when>
    <thetext>LayoutTests/platform/qt/Skipped:5096
 +  # Filenames aren&apos;t filtered out from edit drags yet, see https://bugs.wekit.org/show_bug.cgi?id=38826
I think this test should still be marked as skipped even after filename filtering is supported because qt does not support beginDragWithFiles yet.

WebCore/platform/DragData.h:95
 +          bool containsURL(bool convertFilenames = false) const;
It will be simpler to make the default value to support the majority cases which is true. Then you do not need to change a lot of codes above.
In addition, I think convertFilenames is a little bit confusing since indeed we mean not to expose file url, maybe something like doNotExposeFilename and make the default value as false. Or even better, as Simon pointed out, switch to using enum.

WebCore/platform/DragData.h:98
 +          String asURL(bool convertFilenames = false, String* title = 0) const;
ditto.

WebCore/platform/android/DragDataAndroid.cpp:71
 +  bool DragData::containsURL(bool convertFilenames) const
Please make sure this can get compiled correctly since some platforms might complain about unused parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234507</commentid>
    <comment_count>6</comment_count>
      <attachid>57959</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-04 21:43:57 -0700</bug_when>
    <thetext>Created attachment 57959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234508</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-04 21:48:54 -0700</bug_when>
    <thetext>Attachment 57959 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3090061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234597</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-05 04:07:47 -0700</bug_when>
    <thetext>Attachment 57959 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3078084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234631</commentid>
    <comment_count>9</comment_count>
      <attachid>57969</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-05 13:26:24 -0700</bug_when>
    <thetext>Created attachment 57969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234632</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-05 13:33:15 -0700</bug_when>
    <thetext>Attachment 57969 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3148057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234635</commentid>
    <comment_count>11</comment_count>
      <attachid>57970</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-05 13:40:09 -0700</bug_when>
    <thetext>Created attachment 57970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234636</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-05 14:53:06 -0700</bug_when>
    <thetext>Attachment 57969 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3120078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234637</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-05 15:17:25 -0700</bug_when>
    <thetext>Attachment 57970 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3113093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235069</commentid>
    <comment_count>14</comment_count>
      <attachid>58096</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-07 17:06:46 -0700</bug_when>
    <thetext>Created attachment 58096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235120</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 21:10:39 -0700</bug_when>
    <thetext>Attachment 58096 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3237011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235598</commentid>
    <comment_count>16</comment_count>
      <attachid>58200</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-08 17:30:52 -0700</bug_when>
    <thetext>Created attachment 58200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235602</commentid>
    <comment_count>17</comment_count>
      <attachid>58202</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-08 17:38:37 -0700</bug_when>
    <thetext>Created attachment 58202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235604</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-08 17:40:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; LayoutTests/platform/qt/Skipped:5096
&gt;  +  # Filenames aren&apos;t filtered out from edit drags yet, see https://bugs.wekit.org/show_bug.cgi?id=38826
&gt; I think this test should still be marked as skipped even after filename filtering is supported because qt does not support beginDragWithFiles yet.
&gt; 

Done.

&gt; WebCore/platform/DragData.h:95
&gt;  +          bool containsURL(bool convertFilenames = false) const;
&gt; It will be simpler to make the default value to support the majority cases which is true. Then you do not need to change a lot of codes above.
&gt; In addition, I think convertFilenames is a little bit confusing since indeed we mean not to expose file url, maybe something like doNotExposeFilename and make the default value as false. Or even better, as Simon pointed out, switch to using enum.
&gt; 
&gt; WebCore/platform/DragData.h:98
&gt;  +          String asURL(bool convertFilenames = false, String* title = 0) const;
&gt; ditto.
&gt; 

Changed the default argument value, and also switched it to using an enum.

&gt; WebCore/platform/android/DragDataAndroid.cpp:71
&gt;  +  bool DragData::containsURL(bool convertFilenames) const
&gt; Please make sure this can get compiled correctly since some platforms might complain about unused parameter.

There are other unused parameters already, so I think this should be OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235616</commentid>
    <comment_count>19</comment_count>
      <attachid>58202</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-08 18:26:51 -0700</bug_when>
    <thetext>Comment on attachment 58202
Patch

LayoutTests/ChangeLog:14
 +          (moveMouseToCenterOfElement):
No need to show these new methods in js.

WebCore/platform/DragData.h:81
 +          enum ShouldConvertFilenames { DoNotConvertFilenames, ConvertFilenames };
Might be better to name ShouldConvertFilenames as FilenamesConvertPolicy.

WebCore/platform/chromium/DragDataChromium.cpp:64
 +  String DragData::asURL(ShouldConvertFilenames convertFilenames, String* title) const
ShouldConvertFilenames convertFilenames =&gt; FilenamesConvertPolicy convertPolicy

WebCore/platform/android/DragDataAndroid.cpp:71
 +  bool DragData::containsURL(ShouldConvertFilenames convertFilenames) const
The argument name can be omitted. Please also change other occurrences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235618</commentid>
    <comment_count>20</comment_count>
      <attachid>58205</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-08 18:48:36 -0700</bug_when>
    <thetext>Created attachment 58205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235669</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-08 23:30:39 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 58202 [details])
&gt; LayoutTests/ChangeLog:14
&gt;  +          (moveMouseToCenterOfElement):
&gt; No need to show these new methods in js.
&gt; 

This is the output from prepare-ChangeLog. I felt best to leave it that way.

&gt; WebCore/platform/DragData.h:81
&gt;  +          enum ShouldConvertFilenames { DoNotConvertFilenames, ConvertFilenames };
&gt; Might be better to name ShouldConvertFilenames as FilenamesConvertPolicy.
&gt; 

Done.

&gt; WebCore/platform/chromium/DragDataChromium.cpp:64
&gt;  +  String DragData::asURL(ShouldConvertFilenames convertFilenames, String* title) const
&gt; ShouldConvertFilenames convertFilenames =&gt; FilenamesConvertPolicy convertPolicy
&gt; 

Done.

&gt; WebCore/platform/android/DragDataAndroid.cpp:71
&gt;  +  bool DragData::containsURL(ShouldConvertFilenames convertFilenames) const
&gt; The argument name can be omitted. Please also change other occurrences.


This is actually necessary--it&apos;s used by WebCore/page/DragController.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235965</commentid>
    <comment_count>22</comment_count>
      <attachid>58205</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-09 13:24:43 -0700</bug_when>
    <thetext>Comment on attachment 58205
Patch

&gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt;  +          (moveMouseToCenterOfElement):
&gt; &gt; No need to show these new methods in js.
&gt; &gt; 
&gt; 
&gt; This is the output from prepare-ChangeLog. I felt best to leave it that way.
Yes, this is output from prepare-ChangeLog. But many people choose not to add new methods from the new file.

LayoutTests/editing/pasteboard/script-tests/file-drag-to-editable.js:18
 +  function dragFilesOntoEditableArea(files) {
Please move &apos;{&apos; to the beginning of next line.

WebCore/platform/android/DragDataAndroid.cpp:71
 +  bool DragData::containsURL(FilenameConversionPolicy filenamePolicy) const
It is better to omit the argument name &quot;filenamePolicy&quot; since otherwise it might break other build for &quot;unused parameter&quot;.

WebCore/platform/android/DragDataAndroid.cpp:76
 +  String DragData::asURL(FilenameConversionPolicy filenamePolicy, String*) const
ditto.

WebCore/platform/win/ClipboardUtilitiesWin.cpp:366
 +          // FIXME: originally, this logic was so dropping files on WebKit would insert the filename.
The comment &quot;this logic was so dropping files on WebKit&quot; seems to be hard to understand. Could you please rephrase it?

WebCore/platform/win/ClipboardUtilitiesWin.h:64
 +  String getURL(IDataObject*, DragData::FilenameConversionPolicy filenamePolicy, bool&amp; success, String* title = 0);
The argument name filenamePolicy can be omitted per coding style guideline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235973</commentid>
    <comment_count>23</comment_count>
      <attachid>58289</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-09 13:39:54 -0700</bug_when>
    <thetext>Created attachment 58289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235975</commentid>
    <comment_count>24</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-09 13:41:29 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 58205 [details])
&gt; &gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; &gt;  +          (moveMouseToCenterOfElement):
&gt; &gt; &gt; No need to show these new methods in js.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; This is the output from prepare-ChangeLog. I felt best to leave it that way.
&gt; Yes, this is output from prepare-ChangeLog. But many people choose not to add new methods from the new file.
&gt; 

Done.

&gt; LayoutTests/editing/pasteboard/script-tests/file-drag-to-editable.js:18
&gt;  +  function dragFilesOntoEditableArea(files) {
&gt; Please move &apos;{&apos; to the beginning of next line.
&gt; 

Done.

&gt; WebCore/platform/android/DragDataAndroid.cpp:71
&gt;  +  bool DragData::containsURL(FilenameConversionPolicy filenamePolicy) const
&gt; It is better to omit the argument name &quot;filenamePolicy&quot; since otherwise it might break other build for &quot;unused parameter&quot;.
&gt; 

Done.

&gt; WebCore/platform/android/DragDataAndroid.cpp:76
&gt;  +  String DragData::asURL(FilenameConversionPolicy filenamePolicy, String*) const
&gt; ditto.
&gt; 

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.cpp:366
&gt;  +          // FIXME: originally, this logic was so dropping files on WebKit would insert the filename.
&gt; The comment &quot;this logic was so dropping files on WebKit&quot; seems to be hard to understand. Could you please rephrase it?
&gt; 

Done.

&gt; WebCore/platform/win/ClipboardUtilitiesWin.h:64
&gt;  +  String getURL(IDataObject*, DragData::FilenameConversionPolicy filenamePolicy, bool&amp; success, String* title = 0);
&gt; The argument name filenamePolicy can be omitted per coding style guideline.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236031</commentid>
    <comment_count>25</comment_count>
      <attachid>58289</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-06-09 15:04:08 -0700</bug_when>
    <thetext>Comment on attachment 58289
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236361</commentid>
    <comment_count>26</comment_count>
      <attachid>58289</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 07:31:45 -0700</bug_when>
    <thetext>Comment on attachment 58289
Patch

Clearing flags on attachment: 58289

Committed r60957: &lt;http://trac.webkit.org/changeset/60957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236362</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 07:31:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56666</attachid>
            <date>2010-05-20 21:02:14 -0700</date>
            <delta_ts>2010-06-04 21:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100520210213.patch</filename>
            <type>text/plain</type>
            <size>31085</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MGU3NWYzNjlkNTQxY2I5MmVlODhiNzE0MGQ4Yjg1ZTY5MTMyYTY1Li5lNTdhNDc2
NTE2Yjk3NThlZjhjMDI0ZTVlZmJmNGNkZGVjNGFhN2ExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDUtMjAgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA1LTIwICBKdXN0aW4gU2NodWggIDxq
c2NodWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVk
aXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxl
LWRyYWctdG8tZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjJjZWUyY2VkNGY3
NzQwOGYxZTVhNzJkYzM0NzQ3YzY1OTVmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1Rlc3RzIHRoYXQgZHJhZ2dpbmcgYSBmaWxlIGludG8gYW4gZWRpdGFi
bGUgYXJlYSBkb2VzIG5vdCBpbnNlcnQgYSBmaWxlbmFtZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJh
Zy10by1lZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZWJlNzUwNzVkM2M5OWQxZTJjN2Iy
ZDgyM2Q3ODQwOTI3ZWMyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYjEyMmUxYjc2MjNmZmJlZDEwNzJkNTAzYWJjMWFkMmY0N2NjMjgwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0
cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKQEAgLTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24o
J1Rlc3RzIHRoYXQgZHJhZ2dpbmcgYSBmaWxlIGludG8gYW4gZWRpdGFibGUgYXJlYSBkb2VzIG5v
dCBpbnNlcnQgYSBmaWxlbmFtZS4nKTsKKwordmFyIGVkaXRhYmxlQXJlYSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworZWRpdGFibGVBcmVhLmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7
CitlZGl0YWJsZUFyZWEuc3R5bGUuYmFja2dyb3VuZCA9ICdncmVlbic7CitlZGl0YWJsZUFyZWEu
c3R5bGUuaGVpZ2h0ID0gJzEwMHB4JzsKK2VkaXRhYmxlQXJlYS5zdHlsZS53aWR0aCA9ICcxMDBw
eCc7CisvLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBkb2Mg
c28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdvIG91dCBvZiB2aWV3ICh3aGVy
ZSBpdCBjYW4ndCBiZSBkcmFnZ2VkIHRvKQorZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZWRp
dGFibGVBcmVhLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiBtb3ZlTW91
c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KQoreworICAgIHZhciBjZW50ZXJYID0gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkg
PSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gZHJh
Z0ZpbGVzT250b0VkaXRhYmxlQXJlYShmaWxlcykgeworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJh
Z1dpdGhGaWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWRpdGFi
bGVBcmVhKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBzaG91bGRCZVRydWUoJ3N1Y2Nlc3NmdWxseVBhcnNlZCcpOworICAgICAgICBkZWJ1ZygnPGJy
IC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisKKyAgICAgICAg
Ly8gRG9uJ3QgcmVtb3ZlIHRoZSBlZGl0YWJsZSBub2RlLCBzaW5jZSB3ZSB3YW50IHRvIG1ha2Ug
c3VyZSB0aGVyZSBubyBzdHJheSBmaWxlIFVSTHMgd2VyZQorICAgICAgICAvLyBpbnNlcnRlZCBk
dXJpbmcgdGhlIGRyb3AuCisKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworCisgICAgICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7CisgICAgfTsKKyAg
ICBkcmFnRmlsZXNPbnRvRWRpdGFibGVBcmVhKFsnRFJURmFrZUZpbGUnXSk7CisgICAgdGVzdEZh
aWxlZCgnVGhlIHRlc3Qgc2hvdWxkIGhhdmUgcmVzdWx0ZWQgaW4gbmF2aWdhdGlvbicpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgIHJ1blRlc3QoKTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0
IGlzIG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZScpOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBlM2U0MGY0NWE1MGE4NDk3NzE3ZDdiYjVj
NTUwYWZiMzI2NmVkMjVmLi4zMzAzZjMzOGI5NDM4ODhjOGVhNjA4NzU0Mjk0ODQwOWZjNmE2MjMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNjY4LDYgKzY2OCw3IEBAIGVkaXRpbmcv
cGFzdGVib2FyZC9kcmFnLWRyb3AtaW5wdXQtdGV4dGFyZWEuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2RyYWctZHJvcC11cmwtdGV4dC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbi1w
YXNzd29yZC1maWVsZC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1pbWFnZS1pbi1hYm91
dC1ibGFuay1mcmFtZS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRh
YmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1kcm9wLmh0bWwKIGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1pbnRvLWFuY2hvci10ZXh0Lmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKaW5kZXggNmI3Y2VkYWEwZWMxZjUxZjc2NWFlMDgzZjJjNmZhYjhlZGJlYmMwNS4u
N2I3MmMzNDA1NDEzMWY3NzNhM2ZmNjY4ZTVlYTJkOTE3ZWY1OTI5YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKQEAgLTE5MiwzICsxOTIsNiBAQCBzdG9yYWdlL2luZGV4ZWRkYgogIyBUaGlz
IHBvcnQgZG9lc24ndCBzdXBwb3J0IERldmljZU9yaWVudGF0aW9uLgogZmFzdC9kb20vRGV2aWNl
T3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Ut
b3JpZW50YXRpb24uaHRtbAorCisjIEZpbGVuYW1lcyBhcmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20g
ZWRpdCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mud2VraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zODgyNgorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA2NDY4MzdmNWE3YjRlY2ZmNWFjNzM0NjEzNWVkY2Ew
MDM0YmQ5MjM1Li4xMTFiMTQ5OGU3MGFkYTQ2YWQ2MTNiZjBlZGIyNjI4YTg2YzBlZmE4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTUwOTIsMyArNTA5Miw2IEBAIHN0b3JhZ2UvaW5kZXhl
ZGRiCiAjIFRoaXMgcG9ydCBkb2Vzbid0IHN1cHBvcnQgRGV2aWNlT3JpZW50YXRpb24uCiBmYXN0
L2RvbS9EZXZpY2VPcmllbnRhdGlvbgogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCisKKyMgRmlsZW5hbWVzIGFyZW4ndCBmaWx0ZXJl
ZCBvdXQgZnJvbSBlZGl0IGRyYWdzIHlldCwgc2VlIGh0dHBzOi8vYnVncy53ZWtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4ODI2CitlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRh
YmxlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMDJmMmE4ZmE2M2M5YWM2YmIy
NzAxMjgxY2I0YjNkNTEyNTg1ZWE3Mi4uMGYyYzQ1NjMyZTZiNDY5ODAxZGNiYzllZGZlMmNlOWVh
YmJjNGZmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE5Miw2ICsxOTIsNyBAQCBo
dHRwL3Rlc3RzL3dlYmFyY2hpdmUKIAogIyA8cmRhcjovL3Byb2JsZW0vNTIzMDM5Nj4gZXZlbnRT
ZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzIGlzIHVuaW1wbGVtZW50ZWQKIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwKK2VkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5w
dXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3QvZXZlbnRzL2RyYWctdG8tbmF2aWdhdGUuaHRtbAog
ZmFzdC9ldmVudHMvcHJldmVudC1kcmFnLXRvLW5hdmlnYXRlLmh0bWwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ1Y2MyMGRhYWU5YzVj
NjBlMDMzZDEwMzZlYTM2YzgyN2ZiOThhOC4uZmU5ODgxM2ZjNDU4YTM1ZGIwNWU5Njg1Y2Q1NTZl
N2ZiMWZjMjU4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMC0wNS0yMCAgRGFuaWVsIENoZW5nICA8ZGNo
ZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEb24ndCBjb252ZXJ0IGZpbGVuYW1lcyB0byBVUkxzIGluIGVkaXQgZHJhZ3Mu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgor
CisgICAgICAgIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkb24ndCB3YW50IHRvIGV4cG9zZSBm
aWxlIHN5c3RlbSBwYXRocyB0byB3ZWIKKyAgICAgICAgY29udGVudCwgc28gd2UgZmlsdGVyIHRo
ZW0gb3V0IG9mIGVkaXQgZHJhZ3MuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJk
L2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnKToKKyAgICAg
ICAgKiBwYWdlL2FuZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL2No
cm9taXVtL0RyYWdDb250cm9sbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2UvZWZsL0RyYWdDb250
cm9sbGVyRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAgICog
cGFnZS9oYWlrdS9EcmFnQ29udHJvbGxlckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBwYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBh
Z2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL3d4L0RyYWdDb250cm9sbGVy
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vYW5k
cm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNv
bnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6
OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRh
SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZv
cm0vcXQvRHJhZ0RhdGFRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFp
bnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRQbGFpblRleHQpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxh
dGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0
YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwp
OgorCiAyMDEwLTA1LTIwICBKdXN0aW4gU2NodWggIDxqc2NodWhAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCBjNjAzOTk2MjMwYzAzYjFmMjQyY2EzN2NhN2U5MzA5ZWMwZjBlYjJjLi5iNzQ4MmYwYzc0MDhh
YjE5MjBhNGZiYzBiMDUyYzI2MDU4NDc4OTNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1
bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhKiBkcmFnRAogCiAgICAgICAgIGlmIChk
cmFnRGF0YS0+Y29udGFpbnNVUkwoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAg
ICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLT5hc1VSTCgmdGl0bGUpOworICAgICAgICAg
ICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLT5hc1VSTChmYWxzZSwgJnRpdGxlKTsKICAgICAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxIVE1MQW5j
aG9yRWxlbWVudD4gYW5jaG9yID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CiAgICAgICAgICAgICAgICAgYW5jaG9yLT5zZXRIcmVmKHVybCk7CkBAIC0yMTIsNyArMjEyLDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCwgZHJhZ0RhdGEpOwotICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdChkcmFn
RGF0YS0+YXNVUkwoKSksIGZhbHNlKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+bG9hZChSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEtPmFzVVJMKHRydWUpKSwgZmFsc2UpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5kcm9pZC9E
cmFnQ29udHJvbGxlckFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wYWdlL2FuZHJvaWQvRHJhZ0NvbnRy
b2xsZXJBbmRyb2lkLmNwcAppbmRleCBiMjBhYjYwYmYwY2ZiNTdkZGYxMWM3Zjk4NmMzOGUwNTY0
NmUzNGEwLi43MmEzOWJmZDYzOTViYmE2YmQ0NGZlOGU0ODkyYWMwMjMwYTBkNDRlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvYW5kcm9pZC9EcmFnQ29udHJvbGxlckFuZHJvaWQuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9hbmRyb2lkL0RyYWdDb250cm9sbGVyQW5kcm9pZC5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFn
RGF0YSogZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0
ZQogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTCgp
KQorICAgIGlmIChkcmFnRGF0YS0+Y29udGFpbnNVUkwodHJ1ZSkpCiAgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uQ29weTsKIAogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9EcmFnQ29udHJvbGxlckNocm9taXVtLmNwcCBi
L1dlYkNvcmUvcGFnZS9jaHJvbWl1bS9EcmFnQ29udHJvbGxlckNocm9taXVtLmNwcAppbmRleCBk
ZTUzZDE5Mzk5ZmIxN2M0YjRkNzEyMDU2NjUxMzRkY2VjNjRkMDQyLi4zZjI2ZjJkNDMxODY5MzJi
ODc4ZGZiNmE1YWY1N2U2YmM1ZjE5MGQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvY2hyb21p
dW0vRHJhZ0NvbnRyb2xsZXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2Nocm9taXVt
L0RyYWdDb250cm9sbGVyQ2hyb21pdW0uY3BwCkBAIC01MSw3ICs1MSw3IEBAIERyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAg
IC8vIGF0dGFjaGVkIHNoZWV0IElmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB3aXRoaW4g
V2ViQ29yZQogICAgIC8vIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIFdlYkNv
cmUgaXRzZWxmCiAgICAgQVNTRVJUKGRyYWdEYXRhKTsKLSAgICByZXR1cm4gZHJhZ0RhdGEtPmNv
bnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBE
cmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKHRydWUp
ICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRpb25Db3B5IDogRHJhZ09wZXJhdGlv
bk5vbmU7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAgYi9XZWJDb3JlL3Bh
Z2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAwYzVmMDAyZDNjNGY2MzMyYzgyNzIw
NjU5NjQzZDVmMmVkZGJkOTMyLi5hNjQ1NThjZjUwNWVmOTU2N2JhMzBjMmZjOTJhZDRkOWFhYzc1
NTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcApAQCAtNTAsNyArNTAs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKCkKIAogRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSogZHJhZ0RhdGEpCiB7Ci0g
ICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTCgpKQorICAgIGlmIChkcmFnRGF0YS0+Y29udGFp
bnNVUkwodHJ1ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAogICAgIHJl
dHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwIGIvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5j
cHAKaW5kZXggYzA2NGE4NzZlOGI1OGFkZTAzMzk5ZThkNmY0OTg1M2Q1NzRhMjc2Ny4uOWM2OTkw
NWRjY2EyNTgyMTA4MjM0NTIwNjU3NzBhMzJiYTQ4YjVmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2d0ay9EcmFn
Q29udHJvbGxlckd0ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
aXNDb3B5S2V5RG93bigpCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKERyYWdEYXRhKiBkcmFnRGF0YSkKIHsKICAgICAvL0ZJWE1FOiBUaGlzIGxvZ2ljIGlzIGlu
Y29tcGxldGUKLSAgICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTCgpKQorICAgICBpZiAoZHJh
Z0RhdGEtPmNvbnRhaW5zVVJMKHRydWUpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNv
cHk7CiAKICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvaGFpa3UvRHJhZ0NvbnRyb2xsZXJIYWlrdS5jcHAgYi9XZWJDb3JlL3BhZ2UvaGFpa3Uv
RHJhZ0NvbnRyb2xsZXJIYWlrdS5jcHAKaW5kZXggZWYwOGFjMmVmMjk5ZTQ3YzgzMGEyOWU5ZWUx
M2VmZWE2NThhMzVkMy4uYWM2MDQxNDQ0MmJiMDM2OGU5NjI3ZWFlMTdlZjJjOTM0Mzc1Yzg4ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2hhaWt1L0RyYWdDb250cm9sbGVySGFpa3UuY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9oYWlrdS9EcmFnQ29udHJvbGxlckhhaWt1LmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKCkKIERyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEqIGRyYWdEYXRhKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGluY29tcGxldGUKLSAgICBpZiAoZHJhZ0RhdGEt
PmNvbnRhaW5zVVJMKCkpCisgICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTCh0cnVlKSkKICAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwogCiAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Ob25lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bSBiL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KaW5kZXggYTA5YzQxODE2
MjFmZDU1ZjRkYTQ3ZDU2ZGFmYmRhNWY4ODE1ZDkxYS4uOTA5MjBlMzMyNjgxNDg4NTg1MWE2MGZm
YzBkZGQxMmYxZjU0ZmFmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbQorKysgYi9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBA
IC01MCw3ICs1MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oKQogRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSogZHJhZ0Rh
dGEpCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhKTsKLSAgICBpZiAoW05TQXBwIG1vZGFsV2luZG93
XSB8fCAhZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkpCisgICAgaWYgKFtOU0FwcCBtb2RhbFdpbmRv
d10gfHwgIWRyYWdEYXRhLT5jb250YWluc1VSTCh0cnVlKSkKICAgICAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb25Ob25lOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAhW1ttX3Bh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmdldE91dGVyVmlldygpIHdpbmRvd10gYXR0YWNoZWRT
aGVldF0gCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAg
Yi9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggMzM4MTViNWQ1NDE5
MGNlY2E4OTE4ZjlkODllNThmYWQ3Mzg3NWY1ZC4uZWJlYTM2MzZiN2IxZTMzZjEyNjU4ZDA1YWQ2
ZGYyZThjMzYwMGYyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVy
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcApAQCAtNTEs
NyArNTEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKCkKIERyYWdPcGVy
YXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEqIGRyYWdEYXRhKQog
ewogICAgIC8vRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQotICAgIGlmIChkcmFnRGF0
YS0+Y29udGFpbnNVUkwoKSkKKyAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKHRydWUpKQog
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgICAgIAogICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRy
b2xsZXJXaW4uY3BwIGIvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5k
ZXggZjA0MDRmZjM0OWJiZTUyNzAwNGY4YWYxNDVmYzc0YmU0ZDY0YjM4MS4uOTJkMjU2NGI5OWQ0
MDQ3ZTNkY2FiNzZlNGEwMTc5NmNiMGMzZmNiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJv
bGxlcldpbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgLy9JZiB0aGlzIGNhbiBi
ZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9yRHJhZyBjYW4gYmUg
cHVsbGVkIGludG8gCiAgICAgLy9XZWJDb3JlIGl0c2VsZgogICAgIEFTU0VSVChkcmFnRGF0YSk7
Ci0gICAgcmV0dXJuIGRyYWdEYXRhLT5jb250YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJh
ZyA/IERyYWdPcGVyYXRpb25Db3B5IDogRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgcmV0dXJuIGRy
YWdEYXRhLT5jb250YWluc1VSTCh0cnVlKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3Bl
cmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOwogfQogCiBib29sIERyYWdDb250cm9sbGVy
Ojppc0NvcHlLZXlEb3duKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS93eC9EcmFnQ29udHJv
bGxlcld4LmNwcCBiL1dlYkNvcmUvcGFnZS93eC9EcmFnQ29udHJvbGxlcld4LmNwcAppbmRleCBj
Mjg4YTAxMjNkOTU3MWViNDNjZDJmZDVhMDc2OTljYmE0Y2Q5YTg4Li41OTJiOWJmZTdjODBkZmY2
YTA1M2FlODFlNzMxYzFjNWMzOGVhMjUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uvd3gvRHJh
Z0NvbnRyb2xsZXJXeC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL3d4L0RyYWdDb250cm9sbGVyV3gu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24o
KQogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSog
ZHJhZ0RhdGEpCiB7CiAgICAgLy9GSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCi0gICAg
aWYgKGRyYWdEYXRhLT5jb250YWluc1VSTCgpKQorICAgIGlmIChkcmFnRGF0YS0+Y29udGFpbnNV
UkwodHJ1ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKICAgICAgICAgCiAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDllZTNjYTIw
NTkzYzJjMjAwZjc2OTg1Y2Q4NTU4ODRmNTM1MTVkNTEuLmU4NDAzZGU2Y2QzNDQ0Yzc3ZjVmOGFj
NzYzOTFiNDM3N2RkYWFlY2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTkyLDEwICs5MiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQogICAgICAgICBEcmFnT3BlcmF0aW9u
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrOyB9CiAgICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVh
dGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25zdDsKLSAgICAgICAgYm9vbCBj
b250YWluc1VSTCgpIGNvbnN0OworICAgICAgICBib29sIGNvbnRhaW5zVVJMKGJvb2wgY29udmVy
dEZpbGVuYW1lcyA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgYm9vbCBjb250YWluc1BsYWluVGV4
dCgpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25z
dDsKLSAgICAgICAgU3RyaW5nIGFzVVJMKFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsKKyAgICAg
ICAgU3RyaW5nIGFzVVJMKGJvb2wgY29udmVydEZpbGVuYW1lcyA9IGZhbHNlLCBTdHJpbmcqIHRp
dGxlID0gMCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBhc1BsYWluVGV4dCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgICAgIENv
bG9yIGFzQ29sb3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9EcmFnRGF0YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRh
QW5kcm9pZC5jcHAKaW5kZXggMzliMjk2MzQyZjYxNmNjMGVmMmNkNTI2Zjc3YjIwYmEwMDVlYmJj
Ny4uY2Q1MTQ5MzRiYTg1NDE5MjlkYWExM2QzNjQ1OTc5ZDYyYTYwODEwMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTY4LDEyICs2OCwxMiBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0
Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChT
dHJpbmcqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChib29sIGNvbnZlcnRGaWxlbmFt
ZXMsIFN0cmluZyopIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5kZXggMWNlMjBkYzIy
ZjNiMjkxOGYxNDRhZjY2NjBlZjZmZGM1NGEzNTY5Zi4uMjQ0MmY0NGRlNTJhZGI4MjY3YWM5ODVi
Yjg3ZjYyZjU2NWRlMGE4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9E
cmFnRGF0YUNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdE
YXRhQ2hyb21pdW0uY3BwCkBAIC01NiwxNyArNTYsMTcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+
IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkg
Y28KICAgICByZXR1cm4gY2xpcGJvYXJkLnJlbGVhc2UoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoYm9vbCBjb252
ZXJ0RmlsZW5hbWVzKSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoKS5pc0VtcHR5KCk7Cisg
ICAgcmV0dXJuICFhc1VSTChjb252ZXJ0RmlsZW5hbWVzKS5pc0VtcHR5KCk7CiB9CiAKLVN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNVUkwoYm9vbCBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAg
IFN0cmluZyB1cmw7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVmFsaWRVUkwoKSkK
ICAgICAgICAgdXJsID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5nZXRVUkwoKS5zdHJpbmcoKTsKLSAg
ICBlbHNlIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7Cisg
ICAgZWxzZSBpZiAoY29udmVydEZpbGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxl
bmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IG1fcGxhdGZvcm1E
cmFnRGF0YS0+ZmlsZW5hbWVzWzBdOwogICAgICAgICBmaWxlTmFtZSA9IENocm9taXVtQnJpZGdl
OjpnZXRBYnNvbHV0ZVBhdGgoZmlsZU5hbWUpOwogICAgICAgICB1cmwgPSBDaHJvbWl1bUJyaWRn
ZTo6ZmlsZVBhdGhUb1VSTChmaWxlTmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFn
RGF0YUVmbC5jcHAKaW5kZXggM2Y5ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIyYTk5YmZmMGNlNThk
YS4uNmEzMGNkYjM1YTNmOGZhNWNhYjJkNTI3ZmRlY2FmYjg3ZTY4Mjg3ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoYm9vbCBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3Ry
aW5nIERyYWdEYXRhOjphc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUxNThkYTE1ZWI4MzVhNmEu
LjI4YWM2OTk0Mzk2NTJlMzc5ZTY0ZGZhNjYzZjY0NmQwNDY5ODMxZjAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBib29sIERyYWdEYXRhOjpj
b250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKGJvb2wgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoYm9vbCBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Ry
YWdEYXRhSGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3
MWYxNGQuLjk2MTI3ZDk4ZjQxOTY4MGVmYjkwZjhlNDdkODRhMzM5OGI3ODViN2IgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgp
OwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNV
UkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoYm9vbCBjb252
ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpp
bmRleCAwMmE2YWY3MzY4ZjgwZWY5MWExY2M2M2E3OTY5ODhlZDcxOGI2NzM5Li43NmE0YjMxNTUz
ZDk3OGM1OTExNDllMzcyM2U5MGEwODgyOTQzZDZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbQpAQCAtMTEzLDEzICsxMTMsMTUgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21w
YXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFt0eXBlcyBjb3VudF0gIT0gMDsKIH0K
ICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zVVJMKGJvb2wgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAgICByZXR1cm4g
IWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZpbGVuYW1lcyku
aXNFbXB0eSgpOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxl
KSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMsIFN0
cmluZyogdGl0bGUpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVz
LgorICAgICh2b2lkKWNvbnZlcnRGaWxlbmFtZXM7CiAgICAgcmV0dXJuIG1fcGFzdGVib2FyZEhl
bHBlci0+dXJsRnJvbVBhc3RlYm9hcmQoW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3Rl
Ym9hcmRdLCB0aXRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJh
Z0RhdGFRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDA5
YTc5N2ZhZmRlNDIzZDYwMTk0ZGJkZmM4NmI3YWFhZTY2OGEzYzEuLjc3YTkxYjIxYTE0ODUzYmU2
NDlhODJlMzhlM2JjZTFiZDljZjUyZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQv
RHJhZ0RhdGFRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcApA
QCAtMTEyLDE1ICsxMTIsMTcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29u
dGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgp
IHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzSHRtbCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+
aGFzVGV4dCgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29s
IERyYWdEYXRhOjpjb250YWluc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7Cisg
ICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgogICAgIGlmICghbV9wbGF0Zm9ybURy
YWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EcmFn
RGF0YS0+aGFzVXJscygpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyopIGNv
bnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKGJvb2wgY29udmVydEZpbGVuYW1lcywgU3RyaW5n
KikgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRGaWxlbmFtZXMuCiAgICAgaWYg
KCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBRTGlz
dDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxzKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCA2Zjk0NzZhYWFkNzcz
NmUyNzkyOWM1OGM2YzFhMTRiNmQ4MmEyNjVkLi5hMTQ0YWY5OWE0MWRlMWUzN2I1NzhkYWQwNjFh
MDdiNGM1M2VjZGJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgYm9vbCB1cmxGcm9tUGF0aChD
RlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3Ry
aW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcywgU3RyaW5n
KiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJvb2wgY29u
dmVydEZpbGVuYW1lcywgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKIHsKICAgICBTVEdN
RURJVU0gc3RvcmU7CiAgICAgU3RyaW5nIHVybDsKQEAgLTMyMiwzMiArMzIyLDM0IEBAIFN0cmlu
ZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyog
dGl0bGUpCiAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKICAgICAg
ICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSAg
ICB9IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lV0Zvcm1h
dCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL2ZpbGUgdXNpbmcgdW5pY29kZQotICAgICAgICB3
Y2hhcl90KiBkYXRhID0gKHdjaGFyX3QqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7Ci0gICAg
ICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKGRhdGEpIHx8IFBhdGhJ
c1VOQyhkYXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFz
Q0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7Ci0gICAgICAg
ICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsK
LSAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGNvbnZlcnRG
aWxlbmFtZXMpIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZp
bGVuYW1lV0Zvcm1hdCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZSB1c2luZyB1
bmljb2RlCisgICAgICAgICAgICB3Y2hhcl90KiBkYXRhID0gKHdjaGFyX3QqKUdsb2JhbExvY2so
c3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRo
RmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0YSkpKSB7CisgICAgICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlDaGFyKilk
YXRhLCB3Y3NsZW4oZGF0YSkpKTsKKyAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0
aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxl
KQorICAgICAgICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOworICAgICAgICAgICAgICAg
ICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAg
ICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7Ci0gICAgfSBlbHNlIGlmIChTVUNDRUVERUQo
ZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAg
ICAvL2ZpbGVuYW1lIHVzaW5nIGFzY2lpCi0gICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xv
YmFsTG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAgCi0gICAgICAgIGlmIChkYXRhICYmIGRhdGFb
MF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRhKSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgewotICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBD
RlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0
cmluZ0VuY29kaW5nQVNDSUkpKTsKLSAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRoQXND
RlN0cmluZy5nZXQoKSwgdXJsKSkgewotICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKLSAgICAg
ICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOwotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0
cnVlOworICAgICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAg
ICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURF
RChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAg
ICAgICAgICAvLyBmaWxlbmFtZSB1c2luZyBhc2NpaQorICAgICAgICAgICAgY2hhciogZGF0YSA9
IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRhdGEg
JiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkp
KSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmlu
ZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGRhdGEsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsKKyAgICAgICAgICAgICAgICBpZiAodXJs
RnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRpdGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOworICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAg
ICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIH0KLSAgICAgICAgR2xv
YmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAgICAgICBSZWxlYXNlU3RnTWVkaXVt
KCZzdG9yZSk7CiAgICAgfQogICAgIHJldHVybiB1cmw7CiB9CkBAIC0zNjEsMTQgKzM2MywxNCBA
QCBTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNj
ZXNzKQogICAgICAgICAvL3VuaWNvZGUgdGV4dAogICAgICAgICBVQ2hhciogZGF0YSA9IChVQ2hh
ciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRh
KTsKLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAorICAgICAgICBH
bG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0
b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQo
ZGF0YU9iamVjdC0+R2V0RGF0YShwbGFpblRleHRGb3JtYXQoKSwgJnN0b3JlKSkpIHsKICAgICAg
ICAgLy9hc2NpaSB0ZXh0CiAgICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhz
dG9yZS5oR2xvYmFsKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRhKTsKLSAgICAgICAgR2xv
YmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAorICAgICAgICBHbG9iYWxVbmxvY2soc3Rv
cmUuaEdsb2JhbCk7CiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAg
c3VjY2VzcyA9IHRydWU7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggYTkyYTRiZjBlMGY2ZWU4YmRkZmExZTEzYzlmMTFj
MTM1OThjOGFhZC4uYjM3ZWYzN2ZiYzAwODRiY2I5ZjgzMjg3YmQxZmMzNzdhMDg3YmFlOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAgLTYyLDkg
KzYyLDkgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21GaWxlbmFt
ZXMoRG9jdW1lbnQqLCBjb25zdCBJRGF0YU9iamVjdCoKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCosIElEYXRhT2JqZWN0Kik7CiBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqLCBjb25z
dCBTdHJpbmcmIGNmX2h0bWwpOwogCi1TdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiwgYm9vbCYg
c3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOworU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCos
IGJvb2wgY29udmVydEZpbGVuYW1lcywgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDAp
OwogU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBDbGlwYm9hcmRVdGlsaXRpZXNXaW5f
aApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyNlbmRpZiAvLyBDbGlwYm9hcmRVdGlsaXRp
ZXNXaW5faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDMwNDg3YjhmMDFh
Mzk0ZjhmMThjMmQ5ZDM4MzY3ODljYjA2ODVjNjAuLjBlYmViMGFhMWU4ODU5NjUxNjc2YWQ5MWQy
ZTkwNjYwMWExMmM2YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRh
V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTQ0
LDE4ICs0NCwxOSBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBi
b2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjbwogICAgIHJldHVybiBDbGlwYm9h
cmRXaW46OmNyZWF0ZSh0cnVlLCBtX3BsYXRmb3JtRHJhZ0RhdGEsIHBvbGljeSk7CiB9CiAKLWJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKGJvb2wgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1cm4gU1VDQ0VFREVE
KG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIAogICAgICAg
ICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsRm9ybWF0
KCkpKQotICAgICAgICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERh
dGEoZmlsZW5hbWVXRm9ybWF0KCkpKSAKLSAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1E
cmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1lRm9ybWF0KCkpKTsKKyAgICAgICAgfHwgKGNv
bnZlcnRGaWxlbmFtZXMKKyAgICAgICAgICAgICYmIChTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdE
YXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCkpKQorICAgICAgICAgICAgICAgIHx8
IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YShmaWxlbmFtZUZvcm1h
dCgpKSkpKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25z
dAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyog
dGl0bGUpIGNvbnN0CiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIHJldHVybiBnZXRVUkwobV9w
bGF0Zm9ybURyYWdEYXRhLCBzdWNjZXNzLCB0aXRsZSk7CisgICAgcmV0dXJuIGdldFVSTChtX3Bs
YXRmb3JtRHJhZ0RhdGEsIGNvbnZlcnRGaWxlbmFtZXMsIHN1Y2Nlc3MsIHRpdGxlKTsKIH0KIAog
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNGaWxlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9EcmFnRGF0YVdpbmNlLmNwcAppbmRleCA4ODFkN2Q0ZWUwNGQyYzg2OGM2Y2ViZDJmNGIwOWUx
NTA1MzQ4M2Y2Li5mNWE2ZmUxZmZjODNjOGI5MGRhM2QzMDQwNzNiNGVlZjBiMDFlNDNkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAKQEAgLTMyLDEyICszMiwxMiBA
QCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9h
cmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjbwogICAgIHJldHVybiAwOwogfQogCi1ib29sIERyYWdE
YXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChib29s
IGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6
OmFzVVJMKGJvb2wgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3d4L0Ry
YWdEYXRhV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAppbmRleCA5
N2VhMzhjNTFiOWFiNzgxM2E3ZmVjZTk5NzkyMTZhNmZiN2Q2NDQ5Li4wNzU0OWQ5YzVlOGI5ODFj
NTI0Zjk3NTBiODNmMGY5ODM3NzVkMDBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3d4
L0RyYWdEYXRhV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAK
QEAgLTc2LDEyICs3NiwxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpj
b250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChib29sIGNvbnZl
cnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5n
IERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjph
c1VSTChib29sIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57959</attachid>
            <date>2010-06-04 21:43:57 -0700</date>
            <delta_ts>2010-06-05 13:26:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100604214356.patch</filename>
            <type>text/plain</type>
            <size>25278</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTg0M2ZhMTFkZWEzZmIwMzM3NzE3NTdiYjIwMWQ4ZTYwOTQ5Njc4Li41MDIwNWY2
MGIyZDM5YmJlMGUwZWQwMTBjNmRlYmFmMjhkNDEwNzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA0ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRv
LWVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYyY2VlMmNlZDRmNzc0MDhmMWU1
YTcyZGMzNDc0N2M2NTk1ZmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitUZXN0cyB0aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEg
ZG9lcyBub3QgaW5zZXJ0IGEgZmlsZW5hbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmViZTc1MDc1ZDNjOTlkMWUyYzdiMmQ4MjNkNzg0
MDkyN2VjMjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3Jp
cHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIxMjJlMWI3NjIzZmZiZWQxMDcyZDUwM2FiYzFhZDJmNDdjYzI4MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0
aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0
IGEgZmlsZW5hbWUuJyk7CisKK3ZhciBlZGl0YWJsZUFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2VkaXRhYmxlQXJlYS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZWRpdGFi
bGVBcmVhLnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworZWRpdGFibGVBcmVhLnN0eWxlLmhl
aWdodCA9ICcxMDBweCc7CitlZGl0YWJsZUFyZWEuc3R5bGUud2lkdGggPSAnMTAwcHgnOworLy8g
SW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQg
bG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hlcmUgaXQgY2Fu
J3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVkaXRhYmxlQXJl
YSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09u
dG9FZGl0YWJsZUFyZWEoZmlsZXMpIHsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMoZmlsZXMpOworICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVkaXRhYmxlQXJlYSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCdzdWNjZXNzZnVsbHlQYXJzZWQnKTsKKyAgICAgICAgZGVidWcoJzxiciAvPjxzcGFu
IGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworCisgICAgICAgIC8vIERvbid0
IHJlbW92ZSB0aGUgZWRpdGFibGUgbm9kZSwgc2luY2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhl
cmUgbm8gc3RyYXkgZmlsZSBVUkxzIHdlcmUKKyAgICAgICAgLy8gaW5zZXJ0ZWQgZHVyaW5nIHRo
ZSBkcm9wLgorCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwor
ICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIH07CisgICAgZHJhZ0Zp
bGVzT250b0VkaXRhYmxlQXJlYShbJ0RSVEZha2VGaWxlJ10pOworICAgIHRlc3RGYWlsZWQoJ1Ro
ZSB0ZXN0IHNob3VsZCBoYXZlIHJlc3VsdGVkIGluIG5hdmlnYXRpb24nKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBydW5UZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBpcyBub3Qg
aW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUnKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNTM2OGNjMWE0ODk5N2FhYjY0NjIyZjRjM2ZmMzAxYWI2
NjYyZDFjYy4uMGI2ZTI1NzVlOTBhMTQ3YzAyM2ZlMjIxZWRhNzA4NWFiODA0Y2JjZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTY2NCw2ICs2NjQsNyBAQCBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LWRyb3AtdXJsLXRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQt
ZmllbGQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtaW4tYWJvdXQtYmxhbmst
ZnJhbWUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by1hbmNob3ItdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CmluZGV4IDIxM2I2OGUwYjVkNGQwNzEwNDg2ZmFlMGE0YTVkZWE2YmI0MmZmOTUuLjVmZTQwZmI2
MTA1MzViNzlmMWNkN2FmNWMwYzUzN2I0NWU4NTg5NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0yOTksMyArMjk5LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3IuaHRtbAogZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nlc3MuaHRtbAorCisjIEZpbGVuYW1lcyBh
cmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mu
d2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA3ZmM4NmQz
MWIyNTMyM2YxODZmZDc2YjIyNWY0YzYwM2MwNjFmYThhLi42OGMwYjA1OWIxZDgxNzFiMzMwNzU2
MDYwZjU4ODMyNmYwNWNiNzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMyMCw2ICsz
MjAsNyBAQCBodHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2UtZGVsZWdhdGUtY2FsbGJh
Y2suaHRtbAogCiAjIC0tLS0tLS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwK
K2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0
ZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU3ODEzMzRkZTFiMDYyMGFmMDI1
YzAyNzFiYTRlODZjMGNiZTUzYzUuLmVhMjUzNzU0NGExMjMzY2UzN2YzMTU4ZjI4MGNkNDdmZDll
OTQ0OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTIsNiArMTkyLDcgQEAgaHR0
cC90ZXN0cy93ZWJhcmNoaXZlCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzUyMzAzOTY+IGV2ZW50U2Vu
ZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBpcyB1bmltcGxlbWVudGVkCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQv
ZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0
LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLXRvLW5hdmlnYXRlLmh0bWwKIGZh
c3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyNjI0MDAzOTgxYmZlOWIy
OTk4Njg4ZDI0NDhkZDI4ZGM3MWUzZTguLmQ1OWEzZWE2ZDQxZDc1YjA4ZDk1YzFkNGIzYWM3YTkw
OGFjNTA0ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG9uJ3QgY29udmVydCBmaWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKwor
ICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmls
ZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisgICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVt
IG91dCBvZiBlZGl0IGRyYWdzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFzdGVib2FyZC9m
aWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6Oik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0Rh
dGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjph
c1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0
YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAyMDEwLTA2LTA0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBlYzY5ZWEwNzQzMTk4MDEwNzNlOTU2OGQ1Yzg4
MmFmMTY0NzVhMGJmLi4wZDE3MGIzMjY0NGMwMDgzOWY1MjY3YzMxNmVkOGU3NWRkN2RmMTVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhKiBkcmFnRAogICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRyYWdEYXRhLT5hc0ZyYWdtZW50KGRvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKIAotICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkpIHsKKyAg
ICAgICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0Rmls
ZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLT5hc1VSTCgmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9
IGRyYWdEYXRhLT5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUp
OwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJsKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaAppbmRleCAwMDdmN2Q3MTc1NTdlMjM0ZmViNDVkN2FiODYwM2IwZWZiMmFiYThlLi5m
YWQxOTdkMjU1ODU3MGM4YTAxOTAxZDMwYjc3ZDc4MmRkZTFjNDUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CkBAIC03OCw2ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBE
cmFnRGF0YSB7CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgLy9GSVhNRTogSW4gdGhlIGZ1dHVyZSB0aGUgV2ViS2l0IGZ1
bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgaGVscGVyIGNsYXNzIHNob3VsZCBiZSBtb3ZlZCBpbnRv
IFdlYkNvcmUsIAogICAgICAgICAvL2FmdGVyIHdoaWNoIHRoaXMgY29uc3RydWN0b3Igc2hvdWxk
IGJlIHJlbW92ZWQKQEAgLTkyLDEwICs5NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YTsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAg
ICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5KSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWluc1VSTCgpIGNvbnN0OworICAg
ICAgICBib29sIGNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcyA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zUGxh
aW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgYXNVUkwoU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgYXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzID0gQ29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0OwogICAgICAg
ICBTdHJpbmcgYXNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgdm9pZCBhc0ZpbGVuYW1lcyhW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCmluZGV4IDM5YjI5
NjM0MmY2MTZjYzBlZjJjZDUyNmY3N2IyMGJhMDA1ZWJiYzcuLjU5N2IwNDExODA3NjlmMzhhNjc3
ZjBhNDY2ZDMzMmQ5MWQ3MTI4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9EcmFnRGF0YUFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFn
RGF0YUFuZHJvaWQuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAot
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5n
KikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1
bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCmlu
ZGV4IDFjZTIwZGMyMmYzYjI5MThmMTQ0YWY2NjYwZWY2ZmRjNTRhMzU2OWYuLmQ5NTdiN2QxYWMy
YTY1YWFlMGUzZTk5ODcxM2QwM2EyMzliNjc4MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcApAQCAtNTYsMTcgKzU2LDE3IEBAIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7CiB9CiAKLWJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAg
ICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZp
bGVuYW1lcykuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyog
dGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICBTdHJpbmcg
dXJsOwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1ZhbGlkVVJMKCkpCiAgICAgICAg
IHVybCA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+Z2V0VVJMKCkuc3RyaW5nKCk7Ci0gICAgZWxzZSBp
ZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzLmlzRW1wdHkoKSkgeworICAgIGVsc2Ug
aWYgKGNvbnZlcnRGaWxlbmFtZXMgPT0gQ29udmVydEZpbGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURy
YWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9
IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzWzBdOwogICAgICAgICBmaWxlTmFtZSA9IENo
cm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoZmlsZU5hbWUpOwogICAgICAgICB1cmwgPSBD
aHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChmaWxlTmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggM2Y5ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIy
YTk5YmZmMGNlNThkYS4uM2Y1M2ZkMWQzZThmZmM3MTlhYjEwMDhlYThmNzBmMTQ0OTIzNmU5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjph
c1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRD
b252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3Bw
CmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUxNThkYTE1ZWI4MzVhNmEuLjdiMTY5OTUw
YzIxNGU4MjZiOTdmMWI4MGFhNDIxNzA0ZDExODNjMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNo
b3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29u
c3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0
RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3
NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3MWYxNGQuLmFmMmZmZGNkOWU4ODE4NDI0NGE0ZjA5
NDFlMDk0MzYxNDQ1ODJkNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJh
Z0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1
LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNV
UkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWlu
c1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0
aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1l
cyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCAwMmE2YWY3MzY4ZjgwZWY5MWExY2M2M2E3OTY5ODhlZDcxOGI2NzM5Li44ODQ5
ODhlYTE4YjBiOWUyYTY5NmQ5OWNkMzRjZmQwYzNjZDJlOWI2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQpAQCAtMTEzLDEzICsxMTMsMTUgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFt0eXBlcyBjb3VudF0gIT0g
MDsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1l
cykgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAh
YXNVUkwoY29udmVydEZpbGVuYW1lcykuaXNFbXB0eSgpOwogfQogICAgIAotU3RyaW5nIERyYWdE
YXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChT
aG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgorICAgICh2b2lkKWNv
bnZlcnRGaWxlbmFtZXM7CiAgICAgcmV0dXJuIG1fcGFzdGVib2FyZEhlbHBlci0+dXJsRnJvbVBh
c3RlYm9hcmQoW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCB0aXRsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDA5YTc5N2ZhZmRlNDIzZDYw
MTk0ZGJkZmM4NmI3YWFhZTY2OGEzYzEuLjIyNjliMjgzYjFhZTE1OWEwZjJlZmQ3YTM2MjQwNTQ2
OWMwYWZkZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcApAQCAtMTEyLDE1ICsxMTIs
MTcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzSHRtbCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQog
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7
CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgogICAgIGlmICghbV9wbGF0Zm9y
bURyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzVXJscygpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyop
IGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29u
dmVydEZpbGVuYW1lcywgU3RyaW5nKikgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZl
cnRGaWxlbmFtZXMuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51
cmxzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBkMzQwYzg5ZDJkZjdjMDJkOGVkNjI4YjgxM2Y4ZTczMGE5MzE4NjdhLi4wZTUwYTU1
MTY5ZjA3NGU3N2QyMWYyNDYwNGNiYTYwMjEzYWU0ODMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0
aWMgYm9vbCB1cmxGcm9tUGF0aChDRlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwg
Ym9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIERyYWdEYXRhOjpTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxl
bmFtZXMsIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0
b3JlOwogICAgIFN0cmluZyB1cmw7CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQog
ICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVh
c2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNl
IGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0
b3JlKSkpIHsKLSAgICAgICAgLy9maWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCog
ZGF0YSA9ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAo
ZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0
YSkpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYg
KHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRpdGxlKQotICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChjb252ZXJ0RmlsZW5hbWVz
ID09IERyYWdEYXRhOjpDb252ZXJ0RmlsZW5hbWVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQo
ZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAg
ICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQorICAgICAgICAgICAgd2NoYXJfdCogZGF0YSA9
ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRh
dGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEp
KSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJp
bmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICp0aXRsZSA9
IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsgICAgICAKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9maWxlbmFtZSB1c2luZyBhc2NpaQotICAgICAgICBj
aGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgIAotICAg
ICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0
aElzVU5DQShkYXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0
aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Ci0gICAgICAgICAgICBp
ZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKLSAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1h
dCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAg
ICAgICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsK
KyAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRh
KSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICp0aXRsZSA9IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwog
ICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKLSAg
ICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgIH0KICAgICByZXR1cm4gdXJsOwog
fQpAQCAtMzUwLDE0ICszNTIsMTQgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICAgICAgLy91bmljb2RlIHRleHQKICAgICAg
ICAgVUNoYXIqIGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAg
ICAgIHRleHQgPSBTdHJpbmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xv
YmFsKTsgICAgICAKKyAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0
KCksICZzdG9yZSkpKSB7CiAgICAgICAgIC8vYXNjaWkgdGV4dAogICAgICAgICBjaGFyKiBkYXRh
ID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHRleHQgPSBTdHJp
bmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKKyAg
ICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVk
aXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IGVjMTUyMzFj
M2JhZDhkMTUzNTJhYzM0MGRlZWEzYzg3MTQ0NmYzMDguLjcwNzA1OGEwM2IxYWIwNjdlMzVhNDVh
MjlmZmY2NDlmOTlmNzdkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCkBAIC02MSw5ICs2MSw5IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqCiBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJ
RGF0YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21D
Rl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZl9odG1sKTsKIAotU3RyaW5nIGdldFVS
TChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmlu
ZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJp
bmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggMzA0ODdiOGYwMWEzOTRmOGYx
OGMyZDlkMzgzNjc4OWNiMDY4NWM2MC4uNDY4NDFlYTdmMjBiOTJjZWQ4M2ZlMjMyYzU3ZTI3NTM4
Y2ExNWNkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDQsMTggKzQ0
LDE5IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6
Y3JlYXRlKHRydWUsIG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5KTsKIH0KIAotYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hv
dWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVy
biBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsV0Zvcm1hdCgp
KSkgCiAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0
YSh1cmxGb3JtYXQoKSkpCi0gICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEt
PlF1ZXJ5R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSkpIAotICAgICAgICB8fCBTVUNDRUVERUQo
bV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpOworICAg
ICAgICB8fCAoY29udmVydEZpbGVuYW1lcyA9PSBDb252ZXJ0RmlsZW5hbWVzCisgICAgICAgICAg
ICAmJiAoU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1l
V0Zvcm1hdCgpKSkKKyAgICAgICAgICAgICAgICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdE
YXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpKSk7CiB9CiAKLVN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICByZXR1cm4gZ2V0VVJMKG1fcGxhdGZvcm1E
cmFnRGF0YSwgc3VjY2VzcywgdGl0bGUpOworICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURy
YWdEYXRhLCBjb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzLCB0aXRsZSk7CiB9CiAKIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0Rh
dGFXaW5jZS5jcHAKaW5kZXggODgxZDdkNGVlMDRkMmM4NjhjNmNlYmQyZjRiMDllMTUwNTM0ODNm
Ni4uNWE4NTFlZDY5YTU5YmI4YTY1NmU0MTEzNDlkYTg5YzBkMmNjNDhhYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVy
dEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5n
IERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMs
IFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd3gvRHJhZ0RhdGFXeC5jcHAKaW5kZXggOTdlYTM4YzUxYjlhYjc4MTNhN2ZlY2U5OTc5MjE2
YTZmYjdkNjQ0OS4uYmYxMWMwM2RiYzY4NGYyY2ZjMjI0OTA3MWU5ZTcyYjM0MTY4YTUxNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCkBAIC03NiwxMiArNzYsMTIgQEAgYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVz
KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57969</attachid>
            <date>2010-06-05 13:26:24 -0700</date>
            <delta_ts>2010-06-05 13:40:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100605132623.patch</filename>
            <type>text/plain</type>
            <size>25278</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTg0M2ZhMTFkZWEzZmIwMzM3NzE3NTdiYjIwMWQ4ZTYwOTQ5Njc4Li41MDIwNWY2
MGIyZDM5YmJlMGUwZWQwMTBjNmRlYmFmMjhkNDEwNzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA0ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRv
LWVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYyY2VlMmNlZDRmNzc0MDhmMWU1
YTcyZGMzNDc0N2M2NTk1ZmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitUZXN0cyB0aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEg
ZG9lcyBub3QgaW5zZXJ0IGEgZmlsZW5hbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmViZTc1MDc1ZDNjOTlkMWUyYzdiMmQ4MjNkNzg0
MDkyN2VjMjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3Jp
cHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIxMjJlMWI3NjIzZmZiZWQxMDcyZDUwM2FiYzFhZDJmNDdjYzI4MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0
aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0
IGEgZmlsZW5hbWUuJyk7CisKK3ZhciBlZGl0YWJsZUFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2VkaXRhYmxlQXJlYS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZWRpdGFi
bGVBcmVhLnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworZWRpdGFibGVBcmVhLnN0eWxlLmhl
aWdodCA9ICcxMDBweCc7CitlZGl0YWJsZUFyZWEuc3R5bGUud2lkdGggPSAnMTAwcHgnOworLy8g
SW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQg
bG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hlcmUgaXQgY2Fu
J3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVkaXRhYmxlQXJl
YSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09u
dG9FZGl0YWJsZUFyZWEoZmlsZXMpIHsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMoZmlsZXMpOworICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVkaXRhYmxlQXJlYSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCdzdWNjZXNzZnVsbHlQYXJzZWQnKTsKKyAgICAgICAgZGVidWcoJzxiciAvPjxzcGFu
IGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworCisgICAgICAgIC8vIERvbid0
IHJlbW92ZSB0aGUgZWRpdGFibGUgbm9kZSwgc2luY2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhl
cmUgbm8gc3RyYXkgZmlsZSBVUkxzIHdlcmUKKyAgICAgICAgLy8gaW5zZXJ0ZWQgZHVyaW5nIHRo
ZSBkcm9wLgorCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwor
ICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIH07CisgICAgZHJhZ0Zp
bGVzT250b0VkaXRhYmxlQXJlYShbJ0RSVEZha2VGaWxlJ10pOworICAgIHRlc3RGYWlsZWQoJ1Ro
ZSB0ZXN0IHNob3VsZCBoYXZlIHJlc3VsdGVkIGluIG5hdmlnYXRpb24nKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBydW5UZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBpcyBub3Qg
aW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUnKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNTM2OGNjMWE0ODk5N2FhYjY0NjIyZjRjM2ZmMzAxYWI2
NjYyZDFjYy4uMGI2ZTI1NzVlOTBhMTQ3YzAyM2ZlMjIxZWRhNzA4NWFiODA0Y2JjZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTY2NCw2ICs2NjQsNyBAQCBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LWRyb3AtdXJsLXRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQt
ZmllbGQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtaW4tYWJvdXQtYmxhbmst
ZnJhbWUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by1hbmNob3ItdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CmluZGV4IDIxM2I2OGUwYjVkNGQwNzEwNDg2ZmFlMGE0YTVkZWE2YmI0MmZmOTUuLjVmZTQwZmI2
MTA1MzViNzlmMWNkN2FmNWMwYzUzN2I0NWU4NTg5NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0yOTksMyArMjk5LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3IuaHRtbAogZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nlc3MuaHRtbAorCisjIEZpbGVuYW1lcyBh
cmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mu
d2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA3ZmM4NmQz
MWIyNTMyM2YxODZmZDc2YjIyNWY0YzYwM2MwNjFmYThhLi42OGMwYjA1OWIxZDgxNzFiMzMwNzU2
MDYwZjU4ODMyNmYwNWNiNzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMyMCw2ICsz
MjAsNyBAQCBodHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2UtZGVsZWdhdGUtY2FsbGJh
Y2suaHRtbAogCiAjIC0tLS0tLS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwK
K2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0
ZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU3ODEzMzRkZTFiMDYyMGFmMDI1
YzAyNzFiYTRlODZjMGNiZTUzYzUuLmVhMjUzNzU0NGExMjMzY2UzN2YzMTU4ZjI4MGNkNDdmZDll
OTQ0OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTIsNiArMTkyLDcgQEAgaHR0
cC90ZXN0cy93ZWJhcmNoaXZlCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzUyMzAzOTY+IGV2ZW50U2Vu
ZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBpcyB1bmltcGxlbWVudGVkCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQv
ZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0
LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLXRvLW5hdmlnYXRlLmh0bWwKIGZh
c3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyNjI0MDAzOTgxYmZlOWIy
OTk4Njg4ZDI0NDhkZDI4ZGM3MWUzZTguLmQ1OWEzZWE2ZDQxZDc1YjA4ZDk1YzFkNGIzYWM3YTkw
OGFjNTA0ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG9uJ3QgY29udmVydCBmaWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKwor
ICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmls
ZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisgICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVt
IG91dCBvZiBlZGl0IGRyYWdzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFzdGVib2FyZC9m
aWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6Oik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0Rh
dGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjph
c1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0
YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAyMDEwLTA2LTA0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBlYzY5ZWEwNzQzMTk4MDEwNzNlOTU2OGQ1Yzg4
MmFmMTY0NzVhMGJmLi4wZDE3MGIzMjY0NGMwMDgzOWY1MjY3YzMxNmVkOGU3NWRkN2RmMTVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhKiBkcmFnRAogICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRyYWdEYXRhLT5hc0ZyYWdtZW50KGRvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKIAotICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkpIHsKKyAg
ICAgICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0Rmls
ZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLT5hc1VSTCgmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9
IGRyYWdEYXRhLT5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUp
OwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJsKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaAppbmRleCAwMDdmN2Q3MTc1NTdlMjM0ZmViNDVkN2FiODYwM2IwZWZiMmFiYThlLi5m
YWQxOTdkMjU1ODU3MGM4YTAxOTAxZDMwYjc3ZDc4MmRkZTFjNDUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CkBAIC03OCw2ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBE
cmFnRGF0YSB7CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgLy9GSVhNRTogSW4gdGhlIGZ1dHVyZSB0aGUgV2ViS2l0IGZ1
bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgaGVscGVyIGNsYXNzIHNob3VsZCBiZSBtb3ZlZCBpbnRv
IFdlYkNvcmUsIAogICAgICAgICAvL2FmdGVyIHdoaWNoIHRoaXMgY29uc3RydWN0b3Igc2hvdWxk
IGJlIHJlbW92ZWQKQEAgLTkyLDEwICs5NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YTsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAg
ICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5KSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWluc1VSTCgpIGNvbnN0OworICAg
ICAgICBib29sIGNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcyA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zUGxh
aW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgYXNVUkwoU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgYXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzID0gQ29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0OwogICAgICAg
ICBTdHJpbmcgYXNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgdm9pZCBhc0ZpbGVuYW1lcyhW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCmluZGV4IDM5YjI5
NjM0MmY2MTZjYzBlZjJjZDUyNmY3N2IyMGJhMDA1ZWJiYzcuLjU5N2IwNDExODA3NjlmMzhhNjc3
ZjBhNDY2ZDMzMmQ5MWQ3MTI4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9EcmFnRGF0YUFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFn
RGF0YUFuZHJvaWQuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAot
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5n
KikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1
bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCmlu
ZGV4IDFjZTIwZGMyMmYzYjI5MThmMTQ0YWY2NjYwZWY2ZmRjNTRhMzU2OWYuLmQ5NTdiN2QxYWMy
YTY1YWFlMGUzZTk5ODcxM2QwM2EyMzliNjc4MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcApAQCAtNTYsMTcgKzU2LDE3IEBAIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7CiB9CiAKLWJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAg
ICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZp
bGVuYW1lcykuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyog
dGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICBTdHJpbmcg
dXJsOwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1ZhbGlkVVJMKCkpCiAgICAgICAg
IHVybCA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+Z2V0VVJMKCkuc3RyaW5nKCk7Ci0gICAgZWxzZSBp
ZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzLmlzRW1wdHkoKSkgeworICAgIGVsc2Ug
aWYgKGNvbnZlcnRGaWxlbmFtZXMgPT0gQ29udmVydEZpbGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURy
YWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9
IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzWzBdOwogICAgICAgICBmaWxlTmFtZSA9IENo
cm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoZmlsZU5hbWUpOwogICAgICAgICB1cmwgPSBD
aHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChmaWxlTmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggM2Y5ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIy
YTk5YmZmMGNlNThkYS4uM2Y1M2ZkMWQzZThmZmM3MTlhYjEwMDhlYThmNzBmMTQ0OTIzNmU5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjph
c1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRD
b252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3Bw
CmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUxNThkYTE1ZWI4MzVhNmEuLjdiMTY5OTUw
YzIxNGU4MjZiOTdmMWI4MGFhNDIxNzA0ZDExODNjMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNo
b3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29u
c3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0
RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3
NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3MWYxNGQuLmFmMmZmZGNkOWU4ODE4NDI0NGE0ZjA5
NDFlMDk0MzYxNDQ1ODJkNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJh
Z0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1
LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNV
UkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWlu
c1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0
aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1l
cyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCAwMmE2YWY3MzY4ZjgwZWY5MWExY2M2M2E3OTY5ODhlZDcxOGI2NzM5Li44ODQ5
ODhlYTE4YjBiOWUyYTY5NmQ5OWNkMzRjZmQwYzNjZDJlOWI2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQpAQCAtMTEzLDEzICsxMTMsMTUgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFt0eXBlcyBjb3VudF0gIT0g
MDsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1l
cykgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAh
YXNVUkwoY29udmVydEZpbGVuYW1lcykuaXNFbXB0eSgpOwogfQogICAgIAotU3RyaW5nIERyYWdE
YXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChT
aG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgorICAgICh2b2lkKWNv
bnZlcnRGaWxlbmFtZXM7CiAgICAgcmV0dXJuIG1fcGFzdGVib2FyZEhlbHBlci0+dXJsRnJvbVBh
c3RlYm9hcmQoW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCB0aXRsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDA5YTc5N2ZhZmRlNDIzZDYw
MTk0ZGJkZmM4NmI3YWFhZTY2OGEzYzEuLjIyNjliMjgzYjFhZTE1OWEwZjJlZmQ3YTM2MjQwNTQ2
OWMwYWZkZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcApAQCAtMTEyLDE1ICsxMTIs
MTcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzSHRtbCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQog
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7
CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgogICAgIGlmICghbV9wbGF0Zm9y
bURyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzVXJscygpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyop
IGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29u
dmVydEZpbGVuYW1lcywgU3RyaW5nKikgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZl
cnRGaWxlbmFtZXMuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51
cmxzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBkMzQwYzg5ZDJkZjdjMDJkOGVkNjI4YjgxM2Y4ZTczMGE5MzE4NjdhLi4wZTUwYTU1
MTY5ZjA3NGU3N2QyMWYyNDYwNGNiYTYwMjEzYWU0ODMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0
aWMgYm9vbCB1cmxGcm9tUGF0aChDRlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwg
Ym9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIERyYWdEYXRhOjpTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxl
bmFtZXMsIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0
b3JlOwogICAgIFN0cmluZyB1cmw7CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQog
ICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVh
c2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNl
IGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0
b3JlKSkpIHsKLSAgICAgICAgLy9maWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCog
ZGF0YSA9ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAo
ZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0
YSkpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYg
KHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRpdGxlKQotICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChjb252ZXJ0RmlsZW5hbWVz
ID09IERyYWdEYXRhOjpDb252ZXJ0RmlsZW5hbWVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQo
ZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAg
ICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQorICAgICAgICAgICAgd2NoYXJfdCogZGF0YSA9
ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRh
dGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEp
KSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJp
bmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICp0aXRsZSA9
IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsgICAgICAKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9maWxlbmFtZSB1c2luZyBhc2NpaQotICAgICAgICBj
aGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgIAotICAg
ICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0
aElzVU5DQShkYXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0
aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Ci0gICAgICAgICAgICBp
ZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKLSAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1h
dCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAg
ICAgICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsK
KyAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRh
KSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICp0aXRsZSA9IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwog
ICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKLSAg
ICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgIH0KICAgICByZXR1cm4gdXJsOwog
fQpAQCAtMzUwLDE0ICszNTIsMTQgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICAgICAgLy91bmljb2RlIHRleHQKICAgICAg
ICAgVUNoYXIqIGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAg
ICAgIHRleHQgPSBTdHJpbmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xv
YmFsKTsgICAgICAKKyAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0
KCksICZzdG9yZSkpKSB7CiAgICAgICAgIC8vYXNjaWkgdGV4dAogICAgICAgICBjaGFyKiBkYXRh
ID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHRleHQgPSBTdHJp
bmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKKyAg
ICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVk
aXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IGVjMTUyMzFj
M2JhZDhkMTUzNTJhYzM0MGRlZWEzYzg3MTQ0NmYzMDguLjcwNzA1OGEwM2IxYWIwNjdlMzVhNDVh
MjlmZmY2NDlmOTlmNzdkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCkBAIC02MSw5ICs2MSw5IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqCiBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJ
RGF0YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21D
Rl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZl9odG1sKTsKIAotU3RyaW5nIGdldFVS
TChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmlu
ZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJp
bmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggMzA0ODdiOGYwMWEzOTRmOGYx
OGMyZDlkMzgzNjc4OWNiMDY4NWM2MC4uNDY4NDFlYTdmMjBiOTJjZWQ4M2ZlMjMyYzU3ZTI3NTM4
Y2ExNWNkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDQsMTggKzQ0
LDE5IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6
Y3JlYXRlKHRydWUsIG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5KTsKIH0KIAotYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hv
dWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVy
biBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsV0Zvcm1hdCgp
KSkgCiAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0
YSh1cmxGb3JtYXQoKSkpCi0gICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEt
PlF1ZXJ5R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSkpIAotICAgICAgICB8fCBTVUNDRUVERUQo
bV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpOworICAg
ICAgICB8fCAoY29udmVydEZpbGVuYW1lcyA9PSBDb252ZXJ0RmlsZW5hbWVzCisgICAgICAgICAg
ICAmJiAoU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1l
V0Zvcm1hdCgpKSkKKyAgICAgICAgICAgICAgICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdE
YXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpKSk7CiB9CiAKLVN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICByZXR1cm4gZ2V0VVJMKG1fcGxhdGZvcm1E
cmFnRGF0YSwgc3VjY2VzcywgdGl0bGUpOworICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURy
YWdEYXRhLCBjb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzLCB0aXRsZSk7CiB9CiAKIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0Rh
dGFXaW5jZS5jcHAKaW5kZXggODgxZDdkNGVlMDRkMmM4NjhjNmNlYmQyZjRiMDllMTUwNTM0ODNm
Ni4uNWE4NTFlZDY5YTU5YmI4YTY1NmU0MTEzNDlkYTg5YzBkMmNjNDhhYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVy
dEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5n
IERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMs
IFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd3gvRHJhZ0RhdGFXeC5jcHAKaW5kZXggOTdlYTM4YzUxYjlhYjc4MTNhN2ZlY2U5OTc5MjE2
YTZmYjdkNjQ0OS4uYmYxMWMwM2RiYzY4NGYyY2ZjMjI0OTA3MWU5ZTcyYjM0MTY4YTUxNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCkBAIC03NiwxMiArNzYsMTIgQEAgYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVz
KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57970</attachid>
            <date>2010-06-05 13:40:09 -0700</date>
            <delta_ts>2010-06-07 17:06:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100605134007.patch</filename>
            <type>text/plain</type>
            <size>25506</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTg0M2ZhMTFkZWEzZmIwMzM3NzE3NTdiYjIwMWQ4ZTYwOTQ5Njc4Li41MDIwNWY2
MGIyZDM5YmJlMGUwZWQwMTBjNmRlYmFmMjhkNDEwNzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA0ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRv
LWVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYyY2VlMmNlZDRmNzc0MDhmMWU1
YTcyZGMzNDc0N2M2NTk1ZmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitUZXN0cyB0aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEg
ZG9lcyBub3QgaW5zZXJ0IGEgZmlsZW5hbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmViZTc1MDc1ZDNjOTlkMWUyYzdiMmQ4MjNkNzg0
MDkyN2VjMjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3Jp
cHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIxMjJlMWI3NjIzZmZiZWQxMDcyZDUwM2FiYzFhZDJmNDdjYzI4MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0
aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0
IGEgZmlsZW5hbWUuJyk7CisKK3ZhciBlZGl0YWJsZUFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2VkaXRhYmxlQXJlYS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZWRpdGFi
bGVBcmVhLnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworZWRpdGFibGVBcmVhLnN0eWxlLmhl
aWdodCA9ICcxMDBweCc7CitlZGl0YWJsZUFyZWEuc3R5bGUud2lkdGggPSAnMTAwcHgnOworLy8g
SW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQg
bG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hlcmUgaXQgY2Fu
J3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVkaXRhYmxlQXJl
YSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09u
dG9FZGl0YWJsZUFyZWEoZmlsZXMpIHsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMoZmlsZXMpOworICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVkaXRhYmxlQXJlYSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCdzdWNjZXNzZnVsbHlQYXJzZWQnKTsKKyAgICAgICAgZGVidWcoJzxiciAvPjxzcGFu
IGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworCisgICAgICAgIC8vIERvbid0
IHJlbW92ZSB0aGUgZWRpdGFibGUgbm9kZSwgc2luY2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhl
cmUgbm8gc3RyYXkgZmlsZSBVUkxzIHdlcmUKKyAgICAgICAgLy8gaW5zZXJ0ZWQgZHVyaW5nIHRo
ZSBkcm9wLgorCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwor
ICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIH07CisgICAgZHJhZ0Zp
bGVzT250b0VkaXRhYmxlQXJlYShbJ0RSVEZha2VGaWxlJ10pOworICAgIHRlc3RGYWlsZWQoJ1Ro
ZSB0ZXN0IHNob3VsZCBoYXZlIHJlc3VsdGVkIGluIG5hdmlnYXRpb24nKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBydW5UZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBpcyBub3Qg
aW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUnKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNTM2OGNjMWE0ODk5N2FhYjY0NjIyZjRjM2ZmMzAxYWI2
NjYyZDFjYy4uMGI2ZTI1NzVlOTBhMTQ3YzAyM2ZlMjIxZWRhNzA4NWFiODA0Y2JjZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTY2NCw2ICs2NjQsNyBAQCBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LWRyb3AtdXJsLXRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQt
ZmllbGQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtaW4tYWJvdXQtYmxhbmst
ZnJhbWUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by1hbmNob3ItdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CmluZGV4IDIxM2I2OGUwYjVkNGQwNzEwNDg2ZmFlMGE0YTVkZWE2YmI0MmZmOTUuLjVmZTQwZmI2
MTA1MzViNzlmMWNkN2FmNWMwYzUzN2I0NWU4NTg5NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0yOTksMyArMjk5LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3IuaHRtbAogZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nlc3MuaHRtbAorCisjIEZpbGVuYW1lcyBh
cmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mu
d2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA3ZmM4NmQz
MWIyNTMyM2YxODZmZDc2YjIyNWY0YzYwM2MwNjFmYThhLi42OGMwYjA1OWIxZDgxNzFiMzMwNzU2
MDYwZjU4ODMyNmYwNWNiNzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMyMCw2ICsz
MjAsNyBAQCBodHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2UtZGVsZWdhdGUtY2FsbGJh
Y2suaHRtbAogCiAjIC0tLS0tLS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwK
K2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0
ZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU3ODEzMzRkZTFiMDYyMGFmMDI1
YzAyNzFiYTRlODZjMGNiZTUzYzUuLmVhMjUzNzU0NGExMjMzY2UzN2YzMTU4ZjI4MGNkNDdmZDll
OTQ0OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTIsNiArMTkyLDcgQEAgaHR0
cC90ZXN0cy93ZWJhcmNoaXZlCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzUyMzAzOTY+IGV2ZW50U2Vu
ZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBpcyB1bmltcGxlbWVudGVkCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQv
ZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0
LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLXRvLW5hdmlnYXRlLmh0bWwKIGZh
c3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyNjI0MDAzOTgxYmZlOWIy
OTk4Njg4ZDI0NDhkZDI4ZGM3MWUzZTguLmQ1OWEzZWE2ZDQxZDc1YjA4ZDk1YzFkNGIzYWM3YTkw
OGFjNTA0ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDYtMDQgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG9uJ3QgY29udmVydCBmaWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKwor
ICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmls
ZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisgICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVt
IG91dCBvZiBlZGl0IGRyYWdzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFzdGVib2FyZC9m
aWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6Oik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0Rh
dGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjph
c1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRQbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0
YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAyMDEwLTA2LTA0ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBlYzY5ZWEwNzQzMTk4MDEwNzNlOTU2OGQ1Yzg4
MmFmMTY0NzVhMGJmLi4wZDE3MGIzMjY0NGMwMDgzOWY1MjY3YzMxNmVkOGU3NWRkN2RmMTVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEwOSw5ICsxMDksOSBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhKiBkcmFnRAogICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRyYWdEYXRhLT5hc0ZyYWdtZW50KGRvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKIAotICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkpIHsKKyAg
ICAgICAgaWYgKGRyYWdEYXRhLT5jb250YWluc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0Rmls
ZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLT5hc1VSTCgmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9
IGRyYWdEYXRhLT5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUp
OwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJsKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaAppbmRleCAwMDdmN2Q3MTc1NTdlMjM0ZmViNDVkN2FiODYwM2IwZWZiMmFiYThlLi5m
YWQxOTdkMjU1ODU3MGM4YTAxOTAxZDMwYjc3ZDc4MmRkZTFjNDUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CkBAIC03OCw2ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBE
cmFnRGF0YSB7CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMsIENvbnZlcnRGaWxlbmFtZXMgfTsKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgLy9GSVhNRTogSW4gdGhlIGZ1dHVyZSB0aGUgV2ViS2l0IGZ1
bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgaGVscGVyIGNsYXNzIHNob3VsZCBiZSBtb3ZlZCBpbnRv
IFdlYkNvcmUsIAogICAgICAgICAvL2FmdGVyIHdoaWNoIHRoaXMgY29uc3RydWN0b3Igc2hvdWxk
IGJlIHJlbW92ZWQKQEAgLTkyLDEwICs5NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YTsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAg
ICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5KSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWluc1VSTCgpIGNvbnN0OworICAg
ICAgICBib29sIGNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcyA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zUGxh
aW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgp
IGNvbnN0OwotICAgICAgICBTdHJpbmcgYXNVUkwoU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgYXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzID0gQ29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0OwogICAgICAg
ICBTdHJpbmcgYXNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgdm9pZCBhc0ZpbGVuYW1lcyhW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgICAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCmluZGV4IDM5YjI5
NjM0MmY2MTZjYzBlZjJjZDUyNmY3N2IyMGJhMDA1ZWJiYzcuLjU5N2IwNDExODA3NjlmMzhhNjc3
ZjBhNDY2ZDMzMmQ5MWQ3MTI4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9EcmFnRGF0YUFuZHJvaWQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFn
RGF0YUFuZHJvaWQuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAot
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5n
KikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1
bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCmlu
ZGV4IDFjZTIwZGMyMmYzYjI5MThmMTQ0YWY2NjYwZWY2ZmRjNTRhMzU2OWYuLmQ5NTdiN2QxYWMy
YTY1YWFlMGUzZTk5ODcxM2QwM2EyMzliNjc4MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcApAQCAtNTYsMTcgKzU2LDE3IEBAIFBhc3NSZWZQ
dHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIGNsaXBib2FyZC5yZWxlYXNlKCk7CiB9CiAKLWJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAg
ICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZp
bGVuYW1lcykuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyog
dGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICBTdHJpbmcg
dXJsOwogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1ZhbGlkVVJMKCkpCiAgICAgICAg
IHVybCA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+Z2V0VVJMKCkuc3RyaW5nKCk7Ci0gICAgZWxzZSBp
ZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzLmlzRW1wdHkoKSkgeworICAgIGVsc2Ug
aWYgKGNvbnZlcnRGaWxlbmFtZXMgPT0gQ29udmVydEZpbGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURy
YWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9
IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzWzBdOwogICAgICAgICBmaWxlTmFtZSA9IENo
cm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoZmlsZU5hbWUpOwogICAgICAgICB1cmwgPSBD
aHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChmaWxlTmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggM2Y5ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIy
YTk5YmZmMGNlNThkYS4uM2Y1M2ZkMWQzZThmZmM3MTlhYjEwMDhlYThmNzBmMTQ0OTIzNmU5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjph
c1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRD
b252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3Bw
CmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUxNThkYTE1ZWI4MzVhNmEuLjdiMTY5OTUw
YzIxNGU4MjZiOTdmMWI4MGFhNDIxNzA0ZDExODNjMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNo
b3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29u
c3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0
RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3
NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3MWYxNGQuLmFmMmZmZGNkOWU4ODE4NDI0NGE0ZjA5
NDFlMDk0MzYxNDQ1ODJkNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJh
Z0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1
LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNV
UkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWlu
c1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0
aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1l
cyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCAwMmE2YWY3MzY4ZjgwZWY5MWExY2M2M2E3OTY5ODhlZDcxOGI2NzM5Li44ODQ5
ODhlYTE4YjBiOWUyYTY5NmQ5OWNkMzRjZmQwYzNjZDJlOWI2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQpAQCAtMTEzLDEzICsxMTMsMTUgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFt0eXBlcyBjb3VudF0gIT0g
MDsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1l
cykgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAh
YXNVUkwoY29udmVydEZpbGVuYW1lcykuaXNFbXB0eSgpOwogfQogICAgIAotU3RyaW5nIERyYWdE
YXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChT
aG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgorICAgICh2b2lkKWNv
bnZlcnRGaWxlbmFtZXM7CiAgICAgcmV0dXJuIG1fcGFzdGVib2FyZEhlbHBlci0+dXJsRnJvbVBh
c3RlYm9hcmQoW21fcGxhdGZvcm1EcmFnRGF0YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCB0aXRsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCmluZGV4IDA5YTc5N2ZhZmRlNDIzZDYw
MTk0ZGJkZmM4NmI3YWFhZTY2OGEzYzEuLjBkOWNhNWZjMzdlMWVjMzZhY2RjNzhiYmJjY2Q1NWYz
ZDc2MTA5NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcApAQCAtOTAsNyArOTAsNyBA
QCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRl
eHQ7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGhhbmRsZSByaWNoIHRleHQgaGVyZQotICAgIHJl
dHVybiBhc1VSTCgwKTsKKyAgICByZXR1cm4gYXNVUkwoRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAw
KTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdApAQCAtMTEyLDE1ICsxMTIs
MTcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzSHRtbCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQog
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7
CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0RmlsZW5hbWVzLgogICAgIGlmICghbV9wbGF0Zm9y
bURyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzVXJscygpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyop
IGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29u
dmVydEZpbGVuYW1lcywgU3RyaW5nKikgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZl
cnRGaWxlbmFtZXMuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBRTGlzdDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51
cmxzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAppbmRleCBkMzQwYzg5ZDJkZjdjMDJkOGVkNjI4YjgxM2Y4ZTczMGE5MzE4NjdhLi4wZTUwYTU1
MTY5ZjA3NGU3N2QyMWYyNDYwNGNiYTYwMjEzYWU0ODMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0
aWMgYm9vbCB1cmxGcm9tUGF0aChDRlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwg
Ym9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3Qq
IGRhdGFPYmplY3QsIERyYWdEYXRhOjpTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxl
bmFtZXMsIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0
b3JlOwogICAgIFN0cmluZyB1cmw7CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQog
ICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVh
c2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNl
IGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0
b3JlKSkpIHsKLSAgICAgICAgLy9maWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCog
ZGF0YSA9ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAo
ZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0
YSkpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYg
KHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRpdGxlKQotICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChjb252ZXJ0RmlsZW5hbWVz
ID09IERyYWdEYXRhOjpDb252ZXJ0RmlsZW5hbWVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQo
ZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAg
ICAgICAgIC8vIGZpbGUgdXNpbmcgdW5pY29kZQorICAgICAgICAgICAgd2NoYXJfdCogZGF0YSA9
ICh3Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRh
dGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEp
KSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJp
bmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7CisgICAgICAgICAgICAg
ICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICp0aXRsZSA9
IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsgICAgICAKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9maWxlbmFtZSB1c2luZyBhc2NpaQotICAgICAgICBj
aGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgIAotICAg
ICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0
aElzVU5DQShkYXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0
aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Ci0gICAgICAgICAgICBp
ZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKLSAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1h
dCgpLCAmc3RvcmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAg
ICAgICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsK
KyAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRh
KSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICp0aXRsZSA9IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwog
ICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKLSAg
ICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgIH0KICAgICByZXR1cm4gdXJsOwog
fQpAQCAtMzUwLDE0ICszNTIsMTQgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCog
ZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcykKICAgICAgICAgLy91bmljb2RlIHRleHQKICAgICAg
ICAgVUNoYXIqIGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAg
ICAgIHRleHQgPSBTdHJpbmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xv
YmFsKTsgICAgICAKKyAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0
KCksICZzdG9yZSkpKSB7CiAgICAgICAgIC8vYXNjaWkgdGV4dAogICAgICAgICBjaGFyKiBkYXRh
ID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHRleHQgPSBTdHJp
bmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKKyAg
ICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVk
aXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IGVjMTUyMzFj
M2JhZDhkMTUzNTJhYzM0MGRlZWEzYzg3MTQ0NmYzMDguLjcwNzA1OGEwM2IxYWIwNjdlMzVhNDVh
MjlmZmY2NDlmOTlmNzdkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5oCkBAIC02MSw5ICs2MSw5IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqCiBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJ
RGF0YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21D
Rl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZl9odG1sKTsKIAotU3RyaW5nIGdldFVS
TChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmlu
ZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJp
bmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggMzA0ODdiOGYwMWEzOTRmOGYx
OGMyZDlkMzgzNjc4OWNiMDY4NWM2MC4uNDY4NDFlYTdmMjBiOTJjZWQ4M2ZlMjMyYzU3ZTI3NTM4
Y2ExNWNkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNDQsMTggKzQ0
LDE5IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIENsaXBib2FyZFdpbjo6
Y3JlYXRlKHRydWUsIG1fcGxhdGZvcm1EcmFnRGF0YSwgcG9saWN5KTsKIH0KIAotYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hv
dWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVy
biBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsV0Zvcm1hdCgp
KSkgCiAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0
YSh1cmxGb3JtYXQoKSkpCi0gICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEt
PlF1ZXJ5R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSkpIAotICAgICAgICB8fCBTVUNDRUVERUQo
bV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpOworICAg
ICAgICB8fCAoY29udmVydEZpbGVuYW1lcyA9PSBDb252ZXJ0RmlsZW5hbWVzCisgICAgICAgICAg
ICAmJiAoU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1l
V0Zvcm1hdCgpKSkKKyAgICAgICAgICAgICAgICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdE
YXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpKSk7CiB9CiAKLVN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICByZXR1cm4gZ2V0VVJMKG1fcGxhdGZvcm1E
cmFnRGF0YSwgc3VjY2VzcywgdGl0bGUpOworICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURy
YWdEYXRhLCBjb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzLCB0aXRsZSk7CiB9CiAKIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0Rh
dGFXaW5jZS5jcHAKaW5kZXggODgxZDdkNGVlMDRkMmM4NjhjNmNlYmQyZjRiMDllMTUwNTM0ODNm
Ni4uNWE4NTFlZDY5YTU5YmI4YTY1NmU0MTEzNDlkYTg5YzBkMmNjNDhhYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNz
UG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVy
dEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5n
IERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMs
IFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd3gvRHJhZ0RhdGFXeC5jcHAKaW5kZXggOTdlYTM4YzUxYjlhYjc4MTNhN2ZlY2U5OTc5MjE2
YTZmYjdkNjQ0OS4uYmYxMWMwM2RiYzY4NGYyY2ZjMjI0OTA3MWU5ZTcyYjM0MTY4YTUxNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCkBAIC03NiwxMiArNzYsMTIgQEAgYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVz
KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58096</attachid>
            <date>2010-06-07 17:06:46 -0700</date>
            <delta_ts>2010-06-08 17:30:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100607170645.patch</filename>
            <type>text/plain</type>
            <size>26864</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTg0M2ZhMTFkZWEzZmIwMzM3NzE3NTdiYjIwMWQ4ZTYwOTQ5Njc4Li5jNjlmODFl
M2Q4OGQ0YTJlZDdlZDI5MzFmY2Y3Zjk0ZjYyZTIzZjZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA0ICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRv
LWVkaXRhYmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjYyY2VlMmNlZDRmNzc0MDhmMWU1
YTcyZGMzNDc0N2M2NTk1ZmEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitUZXN0cyB0aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEg
ZG9lcyBub3QgaW5zZXJ0IGEgZmlsZW5hbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmViZTc1MDc1ZDNjOTlkMWUyYzdiMmQ4MjNkNzg0
MDkyN2VjMjIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3Jp
cHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIxMjJlMWI3NjIzZmZiZWQxMDcyZDUwM2FiYzFhZDJmNDdjYzI4MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0
aGF0IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0
IGEgZmlsZW5hbWUuJyk7CisKK3ZhciBlZGl0YWJsZUFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKK2VkaXRhYmxlQXJlYS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZWRpdGFi
bGVBcmVhLnN0eWxlLmJhY2tncm91bmQgPSAnZ3JlZW4nOworZWRpdGFibGVBcmVhLnN0eWxlLmhl
aWdodCA9ICcxMDBweCc7CitlZGl0YWJsZUFyZWEuc3R5bGUud2lkdGggPSAnMTAwcHgnOworLy8g
SW1wb3J0YW50IHRoYXQgd2UgcHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQg
bG9nZ2luZyBkb2VzIG5vdCBjYXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hlcmUgaXQgY2Fu
J3QgYmUgZHJhZ2dlZCB0bykKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVkaXRhYmxlQXJl
YSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWxlbWVudCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0
TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxlbWVu
dC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09u
dG9FZGl0YWJsZUFyZWEoZmlsZXMpIHsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMoZmlsZXMpOworICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGVkaXRhYmxlQXJlYSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCdzdWNjZXNzZnVsbHlQYXJzZWQnKTsKKyAgICAgICAgZGVidWcoJzxiciAvPjxzcGFu
IGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOworCisgICAgICAgIC8vIERvbid0
IHJlbW92ZSB0aGUgZWRpdGFibGUgbm9kZSwgc2luY2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhl
cmUgbm8gc3RyYXkgZmlsZSBVUkxzIHdlcmUKKyAgICAgICAgLy8gaW5zZXJ0ZWQgZHVyaW5nIHRo
ZSBkcm9wLgorCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwor
ICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBudWxsOworICAgIH07CisgICAgZHJhZ0Zp
bGVzT250b0VkaXRhYmxlQXJlYShbJ0RSVEZha2VGaWxlJ10pOworICAgIHRlc3RGYWlsZWQoJ1Ro
ZSB0ZXN0IHNob3VsZCBoYXZlIHJlc3VsdGVkIGluIG5hdmlnYXRpb24nKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBydW5UZXN0KCk7Cit9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBpcyBub3Qg
aW50ZXJhY3RpdmUsIHBsZWFzZSBydW4gdXNpbmcgRHVtcFJlbmRlclRyZWUnKTsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNTM2OGNjMWE0ODk5N2FhYjY0NjIyZjRjM2ZmMzAxYWI2
NjYyZDFjYy4uMGI2ZTI1NzVlOTBhMTQ3YzAyM2ZlMjIxZWRhNzA4NWFiODA0Y2JjZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTY2NCw2ICs2NjQsNyBAQCBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LWRyb3AtdXJsLXRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW4tcGFzc3dvcmQt
ZmllbGQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtaW4tYWJvdXQtYmxhbmst
ZnJhbWUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by1hbmNob3ItdGV4dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CmluZGV4IDIxM2I2OGUwYjVkNGQwNzEwNDg2ZmFlMGE0YTVkZWE2YmI0MmZmOTUuLjVmZTQwZmI2
MTA1MzViNzlmMWNkN2FmNWMwYzUzN2I0NWU4NTg5NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0yOTksMyArMjk5LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3IuaHRtbAogZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nlc3MuaHRtbAorCisjIEZpbGVuYW1lcyBh
cmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mu
d2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA3ZmM4NmQz
MWIyNTMyM2YxODZmZDc2YjIyNWY0YzYwM2MwNjFmYThhLi42OGMwYjA1OWIxZDgxNzFiMzMwNzU2
MDYwZjU4ODMyNmYwNWNiNzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMyMCw2ICsz
MjAsNyBAQCBodHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2UtZGVsZWdhdGUtY2FsbGJh
Y2suaHRtbAogCiAjIC0tLS0tLS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmls
ZXMKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1nZXREYXRhLmh0bWwK
K2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0
ZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGU3ODEzMzRkZTFiMDYyMGFmMDI1
YzAyNzFiYTRlODZjMGNiZTUzYzUuLmVhMjUzNzU0NGExMjMzY2UzN2YzMTU4ZjI4MGNkNDdmZDll
OTQ0OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTIsNiArMTkyLDcgQEAgaHR0
cC90ZXN0cy93ZWJhcmNoaXZlCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzUyMzAzOTY+IGV2ZW50U2Vu
ZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBpcyB1bmltcGxlbWVudGVkCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQv
ZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0
LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLXRvLW5hdmlnYXRlLmh0bWwKIGZh
c3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUyNjI0MDAzOTgxYmZlOWIy
OTk4Njg4ZDI0NDhkZDI4ZGM3MWUzZTguLjRhN2RmZmFmMTA2ZDU2ODlhY2JlMDM1YTIzZjZmYTVh
MmQ1ZTJlMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMDYtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRG9uJ3QgY29udmVydCBmaWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKwor
ICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmls
ZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisgICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVt
IG91dCBvZiBlZGl0IGRyYWdzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFzdGVib2FyZC9m
aWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6Oik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0Rh
dGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjph
c1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VS
TCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UGxhaW5UZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmg6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRXaW46OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFnRGF0YVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9E
cmFnRGF0YVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VS
TCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL3d4L0RyYWdEYXRhV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisKIDIwMTAtMDYt
MDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGVjNjllYTA3NDMxOTgw
MTA3M2U5NTY4ZDVjODgyYWYxNjQ3NWEwYmYuLjBkMTcwYjMyNjQ0YzAwODM5ZjUyNjdjMzE2ZWQ4
ZTc1ZGQ3ZGYxNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTA5LDkgKzEwOSw5IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9t
RHJhZ0RhdGEoRHJhZ0RhdGEqIGRyYWdECiAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0RhdGEtPmFzRnJhZ21lbnQoZG9jdW1lbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogCi0gICAgICAgIGlmIChkcmFnRGF0YS0+Y29udGFp
bnNVUkwoKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKERyYWdEYXRhOjpE
b05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAg
ICAgICAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKCZ0aXRsZSk7CisgICAgICAgICAg
ICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxl
bmFtZXMsICZ0aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhUTUxBbmNob3JF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hvci0+c2V0SHJl
Zih1cmwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDAwN2Y3ZDcxNzU1N2UyMzRmZWI0NWQ3YWI4NjAz
YjBlZmIyYWJhOGUuLmZhZDE5N2QyNTU4NTcwYzhhMDE5MDFkMzBiNzdkNzgyZGRlMWM0NTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKQEAgLTc4LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogICAgIGNsYXNzIERyYWdEYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU2hvdWxk
Q29udmVydEZpbGVuYW1lcyB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVydEZpbGVuYW1l
cyB9OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAvL0ZJWE1FOiBJbiB0aGUgZnV0dXJl
IHRoZSBXZWJLaXQgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBoZWxwZXIgY2xhc3Mgc2hvdWxk
IGJlIG1vdmVkIGludG8gV2ViQ29yZSwgCiAgICAgICAgIC8vYWZ0ZXIgd2hpY2ggdGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgYmUgcmVtb3ZlZApAQCAtOTIsMTAgKzk0LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2s7IH0KICAgICAgICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0ZUNsaXBib2Fy
ZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0OwotICAgICAgICBib29sIGNvbnRhaW5zVVJM
KCkgY29uc3Q7CisgICAgICAgIGJvb2wgY29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1l
cyBjb252ZXJ0RmlsZW5hbWVzID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7CiAgICAgICAgIGJv
b2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgYm9vbCBjb250YWluc0NvbXBh
dGlibGVDb250ZW50KCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBhc1VSTChTdHJpbmcqIHRpdGxl
ID0gMCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBhc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVz
IGNvbnZlcnRGaWxlbmFtZXMgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlID0gMCkg
Y29uc3Q7CiAgICAgICAgIFN0cmluZyBhc1BsYWluVGV4dCgpIGNvbnN0OwogICAgICAgICB2b2lk
IGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgICAgIENvbG9yIGFzQ29s
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0
YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5j
cHAKaW5kZXggMzliMjk2MzQyZjYxNmNjMGVmMmNkNTI2Zjc3YjIwYmEwMDVlYmJjNy4uNTk3YjA0
MTE4MDc2OWYzOGE2NzdmMGE0NjZkMzMyZDkxZDcxMjhkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTY4LDEyICs2OCwxMiBAQCBib29sIERy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERy
YWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFt
ZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChTdHJpbmcqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252
ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyopIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9E
cmFnRGF0YUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFD
aHJvbWl1bS5jcHAKaW5kZXggMWNlMjBkYzIyZjNiMjkxOGYxNDRhZjY2NjBlZjZmZGM1NGEzNTY5
Zi4uZDk1N2I3ZDFhYzJhNjVhYWUwZTNlOTk4NzEzZDAzYTIzOWI2NzgyMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCkBAIC01NiwxNyArNTYs
MTcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gY2xpcGJvYXJkLnJlbGVh
c2UoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVz
KSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFh
c1VSTChjb252ZXJ0RmlsZW5hbWVzKS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVmFsaWRV
UkwoKSkKICAgICAgICAgdXJsID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5nZXRVUkwoKS5zdHJpbmco
KTsKLSAgICBlbHNlIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgp
KSB7CisgICAgZWxzZSBpZiAoY29udmVydEZpbGVuYW1lcyA9PSBDb252ZXJ0RmlsZW5hbWVzICYm
ICFtX3BsYXRmb3JtRHJhZ0RhdGEtPmZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXNbMF07CiAgICAgICAg
IGZpbGVOYW1lID0gQ2hyb21pdW1CcmlkZ2U6OmdldEFic29sdXRlUGF0aChmaWxlTmFtZSk7CiAg
ICAgICAgIHVybCA9IENocm9taXVtQnJpZGdlOjpmaWxlUGF0aFRvVVJMKGZpbGVOYW1lKS5zdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAppbmRleCAzZjllY2NiNzc2OWQx
ZDYyNmM5ZDIzYjcwMjJhOTliZmYwY2U1OGRhLi4zZjUzZmQxZDNlOGZmYzcxOWFiMTAwOGVhOGY3
MGYxNDQ5MjM2ZTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVm
bC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCkBAIC03MSwx
MiArNzEsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgp
IGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVz
IGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6
OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0
aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9E
cmFnRGF0YUd0ay5jcHAKaW5kZXggNjliMzE2MTQzMTgwNzE0YjRhYmM3M2QyZTE1OGRhMTVlYjgz
NWE2YS4uN2IxNjk5NTBjMjE0ZTgyNmI5N2YxYjgwYWE0MjE3MDRkMTE4M2MwNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIGJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25z
dAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJp
bmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFn
RGF0YUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAK
aW5kZXggNGEyMDE0Nzc2ZTAzNjE5MWYzYzQ1MDUxNmNlOGE0ZTk0ZDcxZjE0ZC4uYWYyZmZkY2Q5
ZTg4MTg0MjQ0YTRmMDk0MWUwOTQzNjE0NDU4MmQ0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1
L0RyYWdEYXRhSGFpa3UuY3BwCkBAIC04NiwxMyArODYsMTMgQEAgYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3Io
KSB8fCBjb250YWluc1VSTCgpIHx8IGNvbnRhaW5zUGxhaW5UZXh0KCk7CiB9CiAKLWJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNo
b3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjph
c1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRD
b252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDAyYTZhZjczNjhmODBlZjkxYTFjYzYzYTc5Njk4OGVk
NzE4YjY3MzkuLjg4NDk4OGVhMThiMGI5ZTJhNjk2ZDk5Y2QzNGNmZDBjM2NkMmU5YjYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0xMTMsMTMgKzExMywxNSBAQCBib29sIERy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gW3R5
cGVzIGNvdW50XSAhPSAwOwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBj
b25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBj
b252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoKS5pc0VtcHR5KCk7
CisgICAgcmV0dXJuICFhc1VSTChjb252ZXJ0RmlsZW5hbWVzKS5pc0VtcHR5KCk7CiB9CiAgICAg
Ci1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJh
Z0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3Ry
aW5nKiB0aXRsZSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRGaWxlbmFtZXMu
CisgICAgKHZvaWQpY29udmVydEZpbGVuYW1lczsKICAgICByZXR1cm4gbV9wYXN0ZWJvYXJkSGVs
cGVyLT51cmxGcm9tUGFzdGVib2FyZChbbV9wbGF0Zm9ybURyYWdEYXRhIGRyYWdnaW5nUGFzdGVi
b2FyZF0sIHRpdGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFn
RGF0YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKaW5kZXggMDlh
Nzk3ZmFmZGU0MjNkNjAxOTRkYmRmYzg2YjdhYWFlNjY4YTNjMS4uMGQ5Y2E1ZmMzN2UxZWMzNmFj
ZGM3OGJiYmNjZDU1ZjNkNzYxMDk2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
cmFnRGF0YVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogICAg
ICAgICByZXR1cm4gdGV4dDsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxlIHJpY2ggdGV4
dCBoZXJlCi0gICAgcmV0dXJuIGFzVVJMKDApOworICAgIHJldHVybiBhc1VSTChEb05vdENvbnZl
cnRGaWxlbmFtZXMsIDApOwogfQogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CkBA
IC0xMTIsMTUgKzExMiwxNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zVVJMKCkg
fHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNIdG1sKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5o
YXNUZXh0KCk7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcykgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRGaWxlbmFtZXMuCiAgICAg
aWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVcmxzKCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxkQ29udmVy
dEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBjb25zdAogeworICAgIC8vIEZJ
WE1FOiBVc2UgY29udmVydEZpbGVuYW1lcy4KICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFFMaXN0PFFVcmw+IHVybHMgPSBtX3BsYXRm
b3JtRHJhZ0RhdGEtPnVybHMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCmluZGV4IGQzNDBjODlkMmRmN2MwMmQ4ZWQ2MjhiODEzZjhlNzMwYTkz
MTg2N2EuLjVhYzQ5MDRhNTNkYTZiMmI4NGUxYjU3YjYzMmQwZmM2ZjAxZWE5OGQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjg5LDcg
KzI4OSw3IEBAIHN0YXRpYyBib29sIHVybEZyb21QYXRoKENGU3RyaW5nUmVmIHBhdGgsIFN0cmlu
ZyYgdXJsKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0
KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQorU3RyaW5nIGdldFVS
TChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgRHJhZ0RhdGE6OlNob3VsZENvbnZlcnRGaWxlbmFt
ZXMgY29udmVydEZpbGVuYW1lcywgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKIHsKICAg
ICBTVEdNRURJVU0gc3RvcmU7CiAgICAgU3RyaW5nIHVybDsKQEAgLTMxMSwzMiArMzExLDM0IEBA
IFN0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJvb2wmIHN1Y2Nlc3MsIFN0
cmluZyogdGl0bGUpCiAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAK
ICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1
ZTsKLSAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1l
V0Zvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL2ZpbGUgdXNpbmcgdW5pY29kZQotICAg
ICAgICB3Y2hhcl90KiBkYXRhID0gKHdjaGFyX3QqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7
Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKGRhdGEpIHx8
IFBhdGhJc1VOQyhkYXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7Ci0g
ICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAodGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9
IHVybDsKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGNv
bnZlcnRGaWxlbmFtZXMgPT0gRHJhZ0RhdGE6OkNvbnZlcnRGaWxlbmFtZXMpIHsKKyAgICAgICAg
aWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lV0Zvcm1hdCgpLCAmc3Rv
cmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZSB1c2luZyB1bmljb2RlCisgICAgICAgICAgICB3
Y2hhcl90KiBkYXRhID0gKHdjaGFyX3QqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CisgICAg
ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQ
YXRoSXNVTkMoZGF0YSkpKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlDaGFyKilkYXRhLCB3Y3NsZW4oZGF0YSkpKTsK
KyAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVy
bCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgKnRpdGxlID0gdXJsOworICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgR2xv
YmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAotICAgICAgICBSZWxlYXNlU3RnTWVkaXVt
KCZzdG9yZSk7Ci0gICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShm
aWxlbmFtZUZvcm1hdCgpLCAmc3RvcmUpKSkgewotICAgICAgICAvL2ZpbGVuYW1lIHVzaW5nIGFz
Y2lpCi0gICAgICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFs
KTsgICAgICAgCi0gICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3Rz
QShkYXRhKSB8fCBQYXRoSXNVTkNBKGRhdGEpKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpKTsK
LSAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkg
ewotICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKLSAgICAgICAgICAgICAgICAgICAgKnRpdGxl
ID0gdXJsOwotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgR2xv
YmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgm
c3RvcmUpOworICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRh
KGZpbGVuYW1lRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgICAgICAvLyBmaWxlbmFtZSB1
c2luZyBhc2NpaQorICAgICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0
b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZp
bGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkpKSB7CisgICAgICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIGtDRlN0cmluZ0VuY29k
aW5nQVNDSUkpKTsKKyAgICAgICAgICAgICAgICBpZiAodXJsRnJvbVBhdGgocGF0aEFzQ0ZTdHJp
bmcuZ2V0KCksIHVybCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRpdGxlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOworICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAgICBSZWxlYXNlU3RnTWVk
aXVtKCZzdG9yZSk7CiAgICAgICAgIH0KLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9i
YWwpOyAgICAgIAotICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgfQogICAg
IHJldHVybiB1cmw7CiB9CkBAIC0zNTAsMjAgKzM1MiwyMSBAQCBTdHJpbmcgZ2V0UGxhaW5UZXh0
KElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzKQogICAgICAgICAvL3VuaWNv
ZGUgdGV4dAogICAgICAgICBVQ2hhciogZGF0YSA9IChVQ2hhciopR2xvYmFsTG9jayhzdG9yZS5o
R2xvYmFsKTsKICAgICAgICAgdGV4dCA9IFN0cmluZyhkYXRhKTsKLSAgICAgICAgR2xvYmFsVW5s
b2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAorICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEds
b2JhbCk7CiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2Vz
cyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShw
bGFpblRleHRGb3JtYXQoKSwgJnN0b3JlKSkpIHsKICAgICAgICAgLy9hc2NpaSB0ZXh0CiAgICAg
ICAgIGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAg
ICAgdGV4dCA9IFN0cmluZyhkYXRhKTsKLSAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9i
YWwpOyAgICAgIAorICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAg
IFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgLy9JZiBhIGZpbGUgaXMgZHJvcHBlZCBvbiB0aGUgd2luZG93LCBp
dCBkb2VzIG5vdCBwcm92aWRlIGVpdGhlciBvZiB0aGUgCi0gICAgICAgIC8vcGxhaW4gdGV4dCBm
b3JtYXRzLCBzbyBoZXJlIHdlIHRyeSB0byBmb3JjaWJseSBnZXQgYSB1cmwuCi0gICAgICAgIHRl
eHQgPSBnZXRVUkwoZGF0YU9iamVjdCwgc3VjY2Vzcyk7CisgICAgICAgIC8vIEZJWE1FOiBvcmln
aW5hbGx5LCB0aGlzIGxvZ2ljIHdhcyBzbyBkcm9wcGluZyBmaWxlcyBvbiBXZWJLaXQgd291bGQg
aW5zZXJ0IHRoZSBmaWxlbmFtZS4KKyAgICAgICAgLy8gUGVyIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNiwgdGhpcyBpcyB1bmRlc2lyYWJsZSwgc28gbWF5YmUg
dGhpcworICAgICAgICAvLyBsaW5lIGNhbiBiZSByZW1vdmVkLgorICAgICAgICB0ZXh0ID0gZ2V0
VVJMKGRhdGFPYmplY3QsIERvTm90Q29udmVydEZpbGVuYW1lcywgc3VjY2Vzcyk7CiAgICAgICAg
IHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggZWMxNTIzMWMzYmFkOGQxNTM1
MmFjMzQwZGVlYTNjODcxNDQ2ZjMwOC4uZDU2MmE0NjlmZGMxYTU2MjA5MmI0NzJmYzc5YWE0Y2I0
MGUwY2E4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmgKQEAgLTYxLDkgKzYxLDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnRGcm9tRmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqCiBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0YU9iamVj
dCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRl9IVE1MKERv
Y3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZl9odG1sKTsKIAotU3RyaW5nIGdldFVSTChJRGF0YU9i
amVjdCosIGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmluZyBnZXRVUkwo
SURhdGFPYmplY3QqLCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0Rmls
ZW5hbWVzLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJpbmcgZ2V0UGxh
aW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oCisKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDMyYjY1NjE4MjY0Yjg5YTgyMjg4YWJm
ZmE0ZWM2MTEyYTQ1MjhhYWMuLjNjM2EyMDU5MGUxYmY4MmU1MThiYzhhYzdjN2Q4ZWJlYmQyMGIy
MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNDk5LDcgKzQ5OSw3
IEBAIFN0cmluZyBDbGlwYm9hcmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29s
JiBzdWNjZXNzKSBjb25zdAogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRl
eHQpCiAgICAgICAgIHJldHVybiBnZXRQbGFpblRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNj
ZXNzKTsKICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgCi0g
ICAgICAgIHJldHVybiBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICAg
ICAgcmV0dXJuIGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIERyYWdEYXRhOjpEb05vdENvbnZl
cnRGaWxlbmFtZXMsIHN1Y2Nlc3MpOwogICAgIAogICAgIHJldHVybiAiIjsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCAzMDQ4N2I4ZjAxYTM5NGY4ZjE4YzJkOWQzODM2
Nzg5Y2IwNjg1YzYwLi40Njg0MWVhN2YyMGI5MmNlZDgzZmUyMzJjNTdlMjc1MzhjYTE1Y2QyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC00NCwxOCArNDQsMTkgQEAgUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1
ZSwgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250
YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0
RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNVQ0NFRURF
RChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YSh1cmxXRm9ybWF0KCkpKSAKICAgICAg
ICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybEZvcm1h
dCgpKSkKLSAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXRE
YXRhKGZpbGVuYW1lV0Zvcm1hdCgpKSkgCi0gICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3Jt
RHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpKSk7CisgICAgICAgIHx8IChj
b252ZXJ0RmlsZW5hbWVzID09IENvbnZlcnRGaWxlbmFtZXMKKyAgICAgICAgICAgICYmIChTVUND
RUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCkp
KQorICAgICAgICAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5
R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpKSkpKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VS
TChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252
ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAg
ICAgYm9vbCBzdWNjZXNzOwotICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURyYWdEYXRhLCBz
dWNjZXNzLCB0aXRsZSk7CisgICAgcmV0dXJuIGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGNv
bnZlcnRGaWxlbmFtZXMsIHN1Y2Nlc3MsIHRpdGxlKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNGaWxlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0Ry
YWdEYXRhV2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNw
cAppbmRleCA4ODFkN2Q0ZWUwNGQyYzg2OGM2Y2ViZDJmNGIwOWUxNTA1MzQ4M2Y2Li41YTg1MWVk
NjlhNTliYjhhNjU2ZTQxMTM0OWRhODljMGQyY2M0OGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRHJhZ0RhdGFXaW5jZS5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCBQYXNzUmVmUHRyPENsaXBi
b2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KSBjbwogICAgIHJldHVybiAwOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgp
IGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVz
IGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6
OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0
aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFn
RGF0YVd4LmNwcAppbmRleCA5N2VhMzhjNTFiOWFiNzgxM2E3ZmVjZTk5NzkyMTZhNmZiN2Q2NDQ5
Li5iZjExYzAzZGJjNjg0ZjJjZmMyMjQ5MDcxZTllNzJiMzQxNjhhNTE1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
d3gvRHJhZ0RhdGFXeC5jcHAKQEAgLTc2LDEyICs3NiwxMiBAQCBib29sIERyYWdEYXRhOjpjb250
YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAg
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJp
bmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58200</attachid>
            <date>2010-06-08 17:30:52 -0700</date>
            <delta_ts>2010-06-08 17:38:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100608173051.patch</filename>
            <type>text/plain</type>
            <size>28511</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMDMyOGQzMDc5OGQ5NTAyOWFkYWQ5ZThhNGZkZmYwZmZjNTE2YjUzLi5iMjZmNzQy
ZGE4Yjc5YzhjZGM1YWFlYmU4NWM1ODRhN2EyZjJjMGE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTAtMDYtMDggIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCisyMDEwLTA2LTA4ICBTdGVwaGVuIFdoaXRlICA8
c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIGV4cGVjdGF0
aW9ucyBmaXguCisKKyAgICAgICAgW0NIUk9NSVVNXSBSZW1vdmUgZXhwZWN0YXRpb25zIGZvciBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC1saW5rLmh0bWwgb24gbWFjLCBzaW5jZSB0aGUgY2hhbmdl
IHdhcyByZXZlcnRlZC4gIE1hcmsgaHR0cC90ZXN0cy9tdWx0aXBhcnQvaW52YWxpZC1pbWFnZS1k
YXRhLmh0bWwgYXMgZmxha3kgb24gbGludXgvZGJnLgorCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDEwLTA2LTA4ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByNjA4NjQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiNjJjZWUyY2VkNGY3NzQwOGYxZTVhNzJkYzM0NzQ3YzY1OTVmYTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRh
YmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Rlc3RzIHRoYXQgZHJhZ2dpbmcgYSBm
aWxlIGludG8gYW4gZWRpdGFibGUgYXJlYSBkb2VzIG5vdCBpbnNlcnQgYSBmaWxlbmFtZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmZWJl
NzUwNzVkM2M5OWQxZTJjN2IyZDgyM2Q3ODQwOTI3ZWMyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUu
anMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2ZpbGUtZHJh
Zy10by1lZGl0YWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjEyMmUxYjc2MjNmZmJlZDEwNzJkNTAzYWJj
MWFkMmY0N2NjMjgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3NjcmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKQEAgLTAsMCArMSw0
NyBAQAorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZHJhZ2dpbmcgYSBmaWxlIGludG8gYW4gZWRp
dGFibGUgYXJlYSBkb2VzIG5vdCBpbnNlcnQgYSBmaWxlbmFtZS4nKTsKKwordmFyIGVkaXRhYmxl
QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZWRpdGFibGVBcmVhLmNvbnRl
bnRFZGl0YWJsZSA9IHRydWU7CitlZGl0YWJsZUFyZWEuc3R5bGUuYmFja2dyb3VuZCA9ICdncmVl
bic7CitlZGl0YWJsZUFyZWEuc3R5bGUuaGVpZ2h0ID0gJzEwMHB4JzsKK2VkaXRhYmxlQXJlYS5z
dHlsZS53aWR0aCA9ICcxMDBweCc7CisvLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0
aGUgdG9wIG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdv
IG91dCBvZiB2aWV3ICh3aGVyZSBpdCBjYW4ndCBiZSBkcmFnZ2VkIHRvKQorZG9jdW1lbnQuYm9k
eS5pbnNlcnRCZWZvcmUoZWRpdGFibGVBcmVhLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwor
CitmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KQoreworICAgIHZh
ciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7
CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsK
K30KKworZnVuY3Rpb24gZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJlYShmaWxlcykgeworICAgIGV2
ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhmaWxlcyk7CisgICAgbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZWRpdGFibGVBcmVhKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZVRydWUoJ3N1Y2Nlc3NmdWxseVBhcnNlZCcpOwor
ICAgICAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3Nw
YW4+Jyk7CisKKyAgICAgICAgLy8gRG9uJ3QgcmVtb3ZlIHRoZSBlZGl0YWJsZSBub2RlLCBzaW5j
ZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBubyBzdHJheSBmaWxlIFVSTHMgd2VyZQorICAg
ICAgICAvLyBpbnNlcnRlZCBkdXJpbmcgdGhlIGRyb3AuCisKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworCisgICAgICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9
IG51bGw7CisgICAgfTsKKyAgICBkcmFnRmlsZXNPbnRvRWRpdGFibGVBcmVhKFsnRFJURmFrZUZp
bGUnXSk7CisgICAgdGVzdEZhaWxlZCgnVGhlIHRlc3Qgc2hvdWxkIGhhdmUgcmVzdWx0ZWQgaW4g
bmF2aWdhdGlvbicpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHJ1blRlc3QoKTsKK30gZWxzZSB7CisgICAgdGVz
dEZhaWxlZCgnVGhpcyB0ZXN0IGlzIG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBE
dW1wUmVuZGVyVHJlZScpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDZjZTcyZTlhYjQ5OWJiMjdhYmFhNDQ3Y2Y4
MDg0Yzg5NzY4NzRhOTIuLjhmYTQ2MTAxOTUwNmY3NzI2MzgxYTBiNmFmN2UwYzQ2NWFjNTA4ZjAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTEyMDUsNiArMTIwNSw4IEBAIEJVRzEwMzYxIFdJTiA6IGh0dHAvdGVzdHMv
bWlzYy9zaW5nbGUtY2hhcmFjdGVyLXBpLXN0eWxlc2hlZXQueGh0bWwgPSBGQUlMCiAvLyBXaW5k
b3dzIGlzIG1pc3NpbmcgdGhlIGdyZWVuIGJveC4gU3RhcnRlZCB0byBwYXNzIGluIHJvbGwgdG8g
V2ViS2l0IHI1MDMxMwogQlVHODcyOSBXSU4gREVCVUcgOiBodHRwL3Rlc3RzL211bHRpcGFydC9p
bnZhbGlkLWltYWdlLWRhdGEuaHRtbCA9IEZBSUwKIEJVRzg3MjkgU0xPVyBXSU4gUkVMRUFTRSA6
IGh0dHAvdGVzdHMvbXVsdGlwYXJ0L2ludmFsaWQtaW1hZ2UtZGF0YS5odG1sID0gRkFJTAorLy8g
Rmxha3kgb24gTGludXggZGJnLgorQlVHODcyOSBMSU5VWCBERUJVRyA6IGh0dHAvdGVzdHMvbXVs
dGlwYXJ0L2ludmFsaWQtaW1hZ2UtZGF0YS5odG1sID0gSU1BR0UgUEFTUwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8gTUFDIFBPUlQgVEVTVFMKQEAgLTI4NDUsOCArMjg0Nyw1IEBAIEJVRzQ1NTE4OiBodG1s
NWxpYi9ydW5uZXIuaHRtbCA9IFRFWFQKIAogQlVHNDU3MjAgV0lOIExJTlVYIDogd2Vic29ja2V0
L3Rlc3RzL3JlbG9hZC1jcmFzaC5odG1sID0gUEFTUyBDUkFTSAogCi0vLyBGYWlsaW5nIHNpbmNl
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzYwODU5Ci1CVUc0NjA5OCBNQUMgOiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC1saW5rLmh0bWwgPSBURVhUCi0KIC8vIEZhaWxpbmcgc2lu
Y2UgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjA4NjUKIEJVRzQ2MDk2IDogZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1hZnRlci1kb3VibGUtY2xpY2suaHRtbCA9
IFRFWFQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggYTljZTVlNWViYzliODc5MzdmMDc3
MzZjN2VhOTllZjYyNTM2M2Q2My4uNzExNGQ2ODFkZGJkZjVkYjUwZWZhYWIzY2QxNWYzZTViZDEx
MDVhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTY2NSw2ICs2NjUsNyBAQCBlZGl0
aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWlucHV0LXRleHRhcmVhLmh0bWwKIGVkaXRpbmcvcGFz
dGVib2FyZC9kcmFnLWRyb3AtdXJsLXRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
aW4tcGFzc3dvcmQtZmllbGQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctaW1hZ2UtaW4t
YWJvdXQtYmxhbmstZnJhbWUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1l
ZGl0YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3Mu
aHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5odG1sCiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW50by1hbmNob3ItdGV4dC5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9Ta2lwcGVkCmluZGV4IGZmMzQxZDI3ZmIwMTllNTg4YjU3YTcxMjUxYmFiMDRmNTY4ZDU5
YjkuLjhiMWUyZjdmYjJiMzU0ODExMjAzZjdmN2NjOTMwZWM3YzcxMjVhNzggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCkBAIC0yOTUsMyArMjk1LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRv
dy1wcm9wZXJ0aWVzLW9uLWRldmljZS1vcmllbnRhdGlvbi5odG1sCiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9tYXhpbXVtLWFnZS5odG1sCiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJy
b3IuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LXN1Y2Nlc3MuaHRtbAorCisj
IEZpbGVuYW1lcyBhcmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBo
dHRwczovL2J1Z3Mud2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgorZWRpdGluZy9wYXN0
ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApp
bmRleCBlMDFkYWNiNjEyZTI1YzNjMjE0Mjc4YmQ3MTNjMzNiOWM3MzliMzc3Li5hNmNlYjAzYTA2
NThlODQzMTdiNDcxNWI1ZmNkNDE4Njc3NDliZWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
QEAgLTgyOSw2ICs4MjksNyBAQCBodHRwL3Rlc3RzL21pc2Mvd2lsbENhY2hlUmVzcG9uc2UtZGVs
ZWdhdGUtY2FsbGJhY2suaHRtbAogCiAjIC0tLS0tLS0gbWlzc2luZyBldmVudFNlbmRlci5iZWdp
bkRyYWdXaXRoRmlsZXMKIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0RGF0YS1n
ZXREYXRhLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRt
bAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGZhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFzdC9ldmVudHMvZHJh
Zy10by1uYXZpZ2F0ZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IGQ2ZjNhZGMz
MzEyNmE1Y2I4Y2NlMjA0OWY3YzVkYjM2YWUyMjI3ZDcuLjQyMWI0MTQ3MThlYzE1ZGU5NjViYWUx
MmFkMzU1NGMyODkxYmIwMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xOTIsNiAr
MTkyLDcgQEAgaHR0cC90ZXN0cy93ZWJhcmNoaXZlCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzUyMzAz
OTY+IGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyBpcyB1bmltcGxlbWVudGVkCiBlZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5n
L3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2V2ZW50cy9kcmFnLXRvLW5hdmln
YXRlLmh0bWwKIGZhc3QvZXZlbnRzL3ByZXZlbnQtZHJhZy10by1uYXZpZ2F0ZS5odG1sCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk4Yzlj
ZWM1NDk4Nzc4NzZmYzRiMjk0YmYyNzYyMmI4ZGNkYzA2M2YuLmUwYTdkNTJhZGNiOGJlNDJlZGI2
ZWQzZjI4OTliYmZlMmIwM2E4NTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMDYtMDggIERhbmllbCBD
aGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBmaWxlbmFtZXMgdG8gVVJMcyBpbiBl
ZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVhc29ucywgd2UgZG9uJ3Qgd2FudCB0
byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisgICAgICAgIGNvbnRlbnQsIHNvIHdl
IGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAorCisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50RnJv
bURyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6Oik6CisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFu
ZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vcXQvRHJhZ0RhdGFR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UGxhaW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmdldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
CisKIDIwMTAtMDYtMDggIEVucmljbyBSb3MgIDxlcm9zQGNvZGVhdXJvcmEub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRl
eCBlYzY5ZWEwNzQzMTk4MDEwNzNlOTU2OGQ1Yzg4MmFmMTY0NzVhMGJmLi4wZDE3MGIzMjY0NGMw
MDgzOWY1MjY3YzMxNmVkOGU3NWRkN2RmMTVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTEwOSw5ICsxMDksOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1
bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhKiBkcmFnRAogICAgICAgICBpZiAoUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRyYWdEYXRhLT5hc0ZyYWdtZW50
KGRvY3VtZW50KSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKIAotICAgICAgICBpZiAo
ZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKCkpIHsKKyAgICAgICAgaWYgKGRyYWdEYXRhLT5jb250YWlu
c1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgewogICAgICAgICAgICAgU3Ry
aW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLT5hc1VSTCgmdGl0
bGUpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLT5hc1VSTChEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUpOwogICAgICAgICAgICAgaWYgKCF1cmwuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNo
b3IgPSBIVE1MQW5jaG9yRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgICAg
ICBhbmNob3ItPnNldEhyZWYodXJsKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAwMDdmN2Q3MTc1NTdl
MjM0ZmViNDVkN2FiODYwM2IwZWZiMmFiYThlLi5mYWQxOTdkMjU1ODU3MGM4YTAxOTAxZDMwYjc3
ZDc4MmRkZTFjNDUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03OCw2ICs3OCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKICAgICBjbGFzcyBEcmFnRGF0YSB7CiAgICAgcHVibGljOgorICAg
ICAgICBlbnVtIFNob3VsZENvbnZlcnRGaWxlbmFtZXMgeyBEb05vdENvbnZlcnRGaWxlbmFtZXMs
IENvbnZlcnRGaWxlbmFtZXMgfTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLy9GSVhN
RTogSW4gdGhlIGZ1dHVyZSB0aGUgV2ViS2l0IGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgaGVs
cGVyIGNsYXNzIHNob3VsZCBiZSBtb3ZlZCBpbnRvIFdlYkNvcmUsIAogICAgICAgICAvL2FmdGVy
IHdoaWNoIHRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGJlIHJlbW92ZWQKQEAgLTkyLDEwICs5NCwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQogICAgICAgICBEcmFnT3Bl
cmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAgICAgICAgIFBhc3NSZWZQdHI8Q2xpcGJvYXJk
PiBjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5KSBjb25zdDsKLSAgICAgICAg
Ym9vbCBjb250YWluc1VSTCgpIGNvbnN0OworICAgICAgICBib29sIGNvbnRhaW5zVVJMKFNob3Vs
ZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcyA9IENvbnZlcnRGaWxlbmFtZXMpIGNv
bnN0OwogICAgICAgICBib29sIGNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIGJv
b2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0OwotICAgICAgICBTdHJpbmcgYXNV
UkwoU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0OworICAgICAgICBTdHJpbmcgYXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzID0gQ29udmVydEZpbGVuYW1lcywgU3Ry
aW5nKiB0aXRsZSA9IDApIGNvbnN0OwogICAgICAgICBTdHJpbmcgYXNQbGFpblRleHQoKSBjb25z
dDsKICAgICAgICAgdm9pZCBhc0ZpbGVuYW1lcyhWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAg
ICAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9E
cmFnRGF0YUFuZHJvaWQuY3BwCmluZGV4IDM5YjI5NjM0MmY2MTZjYzBlZjJjZDUyNmY3N2IyMGJh
MDA1ZWJiYzcuLjU5N2IwNDExODA3NjlmMzhhNjc3ZjBhNDY2ZDMzMmQ5MWQ3MTI4ZDggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9EcmFnRGF0YUFuZHJvaWQuY3BwCkBAIC02OCwxMiAr
NjgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwo
KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1l
cyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAK
LVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBj
b25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCmluZGV4IDFjZTIwZGMyMmYzYjI5MThmMTQ0YWY2
NjYwZWY2ZmRjNTRhMzU2OWYuLmQ5NTdiN2QxYWMyYTY1YWFlMGUzZTk5ODcxM2QwM2EyMzliNjc4
MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1
bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNw
cApAQCAtNTYsMTcgKzU2LDE3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3Jl
YXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJu
IGNsaXBib2FyZC5yZWxlYXNlKCk7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkg
Y29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMg
Y29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKCkuaXNFbXB0eSgp
OworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZpbGVuYW1lcykuaXNFbXB0eSgpOwogfQogCi1T
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0Rh
dGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5n
KiB0aXRsZSkgY29uc3QKIHsKICAgICBTdHJpbmcgdXJsOwogICAgIGlmIChtX3BsYXRmb3JtRHJh
Z0RhdGEtPmhhc1ZhbGlkVVJMKCkpCiAgICAgICAgIHVybCA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+
Z2V0VVJMKCkuc3RyaW5nKCk7Ci0gICAgZWxzZSBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+Zmls
ZW5hbWVzLmlzRW1wdHkoKSkgeworICAgIGVsc2UgaWYgKGNvbnZlcnRGaWxlbmFtZXMgPT0gQ29u
dmVydEZpbGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5h
bWVzWzBdOwogICAgICAgICBmaWxlTmFtZSA9IENocm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBh
dGgoZmlsZU5hbWUpOwogICAgICAgICB1cmwgPSBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VS
TChmaWxlTmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5k
ZXggM2Y5ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIyYTk5YmZmMGNlNThkYS4uM2Y1M2ZkMWQzZThm
ZmM3MTlhYjEwMDhlYThmNzBmMTQ0OTIzNmU5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRh
RWZsLmNwcApAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0
aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0
YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAor
U3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxl
bmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJj
NzNkMmUxNThkYTE1ZWI4MzVhNmEuLjdiMTY5OTUwYzIxNGU4MjZiOTdmMWI4MGFhNDIxNzA0ZDEx
ODNjMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2Nywx
MiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QK
K2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVy
dEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Ry
YWdEYXRhSGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3
MWYxNGQuLmFmMmZmZGNkOWU4ODE4NDI0NGE0ZjA5NDFlMDk0MzYxNDQ1ODJkNGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgp
OwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0
YTo6YXNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcq
IHRpdGxlKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCAwMmE2YWY3MzY4ZjgwZWY5
MWExY2M2M2E3OTY5ODhlZDcxOGI2NzM5Li44ODQ5ODhlYTE4YjBiOWUyYTY5NmQ5OWNkMzRjZmQw
YzNjZDJlOWI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5t
bQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMTEzLDEzICsx
MTMsMTUgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFt0eXBlcyBjb3VudF0gIT0gMDsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENv
bnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKLSAgICByZXR1cm4gIWFz
VVJMKCkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoY29udmVydEZpbGVuYW1lcykuaXNF
bXB0eSgpOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBj
b25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZl
cnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBj
b252ZXJ0RmlsZW5hbWVzLgorICAgICh2b2lkKWNvbnZlcnRGaWxlbmFtZXM7CiAgICAgcmV0dXJu
IG1fcGFzdGVib2FyZEhlbHBlci0+dXJsRnJvbVBhc3RlYm9hcmQoW21fcGxhdGZvcm1EcmFnRGF0
YSBkcmFnZ2luZ1Bhc3RlYm9hcmRdLCB0aXRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRh
UXQuY3BwCmluZGV4IDQxZmU0OGU0ZmJlYmVjMzVkNzE1YzY1ODA4NzQyYjM2Y2E1OWRlNGQuLmJj
MTY0MWVkMjQyYTZhNGI0YmExZWY4Njk3YWYwZDIzMGI4ZGM4MTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
cmFnRGF0YVF0LmNwcApAQCAtOTAsNyArOTAsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRleHQ7CiAKICAgICAvLyBGSVhNRTogU2hvdWxk
IGhhbmRsZSByaWNoIHRleHQgaGVyZQotICAgIHJldHVybiBhc1VSTCgwKTsKKyAgICByZXR1cm4g
YXNVUkwoRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAwKTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFz
Q29sb3IoKSBjb25zdApAQCAtMTEyLDE1ICsxMTIsMTcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8
fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzSHRtbCgpIHx8IG1fcGxh
dGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VS
TCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5h
bWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFVzZSBjb252ZXJ0
RmlsZW5hbWVzLgogICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVXJscygpOwogfQogCi1T
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyopIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFz
VVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKikgY29u
c3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRGaWxlbmFtZXMuCiAgICAgaWYgKCFtX3Bs
YXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBRTGlzdDxRVXJs
PiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmluZGV4IGQzNDBjODlkMmRmN2MwMmQ4ZWQ2MjhiODEzZjhlNzMwYTkzMTg2N2EuLjVh
ODQ3YjZjYmQ2MjA1ZjYwNDA5MzgwM2QyMWViYTk2NjY4YjcxY2EKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGlj
IGJvb2wgdXJsRnJvbVBhdGgoQ0ZTdHJpbmdSZWYgcGF0aCwgU3RyaW5nJiB1cmwpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVN0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJv
b2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUpCitTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiBk
YXRhT2JqZWN0LCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzLCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogewogICAgIFNUR01FRElVTSBzdG9y
ZTsKICAgICBTdHJpbmcgdXJsOwpAQCAtMzExLDMyICszMTEsMzQgQEAgU3RyaW5nIGdldFVSTChJ
RGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSkKICAg
ICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgIAogICAgICAgICBSZWxlYXNl
U3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotICAgIH0gZWxzZSBp
ZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCksICZzdG9y
ZSkpKSB7Ci0gICAgICAgIC8vZmlsZSB1c2luZyB1bmljb2RlCi0gICAgICAgIHdjaGFyX3QqIGRh
dGEgPSAod2NoYXJfdCopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKLSAgICAgICAgaWYgKGRh
dGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEp
KSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyhB
ZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVbmlDaGFyKilkYXRhLCB3Y3NsZW4oZGF0YSkpKTsKLSAgICAgICAgICAgIGlmICh1
cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgewotICAgICAgICAgICAgICAg
IGlmICh0aXRsZSkKLSAgICAgICAgICAgICAgICAgICAgKnRpdGxlID0gdXJsOwotICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoY29udmVydEZpbGVuYW1lcyA9
PSBEcmFnRGF0YTo6Q29udmVydEZpbGVuYW1lcykgeworICAgICAgICBpZiAoU1VDQ0VFREVEKGRh
dGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAg
ICAgICAvLyBmaWxlIHVzaW5nIHVuaWNvZGUKKyAgICAgICAgICAgIHdjaGFyX3QqIGRhdGEgPSAo
d2NoYXJfdCopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIGlmIChkYXRh
ICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzKGRhdGEpIHx8IFBhdGhJc1VOQyhkYXRhKSkp
IHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOworICAgICAgICAgICAgICAg
IGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAodGl0bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1
cmw7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUu
aEdsb2JhbCk7ICAgICAgCi0gICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICB9
IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCks
ICZzdG9yZSkpKSB7Ci0gICAgICAgIC8vZmlsZW5hbWUgdXNpbmcgYXNjaWkKLSAgICAgICAgY2hh
ciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgICAKLSAgICAg
ICAgaWYgKGRhdGEgJiYgZGF0YVswXSAmJiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJ
c1VOQ0EoZGF0YSkpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhB
c0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZGF0YSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOwotICAgICAgICAgICAgaWYg
KHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRpdGxlKQotICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUu
aEdsb2JhbCk7CisgICAgICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQo
KSwgJnN0b3JlKSkpIHsKKyAgICAgICAgICAgIC8vIGZpbGVuYW1lIHVzaW5nIGFzY2lpCisgICAg
ICAgICAgICBjaGFyKiBkYXRhID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7Cisg
ICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkg
fHwgUGF0aElzVU5DQShkYXRhKSkpIHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOworICAg
ICAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAqdGl0bGUgPSB1cmw7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhz
dG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAg
ICAgICAgfQotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCi0gICAg
ICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICB9CiAgICAgcmV0dXJuIHVybDsKIH0K
QEAgLTM1MCwyMCArMzUyLDIxIEBAIFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqIGRh
dGFPYmplY3QsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgICAgIC8vdW5pY29kZSB0ZXh0CiAgICAgICAg
IFVDaGFyKiBkYXRhID0gKFVDaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAg
ICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2Jh
bCk7ICAgICAgCisgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAg
UmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9
IGVsc2UgaWYgKFNVQ0NFRURFRChkYXRhT2JqZWN0LT5HZXREYXRhKHBsYWluVGV4dEZvcm1hdCgp
LCAmc3RvcmUpKSkgewogICAgICAgICAvL2FzY2lpIHRleHQKICAgICAgICAgY2hhciogZGF0YSA9
IChjaGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5n
KGRhdGEpOwotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCisgICAg
ICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1
bSgmc3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgewotICAgICAg
ICAvL0lmIGEgZmlsZSBpcyBkcm9wcGVkIG9uIHRoZSB3aW5kb3csIGl0IGRvZXMgbm90IHByb3Zp
ZGUgZWl0aGVyIG9mIHRoZSAKLSAgICAgICAgLy9wbGFpbiB0ZXh0IGZvcm1hdHMsIHNvIGhlcmUg
d2UgdHJ5IHRvIGZvcmNpYmx5IGdldCBhIHVybC4KLSAgICAgICAgdGV4dCA9IGdldFVSTChkYXRh
T2JqZWN0LCBzdWNjZXNzKTsKKyAgICAgICAgLy8gRklYTUU6IG9yaWdpbmFsbHksIHRoaXMgbG9n
aWMgd2FzIHNvIGRyb3BwaW5nIGZpbGVzIG9uIFdlYktpdCB3b3VsZCBpbnNlcnQgdGhlIGZpbGVu
YW1lLgorICAgICAgICAvLyBQZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4ODI2LCB0aGlzIGlzIHVuZGVzaXJhYmxlLCBzbyBtYXliZSB0aGlzCisgICAgICAgIC8v
IGxpbmUgY2FuIGJlIHJlbW92ZWQuCisgICAgICAgIHRleHQgPSBnZXRVUkwoZGF0YU9iamVjdCwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgc3VjY2Vzcyk7CiAgICAgICAgIHN1Y2Nl
c3MgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggZWMxNTIzMWMzYmFkOGQxNTM1MmFjMzQw
ZGVlYTNjODcxNDQ2ZjMwOC4uZDU2MmE0NjlmZGMxYTU2MjA5MmI0NzJmYzc5YWE0Y2I0MGUwY2E4
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAg
LTYxLDkgKzYxLDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9t
RmlsZW5hbWVzKERvY3VtZW50KiwgY29uc3QgSURhdGFPYmplY3QqCiBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0YU9iamVjdCopOwog
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21DRl9IVE1MKERvY3VtZW50
KiwgY29uc3QgU3RyaW5nJiBjZl9odG1sKTsKIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCos
IGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKK1N0cmluZyBnZXRVUkwoSURhdGFP
YmplY3QqLCBEcmFnRGF0YTo6U2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVz
LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlID0gMCk7CiBTdHJpbmcgZ2V0UGxhaW5UZXh0
KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorI2VuZGlmIC8vIENsaXBib2FyZFV0aWxpdGllc1dpbl9oCisKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDMyYjY1NjE4MjY0Yjg5YTgyMjg4YWJmZmE0ZWM2
MTEyYTQ1MjhhYWMuLjNjM2EyMDU5MGUxYmY4MmU1MThiYzhhYzdjN2Q4ZWJlYmQyMGIyMjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIFN0
cmluZyBDbGlwYm9hcmRXaW46OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNj
ZXNzKSBjb25zdAogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCiAg
ICAgICAgIHJldHVybiBnZXRQbGFpblRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsK
ICAgICBlbHNlIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgCi0gICAgICAg
IHJldHVybiBnZXRVUkwobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICAgICAgcmV0
dXJuIGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxl
bmFtZXMsIHN1Y2Nlc3MpOwogICAgIAogICAgIHJldHVybiAiIjsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcAppbmRleCAzMDQ4N2I4ZjAxYTM5NGY4ZjE4YzJkOWQzODM2Nzg5Y2Iw
Njg1YzYwLi40Njg0MWVhN2YyMGI5MmNlZDgzZmUyMzJjNTdlMjc1MzhjYTE1Y2QyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC00NCwxOCArNDQsMTkgQEAgUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgbV9w
bGF0Zm9ybURyYWdEYXRhLCBwb2xpY3kpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VS
TCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5h
bWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNVQ0NFRURFRChtX3Bs
YXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YSh1cmxXRm9ybWF0KCkpKSAKICAgICAgICAgfHwg
U1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybEZvcm1hdCgpKSkK
LSAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZp
bGVuYW1lV0Zvcm1hdCgpKSkgCi0gICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0Rh
dGEtPlF1ZXJ5R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpKSk7CisgICAgICAgIHx8IChjb252ZXJ0
RmlsZW5hbWVzID09IENvbnZlcnRGaWxlbmFtZXMKKyAgICAgICAgICAgICYmIChTVUNDRUVERUQo
bV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCkpKQorICAg
ICAgICAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0
YShmaWxlbmFtZUZvcm1hdCgpKSkpKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJp
bmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0Rmls
ZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgYm9v
bCBzdWNjZXNzOwotICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURyYWdEYXRhLCBzdWNjZXNz
LCB0aXRsZSk7CisgICAgcmV0dXJuIGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGNvbnZlcnRG
aWxlbmFtZXMsIHN1Y2Nlc3MsIHRpdGxlKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNG
aWxlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRh
V2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcAppbmRl
eCA4ODFkN2Q0ZWUwNGQyYzg2OGM2Y2ViZDJmNGIwOWUxNTA1MzQ4M2Y2Li41YTg1MWVkNjlhNTli
YjhhNjU2ZTQxMTM0OWRhODljMGQyY2M0OGFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJh
Z0RhdGFXaW5jZS5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBj
bwogICAgIHJldHVybiAwOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0
Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZl
cnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgRHJh
Z0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4
LmNwcAppbmRleCA5N2VhMzhjNTFiOWFiNzgxM2E3ZmVjZTk5NzkyMTZhNmZiN2Q2NDQ5Li5iZjEx
YzAzZGJjNjg0ZjJjZmMyMjQ5MDcxZTllNzJiMzQxNjhhNTE1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJh
Z0RhdGFXeC5jcHAKQEAgLTc2LDEyICs3NiwxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1ib29s
IERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VS
TChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRp
dGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVz
IGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58202</attachid>
            <date>2010-06-08 17:38:37 -0700</date>
            <delta_ts>2010-06-08 18:48:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100608173836.patch</filename>
            <type>text/plain</type>
            <size>26908</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMjViN2FkNTE3ODg5NTRkNzMxODczZDhkMjYzMDNiMTBlMWI1Li5hOTRmNzZi
MTBmMmU5ZTg2ZmI1NjQxOTQxNDEzYzUyYWFjYTliYjY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDggIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA4ICBFcmlrIEFydmlkc3NvbiAg
PGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI2MmNlZTJjZWQ0Zjc3
NDA4ZjFlNWE3MmRjMzQ3NDdjNjU5NWZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOCBAQAorVGVzdHMgdGhhdCBkcmFnZ2luZyBhIGZpbGUgaW50byBhbiBlZGl0YWJs
ZSBhcmVhIGRvZXMgbm90IGluc2VydCBhIGZpbGVuYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFn
LXRvLWVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZlYmU3NTA3NWQzYzk5ZDFlMmM3YjJk
ODIzZDc4NDA5MjdlYzIyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvc2NyaXB0LXRlc3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmViMTIyZTFiNzYyM2ZmYmVkMTA3MmQ1MDNhYmMxYWQyZjQ3Y2MyODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3Rz
L2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcwpAQCAtMCwwICsxLDQ3IEBACitkZXNjcmlwdGlvbign
VGVzdHMgdGhhdCBkcmFnZ2luZyBhIGZpbGUgaW50byBhbiBlZGl0YWJsZSBhcmVhIGRvZXMgbm90
IGluc2VydCBhIGZpbGVuYW1lLicpOworCit2YXIgZWRpdGFibGVBcmVhID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitlZGl0YWJsZUFyZWEuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsK
K2VkaXRhYmxlQXJlYS5zdHlsZS5iYWNrZ3JvdW5kID0gJ2dyZWVuJzsKK2VkaXRhYmxlQXJlYS5z
dHlsZS5oZWlnaHQgPSAnMTAwcHgnOworZWRpdGFibGVBcmVhLnN0eWxlLndpZHRoID0gJzEwMHB4
JzsKKy8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBz
byB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJl
IGl0IGNhbid0IGJlIGRyYWdnZWQgdG8pCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlZGl0
YWJsZUFyZWEsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG1vdmVNb3Vz
ZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFn
RmlsZXNPbnRvRWRpdGFibGVBcmVhKGZpbGVzKSB7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKGZpbGVzKTsKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlZGl0YWJs
ZUFyZWEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgnc3VjY2Vzc2Z1bGx5UGFyc2VkJyk7CisgICAgICAgIGRlYnVnKCc8YnIg
Lz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKKworICAgICAgICAv
LyBEb24ndCByZW1vdmUgdGhlIGVkaXRhYmxlIG5vZGUsIHNpbmNlIHdlIHdhbnQgdG8gbWFrZSBz
dXJlIHRoZXJlIG5vIHN0cmF5IGZpbGUgVVJMcyB3ZXJlCisgICAgICAgIC8vIGluc2VydGVkIGR1
cmluZyB0aGUgZHJvcC4KKworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisKKyAgICAgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gbnVsbDsKKyAgICB9OworICAg
IGRyYWdGaWxlc09udG9FZGl0YWJsZUFyZWEoWydEUlRGYWtlRmlsZSddKTsKKyAgICB0ZXN0RmFp
bGVkKCdUaGUgdGVzdCBzaG91bGQgaGF2ZSByZXN1bHRlZCBpbiBuYXZpZ2F0aW9uJyk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCitpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgcnVuVGVzdCgpOworfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3Qg
aXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlJyk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGE5Y2U1ZTVlYmM5Yjg3OTM3ZjA3NzM2Yzdl
YTk5ZWY2MjUzNjNkNjMuLjcxMTRkNjgxZGRiZGY1ZGI1MGVmYWFiM2NkMTVmM2U1YmQxMTA1YWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC02NjUsNiArNjY1LDcgQEAgZWRpdGluZy9w
YXN0ZWJvYXJkL2RyYWctZHJvcC1pbnB1dC10ZXh0YXJlYS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLXVybC10ZXh0Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBh
c3N3b3JkLWZpZWxkLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWltYWdlLWluLWFib3V0
LWJsYW5rLWZyYW1lLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFi
bGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwK
IGVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0YS10ZXh0LXBsYWluLWRyb3AuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWludG8tYW5jaG9yLXRleHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
U2tpcHBlZAppbmRleCBmZjM0MWQyN2ZiMDE5ZTU4OGI1N2E3MTI1MWJhYjA0ZjU2OGQ1OWI5Li44
YjFlMmY3ZmIyYjM1NDgxMTIwM2Y3ZjdjYzkzMGVjN2M3MTI1YTc4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZApAQCAtMjk1LDMgKzI5NSw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24v
bWF4aW11bS1hZ2UuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLmh0
bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1zdWNjZXNzLmh0bWwKKworIyBGaWxl
bmFtZXMgYXJlbid0IGZpbHRlcmVkIG91dCBmcm9tIGVkaXQgZHJhZ3MgeWV0LCBzZWUgaHR0cHM6
Ly9idWdzLndla2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKK2VkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
ZTAxZGFjYjYxMmUyNWMzYzIxNDI3OGJkNzEzYzMzYjljNzM5YjM3Ny4uYTZjZWIwM2EwNjU4ZTg0
MzE3YjQ3MTViNWZjZDQxODY3NzQ5YmVlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04
MjksNiArODI5LDcgQEAgaHR0cC90ZXN0cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRl
LWNhbGxiYWNrLmh0bWwKIAogIyAtLS0tLS0tIG1pc3NpbmcgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0
YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWwKIGZhc3QvZXZlbnRzL2RyYWctdG8t
bmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBkNmYzYWRjMzMxMjZh
NWNiOGNjZTIwNDlmN2M1ZGIzNmFlMjIyN2Q3Li40MjFiNDE0NzE4ZWMxNWRlOTY1YmFlMTJhZDM1
NTRjMjg5MWJiMDJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTkyLDYgKzE5Miw3
IEBAIGh0dHAvdGVzdHMvd2ViYXJjaGl2ZQogCiAjIDxyZGFyOi8vcHJvYmxlbS81MjMwMzk2PiBl
dmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgaXMgdW5pbXBsZW1lbnRlZAogZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbAorZWRpdGluZy9wYXN0
ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmls
ZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0ZS5o
dG1sCiBmYXN0L2V2ZW50cy9wcmV2ZW50LWRyYWctdG8tbmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWE1MWYyNmI3
ODJmMDRhNzRlZGY2M2VjZTY0ZjVkZGNmZWJkOWQ0Li45Mjg2ZDk1ZTk2OTY4N2YwYTBkNmI3ODhm
MTQ1NWYyZGU1Y2UzM2M1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEwLTA2LTA4ICBEYW5pZWwgQ2hlbmcg
IDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERvbid0IGNvbnZlcnQgZmlsZW5hbWVzIHRvIFVSTHMgaW4gZWRpdCBk
cmFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
ODI2CisKKyAgICAgICAgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvbid0IHdhbnQgdG8gZXhw
b3NlIGZpbGUgc3lzdGVtIHBhdGhzIHRvIHdlYgorICAgICAgICBjb250ZW50LCBzbyB3ZSBmaWx0
ZXIgdGhlbSBvdXQgb2YgZWRpdCBkcmFncy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFn
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjopOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0
YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBs
YWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJh
Z0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0v
d2luY2UvRHJhZ0RhdGFXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAy
MDEwLTA2LTA4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGVjNjll
YTA3NDMxOTgwMTA3M2U5NTY4ZDVjODgyYWYxNjQ3NWEwYmYuLjBkMTcwYjMyNjQ0YzAwODM5ZjUy
NjdjMzE2ZWQ4ZTc1ZGQ3ZGYxNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTA5LDkg
KzEwOSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEqIGRyYWdECiAgICAgICAgIGlmIChQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0RhdGEtPmFzRnJhZ21lbnQoZG9jdW1l
bnQpKQogICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogCi0gICAgICAgIGlmIChkcmFnRGF0
YS0+Y29udGFpbnNVUkwoKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKERy
YWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGl0
bGU7Ci0gICAgICAgICAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKCZ0aXRsZSk7Cisg
ICAgICAgICAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKERyYWdEYXRhOjpEb05vdENv
bnZlcnRGaWxlbmFtZXMsICZ0aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhU
TUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hv
ci0+c2V0SHJlZih1cmwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDAwN2Y3ZDcxNzU1N2UyMzRmZWI0
NWQ3YWI4NjAzYjBlZmIyYWJhOGUuLmZhZDE5N2QyNTU4NTcwYzhhMDE5MDFkMzBiNzdkNzgyZGRl
MWM0NTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTc4LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogICAgIGNsYXNzIERyYWdEYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIGVu
dW0gU2hvdWxkQ29udmVydEZpbGVuYW1lcyB7IERvTm90Q29udmVydEZpbGVuYW1lcywgQ29udmVy
dEZpbGVuYW1lcyB9OworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAvL0ZJWE1FOiBJbiB0
aGUgZnV0dXJlIHRoZSBXZWJLaXQgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBoZWxwZXIgY2xh
c3Mgc2hvdWxkIGJlIG1vdmVkIGludG8gV2ViQ29yZSwgCiAgICAgICAgIC8vYWZ0ZXIgd2hpY2gg
dGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgYmUgcmVtb3ZlZApAQCAtOTIsMTAgKzk0LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s7IH0KICAgICAgICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNyZWF0
ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0OwotICAgICAgICBib29sIGNv
bnRhaW5zVVJMKCkgY29uc3Q7CisgICAgICAgIGJvb2wgY29udGFpbnNVUkwoU2hvdWxkQ29udmVy
dEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7CiAg
ICAgICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICAgICAgYm9vbCBjb250
YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyBhc1VSTChTdHJp
bmcqIHRpdGxlID0gMCkgY29uc3Q7CisgICAgICAgIFN0cmluZyBhc1VSTChTaG91bGRDb252ZXJ0
RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRp
dGxlID0gMCkgY29uc3Q7CiAgICAgICAgIFN0cmluZyBhc1BsYWluVGV4dCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgICAgIENv
bG9yIGFzQ29sb3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9p
ZC9EcmFnRGF0YUFuZHJvaWQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRh
QW5kcm9pZC5jcHAKaW5kZXggMzliMjk2MzQyZjYxNmNjMGVmMmNkNTI2Zjc3YjIwYmEwMDVlYmJj
Ny4uNTk3YjA0MTE4MDc2OWYzOGE2NzdmMGE0NjZkMzMyZDkxZDcxMjhkOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAKQEAgLTY4LDEyICs2OCwxMiBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0
Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZl
cnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotU3RyaW5n
IERyYWdEYXRhOjphc1VSTChTdHJpbmcqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChT
aG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyopIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RHJhZ0RhdGFDaHJvbWl1bS5jcHAKaW5kZXggMWNlMjBkYzIyZjNiMjkxOGYxNDRhZjY2NjBlZjZm
ZGM1NGEzNTY5Zi4uZDk1N2I3ZDFhYzJhNjVhYWUwZTNlOTk4NzEzZDAzYTIzOWI2NzgyMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwCkBAIC01
NiwxNyArNTYsMTcgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRhOjpjcmVhdGVDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY28KICAgICByZXR1cm4gY2xpcGJv
YXJkLnJlbGVhc2UoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAor
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0
RmlsZW5hbWVzKSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoKS5pc0VtcHR5KCk7CisgICAg
cmV0dXJuICFhc1VSTChjb252ZXJ0RmlsZW5hbWVzKS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBE
cmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNV
UkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxl
KSBjb25zdAogewogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YS0+
aGFzVmFsaWRVUkwoKSkKICAgICAgICAgdXJsID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5nZXRVUkwo
KS5zdHJpbmcoKTsKLSAgICBlbHNlIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMu
aXNFbXB0eSgpKSB7CisgICAgZWxzZSBpZiAoY29udmVydEZpbGVuYW1lcyA9PSBDb252ZXJ0Rmls
ZW5hbWVzICYmICFtX3BsYXRmb3JtRHJhZ0RhdGEtPmZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgU3RyaW5nIGZpbGVOYW1lID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXNbMF07
CiAgICAgICAgIGZpbGVOYW1lID0gQ2hyb21pdW1CcmlkZ2U6OmdldEFic29sdXRlUGF0aChmaWxl
TmFtZSk7CiAgICAgICAgIHVybCA9IENocm9taXVtQnJpZGdlOjpmaWxlUGF0aFRvVVJMKGZpbGVO
YW1lKS5zdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRh
RWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAppbmRleCAzZjll
Y2NiNzc2OWQxZDYyNmM5ZDIzYjcwMjJhOTliZmYwY2U1OGRhLi4zZjUzZmQxZDNlOGZmYzcxOWFi
MTAwOGVhOGY3MGYxNDQ5MjM2ZTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9E
cmFnRGF0YUVmbC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3Bw
CkBAIC03MSwxMiArNzEsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29u
dGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250
YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChTaG91bGRDb252ZXJ0
RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcg
RHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcywg
U3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNjliMzE2MTQzMTgwNzE0YjRhYmM3M2QyZTE1
OGRhMTVlYjgzNWE2YS4uN2IxNjk5NTBjMjE0ZTgyNmI5N2YxYjgwYWE0MjE3MDRkMTE4M2MwNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtNjcsMTIgKzY3LDEyIEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5h
bWVzKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjph
c1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChTaG91bGRD
b252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9o
YWlrdS9EcmFnRGF0YUhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFI
YWlrdS5jcHAKaW5kZXggNGEyMDE0Nzc2ZTAzNjE5MWYzYzQ1MDUxNmNlOGE0ZTk0ZDcxZjE0ZC4u
YWYyZmZkY2Q5ZTg4MTg0MjQ0YTRmMDk0MWUwOTQzNjE0NDU4MmQ0ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2hhaWt1L0RyYWdEYXRhSGFpa3UuY3BwCkBAIC04NiwxMyArODYsMTMgQEAgYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRh
aW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgpIHx8IGNvbnRhaW5zUGxhaW5UZXh0KCk7CiB9CiAK
LWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERy
YWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VS
TChTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUp
IGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDAyYTZhZjczNjhmODBlZjkxYTFjYzYz
YTc5Njk4OGVkNzE4YjY3MzkuLjg4NDk4OGVhMThiMGI5ZTJhNjk2ZDk5Y2QzNGNmZDBjM2NkMmU5
YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0xMTMsMTMgKzExMywxNSBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gW3R5cGVzIGNvdW50XSAhPSAwOwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoU2hvdWxkQ29udmVydEZp
bGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzKSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoKS5p
c0VtcHR5KCk7CisgICAgcmV0dXJuICFhc1VSTChjb252ZXJ0RmlsZW5hbWVzKS5pc0VtcHR5KCk7
CiB9CiAgICAgCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitT
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRG
aWxlbmFtZXMuCisgICAgKHZvaWQpY29udmVydEZpbGVuYW1lczsKICAgICByZXR1cm4gbV9wYXN0
ZWJvYXJkSGVscGVyLT51cmxGcm9tUGFzdGVib2FyZChbbV9wbGF0Zm9ybURyYWdEYXRhIGRyYWdn
aW5nUGFzdGVib2FyZF0sIHRpdGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9EcmFnRGF0YVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAK
aW5kZXggNDFmZTQ4ZTRmYmViZWMzNWQ3MTVjNjU4MDg3NDJiMzZjYTU5ZGU0ZC4uYmMxNjQxZWQy
NDJhNmE0YjRiYTFlZjg2OTdhZjBkMjMwYjhkYzgxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRh
UXQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBj
b25zdAogICAgICAgICByZXR1cm4gdGV4dDsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgaGFuZGxl
IHJpY2ggdGV4dCBoZXJlCi0gICAgcmV0dXJuIGFzVVJMKDApOworICAgIHJldHVybiBhc1VSTChE
b05vdENvbnZlcnRGaWxlbmFtZXMsIDApOwogfQogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigp
IGNvbnN0CkBAIC0xMTIsMTUgKzExMiwxNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gY29udGFpbnNDb2xvcigpIHx8IGNvbnRh
aW5zVVJMKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNIdG1sKCkgfHwgbV9wbGF0Zm9ybURy
YWdEYXRhLT5oYXNUZXh0KCk7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29u
c3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29u
dmVydEZpbGVuYW1lcykgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNlIGNvbnZlcnRGaWxlbmFt
ZXMuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVcmxzKCk7CiB9CiAKLVN0cmluZyBE
cmFnRGF0YTo6YXNVUkwoU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hv
dWxkQ29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqKSBjb25zdAogewor
ICAgIC8vIEZJWE1FOiBVc2UgY29udmVydEZpbGVuYW1lcy4KICAgICBpZiAoIW1fcGxhdGZvcm1E
cmFnRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFFMaXN0PFFVcmw+IHVybHMg
PSBtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybHMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
aW5kZXggZDM0MGM4OWQyZGY3YzAyZDhlZDYyOGI4MTNmOGU3MzBhOTMxODY3YS4uNWE4NDdiNmNi
ZDYyMDVmNjA0MDkzODAzZDIxZWJhOTY2NjhiNzFjYQotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgYm9vbCB1
cmxGcm9tUGF0aChDRlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3Vj
Y2VzcywgU3RyaW5nKiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIERyYWdEYXRhOjpTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIGJv
b2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAg
IFN0cmluZyB1cmw7CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJMKElEYXRhT2Jq
ZWN0KiBkYXRhT2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogICAgICAgICBH
bG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRp
dW0oJnN0b3JlKTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChTVUND
RUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsK
LSAgICAgICAgLy9maWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCogZGF0YSA9ICh3
Y2hhcl90KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAoZGF0YSAmJiBk
YXRhWzBdICYmIChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0YSkpKSB7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0Ys
IENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0
IFVuaUNoYXIqKWRhdGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYgKHVybEZyb21Q
YXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRp
dGxlKQotICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAg
c3VjY2VzcyA9IHRydWU7CisgICAgfSBlbHNlIGlmIChjb252ZXJ0RmlsZW5hbWVzID09IERyYWdE
YXRhOjpDb252ZXJ0RmlsZW5hbWVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YU9iamVj
dC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAgICAgICAgIC8v
IGZpbGUgdXNpbmcgdW5pY29kZQorICAgICAgICAgICAgd2NoYXJfdCogZGF0YSA9ICh3Y2hhcl90
KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0
YVswXSAmJiAoUGF0aEZpbGVFeGlzdHMoZGF0YSkgfHwgUGF0aElzVU5DKGRhdGEpKSkgeworICAg
ICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJpbmcoQWRvcHRD
RiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVW5pQ2hhciopZGF0YSwgd2NzbGVuKGRhdGEpKSk7CisgICAgICAgICAgICAgICAgaWYgKHVy
bEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKKyAg
ICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFs
KTsgICAgICAKLSAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwotICAgIH0gZWxzZSBp
ZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSwgJnN0b3Jl
KSkpIHsKLSAgICAgICAgLy9maWxlbmFtZSB1c2luZyBhc2NpaQotICAgICAgICBjaGFyKiBkYXRh
ID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgIAotICAgICAgICBpZiAo
ZGF0YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0aElzVU5DQShk
YXRhKSkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aEFzQ0ZTdHJp
bmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7Ci0gICAgICAgICAgICBpZiAodXJsRnJv
bVBhdGgocGF0aEFzQ0ZTdHJpbmcuZ2V0KCksIHVybCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
dGl0bGUpCi0gICAgICAgICAgICAgICAgICAgICp0aXRsZSA9IHVybDsKLSAgICAgICAgICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFs
KTsKKyAgICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChTVUNDRUVERUQoZGF0YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZUZvcm1hdCgpLCAmc3Rv
cmUpKSkgeworICAgICAgICAgICAgLy8gZmlsZW5hbWUgdXNpbmcgYXNjaWkKKyAgICAgICAgICAg
IGNoYXIqIGRhdGEgPSAoY2hhciopR2xvYmFsTG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAg
ICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhGaWxlRXhpc3RzQShkYXRhKSB8fCBQYXRo
SXNVTkNBKGRhdGEpKSkgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cGF0aEFzQ0ZTdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkYXRhLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJKSk7CisgICAgICAgICAg
ICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICh0aXRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICp0aXRs
ZSA9IHVybDsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhH
bG9iYWwpOworICAgICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICB9
Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKLSAgICAgICAgUmVs
ZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgIH0KICAgICByZXR1cm4gdXJsOwogfQpAQCAtMzUw
LDIwICszNTIsMjEgQEAgU3RyaW5nIGdldFBsYWluVGV4dChJRGF0YU9iamVjdCogZGF0YU9iamVj
dCwgYm9vbCYgc3VjY2VzcykKICAgICAgICAgLy91bmljb2RlIHRleHQKICAgICAgICAgVUNoYXIq
IGRhdGEgPSAoVUNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHRleHQg
PSBTdHJpbmcoZGF0YSk7Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAg
ICAKKyAgICAgICAgR2xvYmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNl
U3RnTWVkaXVtKCZzdG9yZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSBp
ZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEocGxhaW5UZXh0Rm9ybWF0KCksICZzdG9y
ZSkpKSB7CiAgICAgICAgIC8vYXNjaWkgdGV4dAogICAgICAgICBjaGFyKiBkYXRhID0gKGNoYXIq
KUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CiAgICAgICAgIHRleHQgPSBTdHJpbmcoZGF0YSk7
Ci0gICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsgICAgICAKKyAgICAgICAgR2xv
YmFsVW5sb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9y
ZSk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vSWYg
YSBmaWxlIGlzIGRyb3BwZWQgb24gdGhlIHdpbmRvdywgaXQgZG9lcyBub3QgcHJvdmlkZSBlaXRo
ZXIgb2YgdGhlIAotICAgICAgICAvL3BsYWluIHRleHQgZm9ybWF0cywgc28gaGVyZSB3ZSB0cnkg
dG8gZm9yY2libHkgZ2V0IGEgdXJsLgotICAgICAgICB0ZXh0ID0gZ2V0VVJMKGRhdGFPYmplY3Qs
IHN1Y2Nlc3MpOworICAgICAgICAvLyBGSVhNRTogb3JpZ2luYWxseSwgdGhpcyBsb2dpYyB3YXMg
c28gZHJvcHBpbmcgZmlsZXMgb24gV2ViS2l0IHdvdWxkIGluc2VydCB0aGUgZmlsZW5hbWUuCisg
ICAgICAgIC8vIFBlciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4
MjYsIHRoaXMgaXMgdW5kZXNpcmFibGUsIHNvIG1heWJlIHRoaXMKKyAgICAgICAgLy8gbGluZSBj
YW4gYmUgcmVtb3ZlZC4KKyAgICAgICAgdGV4dCA9IGdldFVSTChkYXRhT2JqZWN0LCBEcmFnRGF0
YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzKTsKICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CiAgICAgfQogICAgIHJldHVybiB0ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCBlYzE1MjMxYzNiYWQ4ZDE1MzUyYWMzNDBkZWVhM2M4
NzE0NDZmMzA4Li5kNTYyYTQ2OWZkYzFhNTYyMDkyYjQ3MmZjNzlhYTRjYjQwZTBjYTgwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtNjEsOSAr
NjEsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudEZyb21GaWxlbmFt
ZXMoRG9jdW1lbnQqLCBjb25zdCBJRGF0YU9iamVjdCoKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCosIElEYXRhT2JqZWN0Kik7CiBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNGX0hUTUwoRG9jdW1lbnQqLCBjb25z
dCBTdHJpbmcmIGNmX2h0bWwpOwogCi1TdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiwgYm9vbCYg
c3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOworU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCos
IERyYWdEYXRhOjpTaG91bGRDb252ZXJ0RmlsZW5hbWVzIGNvbnZlcnRGaWxlbmFtZXMsIGJvb2wm
IHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKIFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFP
YmplY3QqLCBib29sJiBzdWNjZXNzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CisjZW5kaWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKKwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFdpbi5jcHAKaW5kZXggMzJiNjU2MTgyNjRiODlhODIyODhhYmZmYTRlYzYxMTJhNDUy
OGFhYy4uM2MzYTIwNTkwZTFiZjgyZTUxOGJjOGFjN2M3ZDhlYmViZDIwYjIyNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC00OTksNyArNDk5LDcgQEAgU3RyaW5nIENs
aXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNv
bnN0CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkKICAgICAgICAg
cmV0dXJuIGdldFBsYWluVGV4dChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOwogICAgIGVs
c2UgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKSAKLSAgICAgICAgcmV0dXJu
IGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOworICAgICAgICByZXR1cm4gZ2V0
VVJMKG1fZGF0YU9iamVjdC5nZXQoKSwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywg
c3VjY2Vzcyk7CiAgICAgCiAgICAgcmV0dXJuICIiOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0Rh
dGFXaW4uY3BwCmluZGV4IDMwNDg3YjhmMDFhMzk0ZjhmMThjMmQ5ZDM4MzY3ODljYjA2ODVjNjAu
LjQ2ODQxZWE3ZjIwYjkyY2VkODNmZTIzMmM1N2UyNzUzOGNhMTVjZDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTQ0LDE4ICs0NCwxOSBAQCBQYXNzUmVmUHRyPENsaXBi
b2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9s
aWN5KSBjbwogICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBtX3BsYXRmb3Jt
RHJhZ0RhdGEsIHBvbGljeSk7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29u
c3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29u
dmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1cm4gU1VDQ0VFREVEKG1fcGxhdGZvcm1E
cmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIAogICAgICAgICB8fCBTVUNDRUVE
RUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsRm9ybWF0KCkpKQotICAgICAg
ICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVX
Rm9ybWF0KCkpKSAKLSAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVl
cnlHZXREYXRhKGZpbGVuYW1lRm9ybWF0KCkpKTsKKyAgICAgICAgfHwgKGNvbnZlcnRGaWxlbmFt
ZXMgPT0gQ29udmVydEZpbGVuYW1lcworICAgICAgICAgICAgJiYgKFNVQ0NFRURFRChtX3BsYXRm
b3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSkpCisgICAgICAgICAg
ICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVu
YW1lRm9ybWF0KCkpKSkpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0
bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMg
Y29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICBib29sIHN1Y2Nl
c3M7Ci0gICAgcmV0dXJuIGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIHN1Y2Nlc3MsIHRpdGxl
KTsKKyAgICByZXR1cm4gZ2V0VVJMKG1fcGxhdGZvcm1EcmFnRGF0YSwgY29udmVydEZpbGVuYW1l
cywgc3VjY2VzcywgdGl0bGUpOwogfQogCiBib29sIERyYWdEYXRhOjpjb250YWluc0ZpbGVzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCmluZGV4IDg4MWQ3
ZDRlZTA0ZDJjODY4YzZjZWJkMmY0YjA5ZTE1MDUzNDgzZjYuLjVhODUxZWQ2OWE1OWJiOGE2NTZl
NDExMzQ5ZGE4OWMwZDJjYzQ4YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2Uv
RHJhZ0RhdGFXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdp
bmNlLmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0
YTo6Y3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAg
cmV0dXJuIDA7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVu
YW1lcykgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoU2hvdWxk
Q29udmVydEZpbGVuYW1lcyBjb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
d3gvRHJhZ0RhdGFXeC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCmlu
ZGV4IDk3ZWEzOGM1MWI5YWI3ODEzYTdmZWNlOTk3OTIxNmE2ZmI3ZDY0NDkuLmJmMTFjMDNkYmM2
ODRmMmNmYzIyNDkwNzFlOWU3MmIzNDE2OGE1MTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vd3gvRHJhZ0RhdGFXeC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4
LmNwcApAQCAtNzYsMTIgKzc2LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLWJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKFNob3Vs
ZENvbnZlcnRGaWxlbmFtZXMgY29udmVydEZpbGVuYW1lcykgY29uc3QKIHsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAgICAgCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNv
bnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFNob3VsZENvbnZlcnRGaWxlbmFtZXMgY29udmVy
dEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58205</attachid>
            <date>2010-06-08 18:48:36 -0700</date>
            <delta_ts>2010-06-09 13:39:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100608184835.patch</filename>
            <type>text/plain</type>
            <size>26890</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMjViN2FkNTE3ODg5NTRkNzMxODczZDhkMjYzMDNiMTBlMWI1Li5hOTRmNzZi
MTBmMmU5ZTg2ZmI1NjQxOTQxNDEzYzUyYWFjYTliYjY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDYtMDggIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAobW92ZU1v
dXNlVG9DZW50ZXJPZkVsZW1lbnQpOgorICAgICAgICAoZHJhZ0ZpbGVzT250b0VkaXRhYmxlQXJl
YSk6CisgICAgICAgIChydW5UZXN0LndpbmRvdy5vbmJlZm9yZXVubG9hZCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEwLTA2LTA4ICBFcmlrIEFydmlkc3NvbiAg
PGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRp
dGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI2MmNlZTJjZWQ0Zjc3
NDA4ZjFlNWE3MmRjMzQ3NDdjNjU5NWZhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOCBAQAorVGVzdHMgdGhhdCBkcmFnZ2luZyBhIGZpbGUgaW50byBhbiBlZGl0YWJs
ZSBhcmVhIGRvZXMgbm90IGluc2VydCBhIGZpbGVuYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFn
LXRvLWVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1k
cmFnLXRvLWVkaXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZlYmU3NTA3NWQzYzk5ZDFlMmM3YjJk
ODIzZDc4NDA5MjdlYzIyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvc2NyaXB0LXRlc3RzL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmViMTIyZTFiNzYyM2ZmYmVkMTA3MmQ1MDNhYmMxYWQyZjQ3Y2MyODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3Rz
L2ZpbGUtZHJhZy10by1lZGl0YWJsZS5qcwpAQCAtMCwwICsxLDQ3IEBACitkZXNjcmlwdGlvbign
VGVzdHMgdGhhdCBkcmFnZ2luZyBhIGZpbGUgaW50byBhbiBlZGl0YWJsZSBhcmVhIGRvZXMgbm90
IGluc2VydCBhIGZpbGVuYW1lLicpOworCit2YXIgZWRpdGFibGVBcmVhID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CitlZGl0YWJsZUFyZWEuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsK
K2VkaXRhYmxlQXJlYS5zdHlsZS5iYWNrZ3JvdW5kID0gJ2dyZWVuJzsKK2VkaXRhYmxlQXJlYS5z
dHlsZS5oZWlnaHQgPSAnMTAwcHgnOworZWRpdGFibGVBcmVhLnN0eWxlLndpZHRoID0gJzEwMHB4
JzsKKy8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBz
byB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJl
IGl0IGNhbid0IGJlIGRyYWdnZWQgdG8pCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShlZGl0
YWJsZUFyZWEsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIG1vdmVNb3Vz
ZVRvQ2VudGVyT2ZFbGVtZW50KGVsZW1lbnQpCit7CisgICAgdmFyIGNlbnRlclggPSBlbGVtZW50
Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgY2VudGVyWSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKGNlbnRlclgsIGNlbnRlclkpOworfQorCitmdW5jdGlvbiBkcmFn
RmlsZXNPbnRvRWRpdGFibGVBcmVhKGZpbGVzKSB7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKGZpbGVzKTsKKyAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlZGl0YWJs
ZUFyZWEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgnc3VjY2Vzc2Z1bGx5UGFyc2VkJyk7CisgICAgICAgIGRlYnVnKCc8YnIg
Lz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKKworICAgICAgICAv
LyBEb24ndCByZW1vdmUgdGhlIGVkaXRhYmxlIG5vZGUsIHNpbmNlIHdlIHdhbnQgdG8gbWFrZSBz
dXJlIHRoZXJlIG5vIHN0cmF5IGZpbGUgVVJMcyB3ZXJlCisgICAgICAgIC8vIGluc2VydGVkIGR1
cmluZyB0aGUgZHJvcC4KKworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisKKyAgICAgICAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gbnVsbDsKKyAgICB9OworICAg
IGRyYWdGaWxlc09udG9FZGl0YWJsZUFyZWEoWydEUlRGYWtlRmlsZSddKTsKKyAgICB0ZXN0RmFp
bGVkKCdUaGUgdGVzdCBzaG91bGQgaGF2ZSByZXN1bHRlZCBpbiBuYXZpZ2F0aW9uJyk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCitpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgcnVuVGVzdCgpOworfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3Qg
aXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlJyk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGE5Y2U1ZTVlYmM5Yjg3OTM3ZjA3NzM2Yzdl
YTk5ZWY2MjUzNjNkNjMuLjcxMTRkNjgxZGRiZGY1ZGI1MGVmYWFiM2NkMTVmM2U1YmQxMTA1YWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC02NjUsNiArNjY1LDcgQEAgZWRpdGluZy9w
YXN0ZWJvYXJkL2RyYWctZHJvcC1pbnB1dC10ZXh0YXJlYS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZHJhZy1kcm9wLXVybC10ZXh0Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBh
c3N3b3JkLWZpZWxkLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWltYWdlLWluLWFib3V0
LWJsYW5rLWZyYW1lLmh0bWwKK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFi
bGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwK
IGVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0YS10ZXh0LXBsYWluLWRyb3AuaHRtbAogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWludG8tYW5jaG9yLXRleHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
U2tpcHBlZAppbmRleCBmZjM0MWQyN2ZiMDE5ZTU4OGI1N2E3MTI1MWJhYjA0ZjU2OGQ1OWI5Li44
YjFlMmY3ZmIyYjM1NDgxMTIwM2Y3ZjdjYzkzMGVjN2M3MTI1YTc4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZApAQCAtMjk1LDMgKzI5NSw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJv
cGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24v
bWF4aW11bS1hZ2UuaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLmh0
bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1zdWNjZXNzLmh0bWwKKworIyBGaWxl
bmFtZXMgYXJlbid0IGZpbHRlcmVkIG91dCBmcm9tIGVkaXQgZHJhZ3MgeWV0LCBzZWUgaHR0cHM6
Ly9idWdzLndla2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKK2VkaXRpbmcvcGFzdGVib2Fy
ZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
ZTAxZGFjYjYxMmUyNWMzYzIxNDI3OGJkNzEzYzMzYjljNzM5YjM3Ny4uYTZjZWIwM2EwNjU4ZTg0
MzE3YjQ3MTViNWZjZDQxODY3NzQ5YmVlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04
MjksNiArODI5LDcgQEAgaHR0cC90ZXN0cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRl
LWNhbGxiYWNrLmh0bWwKIAogIyAtLS0tLS0tIG1pc3NpbmcgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0
YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWwKIGZhc3QvZXZlbnRzL2RyYWctdG8t
bmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBkNmYzYWRjMzMxMjZh
NWNiOGNjZTIwNDlmN2M1ZGIzNmFlMjIyN2Q3Li40MjFiNDE0NzE4ZWMxNWRlOTY1YmFlMTJhZDM1
NTRjMjg5MWJiMDJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTkyLDYgKzE5Miw3
IEBAIGh0dHAvdGVzdHMvd2ViYXJjaGl2ZQogCiAjIDxyZGFyOi8vcHJvYmxlbS81MjMwMzk2PiBl
dmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMgaXMgdW5pbXBsZW1lbnRlZAogZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1zZXREYXRhLWdldERhdGEuaHRtbAorZWRpdGluZy9wYXN0
ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmls
ZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0ZS5o
dG1sCiBmYXN0L2V2ZW50cy9wcmV2ZW50LWRyYWctdG8tbmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWE1MWYyNmI3
ODJmMDRhNzRlZGY2M2VjZTY0ZjVkZGNmZWJkOWQ0Li45Mjg2ZDk1ZTk2OTY4N2YwYTBkNmI3ODhm
MTQ1NWYyZGU1Y2UzM2M1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEwLTA2LTA4ICBEYW5pZWwgQ2hlbmcg
IDxkY2hlbmdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERvbid0IGNvbnZlcnQgZmlsZW5hbWVzIHRvIFVSTHMgaW4gZWRpdCBk
cmFncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
ODI2CisKKyAgICAgICAgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvbid0IHdhbnQgdG8gZXhw
b3NlIGZpbGUgc3lzdGVtIHBhdGhzIHRvIHdlYgorICAgICAgICBjb250ZW50LCBzbyB3ZSBmaWx0
ZXIgdGhlbSBvdXQgb2YgZWRpdCBkcmFncy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFn
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjopOgorICAgICAgICAqIHBsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0RyYWdEYXRhQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
RGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0
YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBs
YWluVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkV2luOjpnZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJh
Z0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0v
d2luY2UvRHJhZ0RhdGFXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAy
MDEwLTA2LTA4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGVjNjll
YTA3NDMxOTgwMTA3M2U5NTY4ZDVjODgyYWYxNjQ3NWEwYmYuLjBkMTcwYjMyNjQ0YzAwODM5ZjUy
NjdjMzE2ZWQ4ZTc1ZGQ3ZGYxNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTA5LDkg
KzEwOSw5IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEqIGRyYWdECiAgICAgICAgIGlmIChQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0RhdGEtPmFzRnJhZ21lbnQoZG9jdW1l
bnQpKQogICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwogCi0gICAgICAgIGlmIChkcmFnRGF0
YS0+Y29udGFpbnNVUkwoKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKERy
YWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGl0
bGU7Ci0gICAgICAgICAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKCZ0aXRsZSk7Cisg
ICAgICAgICAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEtPmFzVVJMKERyYWdEYXRhOjpEb05vdENv
bnZlcnRGaWxlbmFtZXMsICZ0aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhU
TUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hv
ci0+c2V0SHJlZih1cmwpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDAwN2Y3ZDcxNzU1N2UyMzRmZWI0
NWQ3YWI4NjAzYjBlZmIyYWJhOGUuLjdlMmNjNGQwODhkOGZjZmRjY2ZlOGVkMDYyNmQwN2MxMjU4
MWM5N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTc4LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogICAgIGNsYXNzIERyYWdEYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIGVu
dW0gRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IHsgRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBDb252
ZXJ0RmlsZW5hbWVzIH07CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8vRklYTUU6IElu
IHRoZSBmdXR1cmUgdGhlIFdlYktpdCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGhlbHBlciBj
bGFzcyBzaG91bGQgYmUgbW92ZWQgaW50byBXZWJDb3JlLCAKICAgICAgICAgLy9hZnRlciB3aGlj
aCB0aGlzIGNvbnN0cnVjdG9yIHNob3VsZCBiZSByZW1vdmVkCkBAIC05MiwxMCArOTQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGE7IH0KICAgICAgICAgRHJhZ09wZXJhdGlv
biBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY3Jl
YXRlQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSkgY29uc3Q7Ci0gICAgICAgIGJvb2wg
Y29udGFpbnNVUkwoKSBjb25zdDsKKyAgICAgICAgYm9vbCBjb250YWluc1VSTChGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsK
ICAgICAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgICAgICBib29sIGNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGFzVVJMKFN0
cmluZyogdGl0bGUgPSAwKSBjb25zdDsKKyAgICAgICAgU3RyaW5nIGFzVVJMKEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyog
dGl0bGUgPSAwKSBjb25zdDsKICAgICAgICAgU3RyaW5nIGFzUGxhaW5UZXh0KCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgYXNGaWxlbmFtZXMoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICAgICAg
Q29sb3IgYXNDb2xvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRy
b2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0Rh
dGFBbmRyb2lkLmNwcAppbmRleCAzOWIyOTYzNDJmNjE2Y2MwZWYyY2Q1MjZmNzdiMjBiYTAwNWVi
YmM3Li5iZWI3YzBjNzY4Y2RiZDBhODczMjRjMDAyNTY5ODUxMzlhMjhiMTkwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcApAQCAtNjgsMTIgKzY4LDEy
IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29u
c3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyopIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKikgY29uc3QK
IHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EcmFnRGF0YUNocm9taXVtLmNwcAppbmRleCAxY2UyMGRjMjJmM2IyOTE4ZjE0NGFmNjY2MGVm
NmZkYzU0YTM1NjlmLi4yYzIxNTFhMGM2OTk2MDU4Y2I2MDMzYzBkZTY1MThjODIxNTNhYmE2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAKQEAg
LTU2LDE3ICs1NiwxNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjbwogICAgIHJldHVybiBjbGlw
Ym9hcmQucmVsZWFzZSgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0
Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmls
ZW5hbWVQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTCgpLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBE
cmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxl
KSBjb25zdAogewogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YS0+
aGFzVmFsaWRVUkwoKSkKICAgICAgICAgdXJsID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5nZXRVUkwo
KS5zdHJpbmcoKTsKLSAgICBlbHNlIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMu
aXNFbXB0eSgpKSB7CisgICAgZWxzZSBpZiAoZmlsZW5hbWVQb2xpY3kgPT0gQ29udmVydEZpbGVu
YW1lcyAmJiAhbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIFN0cmluZyBmaWxlTmFtZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzWzBdOwog
ICAgICAgICBmaWxlTmFtZSA9IENocm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoZmlsZU5h
bWUpOwogICAgICAgICB1cmwgPSBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChmaWxlTmFt
ZSkuc3RyaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVm
bC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggM2Y5ZWNj
Yjc3NjlkMWQ2MjZjOWQyM2I3MDIyYTk5YmZmMGNlNThkYS4uZjZiNDQ2Y2Q5MDMyNGM3ZjIwODFi
Mjg5NDQxMzdjNDVlZGVlOTcwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJh
Z0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApA
QCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJz
aW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERy
YWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0
cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUxNThk
YTE1ZWI4MzVhNmEuLjRlZDNiYzFmYmJjYzE0YmQzNGRkZWVlNzdkYjEwYTdjODA1NDA5ZDggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBib29s
IERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGlj
eSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNV
UkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFp
a3UvRHJhZ0RhdGFIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRhSGFp
a3UuY3BwCmluZGV4IDRhMjAxNDc3NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3MWYxNGQuLjdm
NDBiOGE3YTU4MzY5OWU2N2E3ZGEwMWJmZTM1OGQzY2FlNDgzYmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWlu
c0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwogfQogCi1i
b29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWlu
c1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBj
b25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDAyYTZhZjczNjhmODBlZjkxYTFjYzYzYTc5Njk4OGVkNzE4YjY3MzkuLmZhNDE2ZWQ1
OTk2MzRjYzQwODBmNjFhODgzY2U3YzViNmU2MTg4OTEKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMu
bW0KQEAgLTExMywxMyArMTEzLDE1IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJs
ZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBbdHlwZXMgY291bnRdICE9IDA7CiB9CiAgICAg
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFhc1VSTCgpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIWFzVVJMKGZpbGVu
YW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAgICAgCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0
cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKKyAgICAv
LyBGSVhNRTogVXNlIGZpbGVuYW1lUG9saWN5LgorICAgICh2b2lkKWZpbGVuYW1lUG9saWN5Owog
ICAgIHJldHVybiBtX3Bhc3RlYm9hcmRIZWxwZXItPnVybEZyb21QYXN0ZWJvYXJkKFttX3BsYXRm
b3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgdGl0bGUpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9EcmFnRGF0YVF0LmNwcAppbmRleCA0MWZlNDhlNGZiZWJlYzM1ZDcxNWM2NTgwODc0MmIzNmNh
NTlkZTRkLi44MDg2MDZkN2ExOTczYjU1MGI1OWRjODQwYTBiZDA0ZjBiZTIzYjQ5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgU3RyaW5nIERyYWdEYXRh
Ojphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0ZXh0OwogCiAgICAgLy8gRklY
TUU6IFNob3VsZCBoYW5kbGUgcmljaCB0ZXh0IGhlcmUKLSAgICByZXR1cm4gYXNVUkwoMCk7Cisg
ICAgcmV0dXJuIGFzVVJMKERvTm90Q29udmVydEZpbGVuYW1lcywgMCk7CiB9CiAKIENvbG9yIERy
YWdEYXRhOjphc0NvbG9yKCkgY29uc3QKQEAgLTExMiwxNSArMTEyLDE3IEBAIGJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWlu
c0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc0h0bWwo
KSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1RleHQoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogeworICAgIC8vIEZJWE1FOiBV
c2UgZmlsZW5hbWVQb2xpY3kuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVcmxzKCk7
CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJp
bmcqKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAgICAgaWYg
KCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBRTGlz
dDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxzKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBkMzQwYzg5ZDJkZjdj
MDJkOGVkNjI4YjgxM2Y4ZTczMGE5MzE4NjdhLi5kOTcyMTlmMWYzNmNmNGI4NTFlMTY4NjMyNjVj
MDE4ODk2ZWZmMjZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgYm9vbCB1cmxGcm9tUGF0aChD
RlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3Ry
aW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcywgU3RyaW5n
KiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdEYXRh
OjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIGJvb2wmIHN1Y2Nlc3Ms
IFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAgIFN0cmluZyB1cmw7
CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiBkYXRhT2Jq
ZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogICAgICAgICBHbG9iYWxVbmxvY2so
c3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsK
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0YU9i
amVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAgLy9m
aWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCogZGF0YSA9ICh3Y2hhcl90KilHbG9i
YWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYmIChQ
YXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0YSkpKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIqKWRh
dGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NG
U3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpdGxlKQotICAgICAg
ICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CisgICAgfSBlbHNlIGlmIChmaWxlbmFtZVBvbGljeSA9PSBEcmFnRGF0YTo6Q29udmVydEZp
bGVuYW1lcykgeworICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEoZmls
ZW5hbWVXRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgICAgICAvLyBmaWxlIHVzaW5nIHVu
aWNvZGUKKyAgICAgICAgICAgIHdjaGFyX3QqIGRhdGEgPSAod2NoYXJfdCopR2xvYmFsTG9jayhz
dG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBhdGhG
aWxlRXhpc3RzKGRhdGEpIHx8IFBhdGhJc1VOQyhkYXRhKSkpIHsKKyAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIqKWRh
dGEsIHdjc2xlbihkYXRhKSkpOworICAgICAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChwYXRo
QXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUp
CisgICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CisgICAgICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCi0gICAg
ICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChk
YXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAgICAg
IC8vZmlsZW5hbWUgdXNpbmcgYXNjaWkKLSAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9i
YWxMb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgICAKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVsw
XSAmJiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkpKSB7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NGU3Ry
aW5nRW5jb2RpbmdBU0NJSSkpOwotICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NG
U3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpdGxlKQotICAgICAg
ICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRy
dWU7CisgICAgICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAg
ICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVE
KGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAgICAg
ICAgICAgIC8vIGZpbGVuYW1lIHVzaW5nIGFzY2lpCisgICAgICAgICAgICBjaGFyKiBkYXRhID0g
KGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAgICBpZiAoZGF0YSAm
JiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0aElzVU5DQShkYXRhKSkp
IHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5n
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZGF0YSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOworICAgICAgICAgICAgICAgIGlmICh1cmxG
cm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodGl0bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CisgICAg
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICAg
ICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgfQotICAgICAgICBHbG9i
YWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCi0gICAgICAgIFJlbGVhc2VTdGdNZWRpdW0o
JnN0b3JlKTsKICAgICB9CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTM1MCwyMCArMzUyLDIxIEBA
IFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJvb2wmIHN1Y2Nl
c3MpCiAgICAgICAgIC8vdW5pY29kZSB0ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gKFVDaGFy
KilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEp
OwotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCisgICAgICAgIEds
b2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3Rv
cmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChk
YXRhT2JqZWN0LT5HZXREYXRhKHBsYWluVGV4dEZvcm1hdCgpLCAmc3RvcmUpKSkgewogICAgICAg
ICAvL2FzY2lpIHRleHQKICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2NrKHN0
b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwotICAgICAgICBHbG9i
YWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCisgICAgICAgIEdsb2JhbFVubG9jayhzdG9y
ZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAgICBz
dWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgewotICAgICAgICAvL0lmIGEgZmlsZSBpcyBkcm9w
cGVkIG9uIHRoZSB3aW5kb3csIGl0IGRvZXMgbm90IHByb3ZpZGUgZWl0aGVyIG9mIHRoZSAKLSAg
ICAgICAgLy9wbGFpbiB0ZXh0IGZvcm1hdHMsIHNvIGhlcmUgd2UgdHJ5IHRvIGZvcmNpYmx5IGdl
dCBhIHVybC4KLSAgICAgICAgdGV4dCA9IGdldFVSTChkYXRhT2JqZWN0LCBzdWNjZXNzKTsKKyAg
ICAgICAgLy8gRklYTUU6IG9yaWdpbmFsbHksIHRoaXMgbG9naWMgd2FzIHNvIGRyb3BwaW5nIGZp
bGVzIG9uIFdlYktpdCB3b3VsZCBpbnNlcnQgdGhlIGZpbGVuYW1lLgorICAgICAgICAvLyBQZXIg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODI2LCB0aGlzIGlzIHVu
ZGVzaXJhYmxlLCBzbyBtYXliZSB0aGlzCisgICAgICAgIC8vIGxpbmUgY2FuIGJlIHJlbW92ZWQu
CisgICAgICAgIHRleHQgPSBnZXRVUkwoZGF0YU9iamVjdCwgRHJhZ0RhdGE6OkRvTm90Q29udmVy
dEZpbGVuYW1lcywgc3VjY2Vzcyk7CiAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmgKaW5kZXggZWMxNTIzMWMzYmFkOGQxNTM1MmFjMzQwZGVlYTNjODcxNDQ2ZjMwOC4uMmY3
MDFmZTA5NGJlMzdlNzY2MmNkODkyNDU3N2QwMDYyYjA3MmNjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKQEAgLTYxLDkgKzYxLDEwIEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKERvY3VtZW50Kiwg
Y29uc3QgSURhdGFPYmplY3QqCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
RnJvbUhUTUwoRG9jdW1lbnQqLCBJRGF0YU9iamVjdCopOwogUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBmcmFnbWVudEZyb21DRl9IVE1MKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBjZl9o
dG1sKTsKIAotU3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCosIGJvb2wmIHN1Y2Nlc3MsIFN0cmlu
ZyogdGl0bGUgPSAwKTsKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqLCBEcmFnRGF0YTo6Rmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBib29sJiBzdWNjZXNzLCBTdHJp
bmcqIHRpdGxlID0gMCk7CiBTdHJpbmcgZ2V0UGxhaW5UZXh0KElEYXRhT2JqZWN0KiwgYm9vbCYg
c3VjY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIENsaXBib2Fy
ZFV0aWxpdGllc1dpbl9oClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorI2VuZGlmIC8vIENs
aXBib2FyZFV0aWxpdGllc1dpbl9oCisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
CmluZGV4IDMyYjY1NjE4MjY0Yjg5YTgyMjg4YWJmZmE0ZWM2MTEyYTQ1MjhhYWMuLjNjM2EyMDU5
MGUxYmY4MmU1MThiYzhhYzdjN2Q4ZWJlYmQyMGIyMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkV2luLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIFN0cmluZyBDbGlwYm9hcmRXaW46Omdl
dERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAogICAgIGlmIChk
YXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCiAgICAgICAgIHJldHVybiBnZXRQbGFp
blRleHQobV9kYXRhT2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKICAgICBlbHNlIGlmIChkYXRhVHlw
ZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkgCi0gICAgICAgIHJldHVybiBnZXRVUkwobV9kYXRh
T2JqZWN0LmdldCgpLCBzdWNjZXNzKTsKKyAgICAgICAgcmV0dXJuIGdldFVSTChtX2RhdGFPYmpl
Y3QuZ2V0KCksIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsIHN1Y2Nlc3MpOwogICAg
IAogICAgIHJldHVybiAiIjsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdEYXRhV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRl
eCAzMDQ4N2I4ZjAxYTM5NGY4ZjE4YzJkOWQzODM2Nzg5Y2IwNjg1YzYwLi44MmU1MzdlZjM1OTY5
YmQ5Y2QyODRkYzMxZDMwMWRkMjZmNTZlNTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFX
aW4uY3BwCkBAIC00NCwxOCArNDQsMTkgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdEYXRh
OjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY28KICAgICBy
ZXR1cm4gQ2xpcGJvYXJkV2luOjpjcmVhdGUodHJ1ZSwgbV9wbGF0Zm9ybURyYWdEYXRhLCBwb2xp
Y3kpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdE
YXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5
R2V0RGF0YSh1cmxXRm9ybWF0KCkpKSAKICAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1E
cmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybEZvcm1hdCgpKSkKLSAgICAgICAgfHwgU1VDQ0VFREVE
KG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1lV0Zvcm1hdCgpKSkgCi0g
ICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YShmaWxl
bmFtZUZvcm1hdCgpKSk7CisgICAgICAgIHx8IChmaWxlbmFtZVBvbGljeSA9PSBDb252ZXJ0Rmls
ZW5hbWVzCisgICAgICAgICAgICAmJiAoU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0YS0+UXVl
cnlHZXREYXRhKGZpbGVuYW1lV0Zvcm1hdCgpKSkKKyAgICAgICAgICAgICAgICB8fCBTVUNDRUVE
RUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSkpKSk7
CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5
LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICByZXR1cm4g
Z2V0VVJMKG1fcGxhdGZvcm1EcmFnRGF0YSwgc3VjY2VzcywgdGl0bGUpOworICAgIHJldHVybiBn
ZXRVUkwobV9wbGF0Zm9ybURyYWdEYXRhLCBmaWxlbmFtZVBvbGljeSwgc3VjY2VzcywgdGl0bGUp
OwogfQogCiBib29sIERyYWdEYXRhOjpjb250YWluc0ZpbGVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3dpbmNlL0RyYWdEYXRhV2luY2UuY3BwCmluZGV4IDg4MWQ3ZDRlZTA0ZDJjODY4YzZjZWJk
MmY0YjA5ZTE1MDUzNDgzZjYuLjVmMmE3YmFkYzUxZTY1ZTRhMGU0NWIzODJhNThlZDQ3YTA3ZDc3
OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNlLmNwcApAQCAtMzIsMTIg
KzMyLDEyIEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBEcmFnRGF0YTo6Y3JlYXRlQ2xpcGJvYXJk
KENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpIGNvCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5z
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRs
ZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5
IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRhV3guY3BwCmluZGV4IDk3ZWEzOGM1MWI5YWI3
ODEzYTdmZWNlOTk3OTIxNmE2ZmI3ZDY0NDkuLjI3OGYxMjM2ZTMxY2RjNTgyNDlhYTFjZTdmNmNm
YTRiNDJiZjgyNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93eC9EcmFnRGF0YVd4LmNwcApAQCAtNzYsMTIgKzc2
LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkg
Y29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGlj
eSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCi1T
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0Rh
dGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5n
KiB0aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58289</attachid>
            <date>2010-06-09 13:39:54 -0700</date>
            <delta_ts>2010-06-10 07:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38826-20100609133953.patch</filename>
            <type>text/plain</type>
            <size>26739</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMjViN2FkNTE3ODg5NTRkNzMxODczZDhkMjYzMDNiMTBlMWI1Li4wYzg0MGI4
YzJjYWYyYjA0YzM1MDMwMjlmNmFjY2JlNThjYzdlZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDYtMDggIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgY29udmVydCBm
aWxlbmFtZXMgdG8gVVJMcyBpbiBlZGl0IGRyYWdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYKKworICAgICAgICBGb3Igc2VjdXJpdHkgcmVh
c29ucywgd2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgZmlsZSBzeXN0ZW0gcGF0aHMgdG8gd2ViCisg
ICAgICAgIGNvbnRlbnQsIHNvIHdlIGZpbHRlciB0aGVtIG91dCBvZiBlZGl0IGRyYWdzLgorCisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8t
ZWRpdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Njcmlw
dC10ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6
CisKIDIwMTAtMDYtMDggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYjYyY2VlMmNlZDRmNzc0MDhmMWU1YTcyZGMzNDc0N2M2NTk1ZmEz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUt
ZHJhZy10by1lZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUZXN0cyB0aGF0
IGRyYWdnaW5nIGEgZmlsZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0IGEg
ZmlsZW5hbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZmViZTc1MDc1ZDNjOTlkMWUyYzdiMmQ4MjNkNzg0MDkyN2VjMjIxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1l
ZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZpbGUtZHJhZy10by1l
ZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1kcmFn
LXRvLWVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10
ZXN0cy9maWxlLWRyYWctdG8tZWRpdGFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlY2NkYzVhZjRiNzg0
M2Y0MDg3MjkwZTY4OGZlMDk1Yzg2OTZjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9zY3JpcHQtdGVzdHMvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmpz
CkBAIC0wLDAgKzEsNDggQEAKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRyYWdnaW5nIGEgZmls
ZSBpbnRvIGFuIGVkaXRhYmxlIGFyZWEgZG9lcyBub3QgaW5zZXJ0IGEgZmlsZW5hbWUuJyk7CisK
K3ZhciBlZGl0YWJsZUFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2VkaXRh
YmxlQXJlYS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworZWRpdGFibGVBcmVhLnN0eWxlLmJhY2tn
cm91bmQgPSAnZ3JlZW4nOworZWRpdGFibGVBcmVhLnN0eWxlLmhlaWdodCA9ICcxMDBweCc7Citl
ZGl0YWJsZUFyZWEuc3R5bGUud2lkdGggPSAnMTAwcHgnOworLy8gSW1wb3J0YW50IHRoYXQgd2Ug
cHV0IHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZG9jIHNvIHRoYXQgbG9nZ2luZyBkb2VzIG5vdCBj
YXVzZSBpdCB0byBnbyBvdXQgb2YgdmlldyAod2hlcmUgaXQgY2FuJ3QgYmUgZHJhZ2dlZCB0bykK
K2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGVkaXRhYmxlQXJlYSwgZG9jdW1lbnQuYm9keS5m
aXJzdENoaWxkKTsKKworZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVu
dCkKK3sKKyAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOworICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVy
WCwgY2VudGVyWSk7Cit9CisKK2Z1bmN0aW9uIGRyYWdGaWxlc09udG9FZGl0YWJsZUFyZWEoZmls
ZXMpCit7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKGZpbGVzKTsKKyAgICBt
b3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlZGl0YWJsZUFyZWEpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgd2luZG93Lm9uYmVm
b3JldW5sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnc3VjY2Vzc2Z1
bGx5UGFyc2VkJyk7CisgICAgICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVT
VCBDT01QTEVURTwvc3Bhbj4nKTsKKworICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIGVkaXRh
YmxlIG5vZGUsIHNpbmNlIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXJlIG5vIHN0cmF5IGZpbGUg
VVJMcyB3ZXJlCisgICAgICAgIC8vIGluc2VydGVkIGR1cmluZyB0aGUgZHJvcC4KKworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisKKyAgICAgICAgd2luZG93Lm9u
YmVmb3JldW5sb2FkID0gbnVsbDsKKyAgICB9OworICAgIGRyYWdGaWxlc09udG9FZGl0YWJsZUFy
ZWEoWydEUlRGYWtlRmlsZSddKTsKKyAgICB0ZXN0RmFpbGVkKCdUaGUgdGVzdCBzaG91bGQgaGF2
ZSByZXN1bHRlZCBpbiBuYXZpZ2F0aW9uJyk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdCgpOworfSBl
bHNlIHsKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVh
c2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CmluZGV4IGE5Y2U1ZTVlYmM5Yjg3OTM3ZjA3NzM2YzdlYTk5ZWY2MjUzNjNkNjMuLjcxMTRkNjgx
ZGRiZGY1ZGI1MGVmYWFiM2NkMTVmM2U1YmQxMTA1YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC02NjUsNiArNjY1LDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1pbnB1
dC10ZXh0YXJlYS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLXVybC10ZXh0Lmh0
bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWluLXBhc3N3b3JkLWZpZWxkLmh0bWwKIGVkaXRp
bmcvcGFzdGVib2FyZC9kcmFnLWltYWdlLWluLWFib3V0LWJsYW5rLWZyYW1lLmh0bWwKK2VkaXRp
bmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9nZXQt
ZGF0YS10ZXh0LXBsYWluLWRyb3AuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWludG8t
YW5jaG9yLXRleHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBmZjM0MWQyN2Zi
MDE5ZTU4OGI1N2E3MTI1MWJhYjA0ZjU2OGQ1OWI5Li44YjFlMmY3ZmIyYjM1NDgxMTIwM2Y3Zjdj
YzkzMGVjN2M3MTI1YTc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMjk1LDMgKzI5
NSw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50
YXRpb24uaHRtbAogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UuaHRtbAogZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3JlZW50cmFudC1zdWNjZXNzLmh0bWwKKworIyBGaWxlbmFtZXMgYXJlbid0IGZpbHRlcmVkIG91
dCBmcm9tIGVkaXQgZHJhZ3MgeWV0LCBzZWUgaHR0cHM6Ly9idWdzLndla2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzg4MjYKK2VkaXRpbmcvcGFzdGVib2FyZC9maWxlLWRyYWctdG8tZWRpdGFibGUu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZTAxZGFjYjYxMmUyNWMzYzIxNDI3OGJk
NzEzYzMzYjljNzM5YjM3Ny4uYTZjZWIwM2EwNjU4ZTg0MzE3YjQ3MTViNWZjZDQxODY3NzQ5YmVl
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04MjksNiArODI5LDcgQEAgaHR0cC90ZXN0
cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwKIAogIyAtLS0t
LS0tIG1pc3NpbmcgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzCiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YVRyYW5zZmVyLXNldERhdGEtZ2V0RGF0YS5odG1sCitlZGl0aW5nL3Bhc3RlYm9h
cmQvZmlsZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlu
cHV0LWZpbGVzLWFjY2Vzcy5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdl
LWNsb25lLmh0bWwKIGZhc3QvZXZlbnRzL2RyYWctdG8tbmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vU2tpcHBlZAppbmRleCBkNmYzYWRjMzMxMjZhNWNiOGNjZTIwNDlmN2M1ZGIzNmFlMjIy
N2Q3Li40MjFiNDE0NzE4ZWMxNWRlOTY1YmFlMTJhZDM1NTRjMjg5MWJiMDJjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZApAQCAtMTkyLDYgKzE5Miw3IEBAIGh0dHAvdGVzdHMvd2ViYXJjaGl2
ZQogCiAjIDxyZGFyOi8vcHJvYmxlbS81MjMwMzk2PiBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRo
RmlsZXMgaXMgdW5pbXBsZW1lbnRlZAogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFuc2Zlci1z
ZXREYXRhLWdldERhdGEuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0
YWJsZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRt
bAogZmFzdC9ldmVudHMvZHJhZy10by1uYXZpZ2F0ZS5odG1sCiBmYXN0L2V2ZW50cy9wcmV2ZW50
LWRyYWctdG8tbmF2aWdhdGUuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YWE1MWYyNmI3ODJmMDRhNzRlZGY2M2VjZTY0ZjVkZGNm
ZWJkOWQ0Li45Mjg2ZDk1ZTk2OTY4N2YwYTBkNmI3ODhmMTQ1NWYyZGU1Y2UzM2M1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDU3IEBACisyMDEwLTA2LTA4ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0IGNv
bnZlcnQgZmlsZW5hbWVzIHRvIFVSTHMgaW4gZWRpdCBkcmFncy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODI2CisKKyAgICAgICAgRm9yIHNlY3Vy
aXR5IHJlYXNvbnMsIHdlIGRvbid0IHdhbnQgdG8gZXhwb3NlIGZpbGUgc3lzdGVtIHBhdGhzIHRv
IHdlYgorICAgICAgICBjb250ZW50LCBzbyB3ZSBmaWx0ZXIgdGhlbSBvdXQgb2YgZWRpdCBkcmFn
cy4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVkaXRh
YmxlLmh0bWwKKworICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjopOgorICAgICAgICAq
IHBsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNV
UkwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9o
YWlrdS9EcmFnRGF0YUhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250
YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzUGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWlu
c1VSTCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFBsYWluVGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpnZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9EcmFnRGF0YVd4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOgorCiAyMDEwLTA2LTA4ICBFcmlrIEFydmlkc3Nv
biAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGVjNjllYTA3NDMxOTgwMTA3M2U5NTY4ZDVjODgy
YWYxNjQ3NWEwYmYuLjBkMTcwYjMyNjQ0YzAwODM5ZjUyNjdjMzE2ZWQ4ZTc1ZGQ3ZGYxNWYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMTA5LDkgKzEwOSw5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0Rh
dGEqIGRyYWdECiAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gZHJhZ0RhdGEtPmFzRnJhZ21lbnQoZG9jdW1lbnQpKQogICAgICAgICAgICAgcmV0dXJu
IGZyYWdtZW50OwogCi0gICAgICAgIGlmIChkcmFnRGF0YS0+Y29udGFpbnNVUkwoKSkgeworICAg
ICAgICBpZiAoZHJhZ0RhdGEtPmNvbnRhaW5zVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxl
bmFtZXMpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGl0bGU7Ci0gICAgICAgICAgICBTdHJpbmcg
dXJsID0gZHJhZ0RhdGEtPmFzVVJMKCZ0aXRsZSk7CisgICAgICAgICAgICBTdHJpbmcgdXJsID0g
ZHJhZ0RhdGEtPmFzVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsICZ0aXRsZSk7
CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSZWZQ
dHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hvci0+c2V0SHJlZih1cmwpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCmluZGV4IDAwN2Y3ZDcxNzU1N2UyMzRmZWI0NWQ3YWI4NjAzYjBlZmIyYWJhOGUuLjdl
MmNjNGQwODhkOGZjZmRjY2ZlOGVkMDYyNmQwN2MxMjU4MWM5N2EgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgK
QEAgLTc4LDYgKzc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIERy
YWdEYXRhIHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gRmlsZW5hbWVDb252ZXJzaW9uUG9s
aWN5IHsgRG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBDb252ZXJ0RmlsZW5hbWVzIH07CisKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgICAgIC8vRklYTUU6IEluIHRoZSBmdXR1cmUgdGhlIFdlYktpdCBm
dW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGhlbHBlciBjbGFzcyBzaG91bGQgYmUgbW92ZWQgaW50
byBXZWJDb3JlLCAKICAgICAgICAgLy9hZnRlciB3aGljaCB0aGlzIGNvbnN0cnVjdG9yIHNob3Vs
ZCBiZSByZW1vdmVkCkBAIC05MiwxMCArOTQsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
RHJhZ0RhdGE7IH0KICAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQog
ICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY3JlYXRlQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSkgY29uc3Q7Ci0gICAgICAgIGJvb2wgY29udGFpbnNVUkwoKSBjb25zdDsKKyAg
ICAgICAgYm9vbCBjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQ
b2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKICAgICAgICAgYm9vbCBjb250YWluc1Bs
YWluVGV4dCgpIGNvbnN0OwogICAgICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQo
KSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGFzVVJMKFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgU3RyaW5nIGFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBv
bGljeSA9IENvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsKICAgICAg
ICAgU3RyaW5nIGFzUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXNGaWxlbmFtZXMo
VmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICAgICAgQ29sb3IgYXNDb2xvcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0RyYWdEYXRhQW5kcm9pZC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJhZ0RhdGFBbmRyb2lkLmNwcAppbmRleCAzOWIy
OTYzNDJmNjE2Y2MwZWYyY2Q1MjZmNzdiMjBiYTAwNWViYmM3Li43NTZkMDA3YWYxNmY4ZjY0Zjc1
ZWQ2MjQxNzhlOTEyZWQ3MGFkYzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuZHJv
aWQvRHJhZ0RhdGFBbmRyb2lkLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRHJh
Z0RhdGFBbmRyb2lkLmNwcApAQCAtNjgsMTIgKzY4LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAK
LWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAgICAgCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKFN0cmluZyopIGNvbnN0CitTdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29u
c3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9EcmFnRGF0YUNocm9taXVtLmNwcAppbmRleCAxY2UyMGRjMjJmM2IyOTE4ZjE0NGFmNjY2
MGVmNmZkYzU0YTM1NjlmLi4yYzIxNTFhMGM2OTk2MDU4Y2I2MDMzYzBkZTY1MThjODIxNTNhYmE2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdEYXRhQ2hyb21pdW0u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0RhdGFDaHJvbWl1bS5jcHAK
QEAgLTU2LDE3ICs1NiwxNyBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0
ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBjbwogICAgIHJldHVybiBj
bGlwYm9hcmQucmVsZWFzZSgpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNv
bnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTCgpLmlzRW1wdHkoKTsK
KyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRp
dGxlKSBjb25zdAogewogICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0
YS0+aGFzVmFsaWRVUkwoKSkKICAgICAgICAgdXJsID0gbV9wbGF0Zm9ybURyYWdEYXRhLT5nZXRV
UkwoKS5zdHJpbmcoKTsKLSAgICBlbHNlIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFt
ZXMuaXNFbXB0eSgpKSB7CisgICAgZWxzZSBpZiAoZmlsZW5hbWVQb2xpY3kgPT0gQ29udmVydEZp
bGVuYW1lcyAmJiAhbV9wbGF0Zm9ybURyYWdEYXRhLT5maWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZW5hbWVzWzBd
OwogICAgICAgICBmaWxlTmFtZSA9IENocm9taXVtQnJpZGdlOjpnZXRBYnNvbHV0ZVBhdGgoZmls
ZU5hbWUpOwogICAgICAgICB1cmwgPSBDaHJvbWl1bUJyaWRnZTo6ZmlsZVBhdGhUb1VSTChmaWxl
TmFtZSkuc3RyaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0
YUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggM2Y5
ZWNjYjc3NjlkMWQ2MjZjOWQyM2I3MDIyYTk5YmZmMGNlNThkYS4uZjZiNDQ2Y2Q5MDMyNGM3ZjIw
ODFiMjg5NDQxMzdjNDVlZGVlOTcwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cApAQCAtNzEsMTIgKzcxLDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNv
bnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252
ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5n
IERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ks
IFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDY5YjMxNjE0MzE4MDcxNGI0YWJjNzNkMmUx
NThkYTE1ZWI4MzVhNmEuLjRlZDNiYzFmYmJjYzE0YmQzNGRkZWVlNzdkYjEwYTdjODA1NDA5ZDgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTY3LDEyICs2NywxMiBAQCBi
b29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKCkgY29uc3QKK2Jvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBv
bGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
aGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdEYXRh
SGFpa3UuY3BwCmluZGV4IDRhMjAxNDc3NmUwMzYxOTFmM2M0NTA1MTZjZThhNGU5NGQ3MWYxNGQu
LjdmNDBiOGE3YTU4MzY5OWU2N2E3ZGEwMWJmZTM1OGQzY2FlNDgzYmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0RhdGFIYWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9oYWlrdS9EcmFnRGF0YUhhaWt1LmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250
YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBjb250YWluc1BsYWluVGV4dCgpOwogfQog
Ci1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBE
cmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxl
KSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDAyYTZhZjczNjhmODBlZjkxYTFjYzYzYTc5Njk4OGVkNzE4YjY3MzkuLmZhNDE2
ZWQ1OTk2MzRjYzQwODBmNjFhODgzY2U3YzViNmU2MTg4OTEKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KQEAgLTExMywxMyArMTEzLDE1IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0
aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBbdHlwZXMgY291bnRdICE9IDA7CiB9CiAg
ICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTCgpIGNvbnN0Citib29sIERyYWdEYXRhOjpj
b250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFhc1VSTCgpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4gIWFzVVJMKGZp
bGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAgICAgCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKKyAg
ICAvLyBGSVhNRTogVXNlIGZpbGVuYW1lUG9saWN5LgorICAgICh2b2lkKWZpbGVuYW1lUG9saWN5
OwogICAgIHJldHVybiBtX3Bhc3RlYm9hcmRIZWxwZXItPnVybEZyb21QYXN0ZWJvYXJkKFttX3Bs
YXRmb3JtRHJhZ0RhdGEgZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgdGl0bGUpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9EcmFnRGF0YVF0LmNwcAppbmRleCA0MWZlNDhlNGZiZWJlYzM1ZDcxNWM2NTgwODc0MmIz
NmNhNTlkZTRkLi44MDg2MDZkN2ExOTczYjU1MGI1OWRjODQwYTBiZDA0ZjBiZTIzYjQ5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdEYXRhUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRHJhZ0RhdGFRdC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgU3RyaW5nIERyYWdE
YXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0ZXh0OwogCiAgICAgLy8g
RklYTUU6IFNob3VsZCBoYW5kbGUgcmljaCB0ZXh0IGhlcmUKLSAgICByZXR1cm4gYXNVUkwoMCk7
CisgICAgcmV0dXJuIGFzVVJMKERvTm90Q29udmVydEZpbGVuYW1lcywgMCk7CiB9CiAKIENvbG9y
IERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKQEAgLTExMiwxNSArMTEyLDE3IEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBjb250
YWluc0NvbG9yKCkgfHwgY29udGFpbnNVUkwoKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc0h0
bWwoKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1RleHQoKTsKIH0KIAotYm9vbCBEcmFnRGF0
YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogeworICAgIC8vIEZJWE1F
OiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVcmxz
KCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKikgY29uc3QKK1N0cmluZyBE
cmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBT
dHJpbmcqKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAgICAg
aWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBR
TGlzdDxRVXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxzKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBkMzQwYzg5ZDJk
ZjdjMDJkOGVkNjI4YjgxM2Y4ZTczMGE5MzE4NjdhLi5mYmQwMDExNzk0MGQ5ZDNmOTIwNTE1YzEw
MDUwZDc0YjU4YzY0NDc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgYm9vbCB1cmxGcm9tUGF0
aChDRlN0cmluZ1JlZiBwYXRoLCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
U3RyaW5nIGdldFVSTChJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgYm9vbCYgc3VjY2VzcywgU3Ry
aW5nKiB0aXRsZSkKK1N0cmluZyBnZXRVUkwoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIERyYWdE
YXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIGJvb2wmIHN1Y2Nl
c3MsIFN0cmluZyogdGl0bGUpCiB7CiAgICAgU1RHTUVESVVNIHN0b3JlOwogICAgIFN0cmluZyB1
cmw7CkBAIC0zMTEsMzIgKzMxMSwzNCBAQCBTdHJpbmcgZ2V0VVJMKElEYXRhT2JqZWN0KiBkYXRh
T2JqZWN0LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogICAgICAgICBHbG9iYWxVbmxv
Y2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCiAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3Jl
KTsKICAgICAgICAgc3VjY2VzcyA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChTVUNDRUVERUQoZGF0
YU9iamVjdC0+R2V0RGF0YShmaWxlbmFtZVdGb3JtYXQoKSwgJnN0b3JlKSkpIHsKLSAgICAgICAg
Ly9maWxlIHVzaW5nIHVuaWNvZGUKLSAgICAgICAgd2NoYXJfdCogZGF0YSA9ICh3Y2hhcl90KilH
bG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWzBdICYm
IChQYXRoRmlsZUV4aXN0cyhkYXRhKSB8fCBQYXRoSXNVTkMoZGF0YSkpKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIq
KWRhdGEsIHdjc2xlbihkYXRhKSkpOwotICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhB
c0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpdGxlKQotICAg
ICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9
IHRydWU7CisgICAgfSBlbHNlIGlmIChmaWxlbmFtZVBvbGljeSA9PSBEcmFnRGF0YTo6Q29udmVy
dEZpbGVuYW1lcykgeworICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGFPYmplY3QtPkdldERhdGEo
ZmlsZW5hbWVXRm9ybWF0KCksICZzdG9yZSkpKSB7CisgICAgICAgICAgICAvLyBmaWxlIHVzaW5n
IHVuaWNvZGUKKyAgICAgICAgICAgIHdjaGFyX3QqIGRhdGEgPSAod2NoYXJfdCopR2xvYmFsTG9j
ayhzdG9yZS5oR2xvYmFsKTsKKyAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGFbMF0gJiYgKFBh
dGhGaWxlRXhpc3RzKGRhdGEpIHx8IFBhdGhJc1VOQyhkYXRhKSkpIHsKKyAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVuaUNoYXIq
KWRhdGEsIHdjc2xlbihkYXRhKSkpOworICAgICAgICAgICAgICAgIGlmICh1cmxGcm9tUGF0aChw
YXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGl0
bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7CisgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCi0g
ICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKLSAgICB9IGVsc2UgaWYgKFNVQ0NFRURF
RChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVuYW1lRm9ybWF0KCksICZzdG9yZSkpKSB7Ci0gICAg
ICAgIC8vZmlsZW5hbWUgdXNpbmcgYXNjaWkKLSAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilH
bG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOyAgICAgICAKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0
YVswXSAmJiAoUGF0aEZpbGVFeGlzdHNBKGRhdGEpIHx8IFBhdGhJc1VOQ0EoZGF0YSkpKSB7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nKEFkb3B0Q0Ys
IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwga0NG
U3RyaW5nRW5jb2RpbmdBU0NJSSkpOwotICAgICAgICAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhB
c0NGU3RyaW5nLmdldCgpLCB1cmwpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRpdGxlKQotICAg
ICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9
IHRydWU7CisgICAgICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAg
ICAgICBSZWxlYXNlU3RnTWVkaXVtKCZzdG9yZSk7CisgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VF
REVEKGRhdGFPYmplY3QtPkdldERhdGEoZmlsZW5hbWVGb3JtYXQoKSwgJnN0b3JlKSkpIHsKKyAg
ICAgICAgICAgIC8vIGZpbGVuYW1lIHVzaW5nIGFzY2lpCisgICAgICAgICAgICBjaGFyKiBkYXRh
ID0gKGNoYXIqKUdsb2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgICAgICAgICBpZiAoZGF0
YSAmJiBkYXRhWzBdICYmIChQYXRoRmlsZUV4aXN0c0EoZGF0YSkgfHwgUGF0aElzVU5DQShkYXRh
KSkpIHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3Ry
aW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgZGF0YSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSkpOworICAgICAgICAgICAgICAgIGlmICh1
cmxGcm9tUGF0aChwYXRoQXNDRlN0cmluZy5nZXQoKSwgdXJsKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodGl0bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAqdGl0bGUgPSB1cmw7Cisg
ICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAg
ICAgICAgICAgIFJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKICAgICAgICAgfQotICAgICAgICBH
bG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCi0gICAgICAgIFJlbGVhc2VTdGdNZWRp
dW0oJnN0b3JlKTsKICAgICB9CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTM1MCwyMCArMzUyLDIx
IEBAIFN0cmluZyBnZXRQbGFpblRleHQoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGJvb2wmIHN1
Y2Nlc3MpCiAgICAgICAgIC8vdW5pY29kZSB0ZXh0CiAgICAgICAgIFVDaGFyKiBkYXRhID0gKFVD
aGFyKilHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRh
dGEpOwotICAgICAgICBHbG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCisgICAgICAg
IEdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgm
c3RvcmUpOwogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKFNVQ0NFRURF
RChkYXRhT2JqZWN0LT5HZXREYXRhKHBsYWluVGV4dEZvcm1hdCgpLCAmc3RvcmUpKSkgewogICAg
ICAgICAvL2FzY2lpIHRleHQKICAgICAgICAgY2hhciogZGF0YSA9IChjaGFyKilHbG9iYWxMb2Nr
KHN0b3JlLmhHbG9iYWwpOwogICAgICAgICB0ZXh0ID0gU3RyaW5nKGRhdGEpOwotICAgICAgICBH
bG9iYWxVbmxvY2soc3RvcmUuaEdsb2JhbCk7ICAgICAgCisgICAgICAgIEdsb2JhbFVubG9jayhz
dG9yZS5oR2xvYmFsKTsKICAgICAgICAgUmVsZWFzZVN0Z01lZGl1bSgmc3RvcmUpOwogICAgICAg
ICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9IGVsc2UgewotICAgICAgICAvL0lmIGEgZmlsZSBpcyBk
cm9wcGVkIG9uIHRoZSB3aW5kb3csIGl0IGRvZXMgbm90IHByb3ZpZGUgZWl0aGVyIG9mIHRoZSAK
LSAgICAgICAgLy9wbGFpbiB0ZXh0IGZvcm1hdHMsIHNvIGhlcmUgd2UgdHJ5IHRvIGZvcmNpYmx5
IGdldCBhIHVybC4KLSAgICAgICAgdGV4dCA9IGdldFVSTChkYXRhT2JqZWN0LCBzdWNjZXNzKTsK
KyAgICAgICAgLy8gRklYTUU6IE9yaWdpbmFsbHksIHdlIGNhbGxlZCBnZXRVUkwoKSBoZXJlIGJl
Y2F1c2UgZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIGZpbGVzIGRvZXNuJ3QKKyAgICAgICAgLy8gcG9w
dWxhdGUgdGhlIGRyYWcgd2l0aCB0ZXh0IGRhdGEuIFBlciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4MjYsIHRoaXMKKyAgICAgICAgLy8gaXMgdW5kZXNpcmFibGUs
IHNvIG1heWJlIHRoaXMgbGluZSBjYW4gYmUgcmVtb3ZlZC4KKyAgICAgICAgdGV4dCA9IGdldFVS
TChkYXRhT2JqZWN0LCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCBzdWNjZXNzKTsK
ICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiB0ZXh0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCBlYzE1MjMxYzNi
YWQ4ZDE1MzUyYWMzNDBkZWVhM2M4NzE0NDZmMzA4Li5hYzVlZmQ4NjYwYzA0YmFlNGUyY2YzMzIx
OGEzYmI1NWQ0NjljZTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uaApAQCAtNjEsOSArNjEsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudEZyb21GaWxlbmFtZXMoRG9jdW1lbnQqLCBjb25zdCBJRGF0YU9iamVjdCoKIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnRGcm9tSFRNTChEb2N1bWVudCosIElE
YXRhT2JqZWN0Kik7CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50RnJvbUNG
X0hUTUwoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGNmX2h0bWwpOwogCi1TdHJpbmcgZ2V0VVJM
KElEYXRhT2JqZWN0KiwgYm9vbCYgc3VjY2VzcywgU3RyaW5nKiB0aXRsZSA9IDApOworU3RyaW5n
IGdldFVSTChJRGF0YU9iamVjdCosIERyYWdEYXRhOjpGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ks
IGJvb2wmIHN1Y2Nlc3MsIFN0cmluZyogdGl0bGUgPSAwKTsKIFN0cmluZyBnZXRQbGFpblRleHQo
SURhdGFPYmplY3QqLCBib29sJiBzdWNjZXNzKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCisjZW5kaWYgLy8gQ2xpcGJvYXJkVXRpbGl0aWVzV2luX2gKKwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggMzJiNjU2MTgyNjRiODlhODIyODhhYmZmYTRlYzYx
MTJhNDUyOGFhYy4uM2MzYTIwNTkwZTFiZjgyZTUxOGJjOGFjN2M3ZDhlYmViZDIwYjIyNyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC00OTksNyArNDk5LDcgQEAgU3Ry
aW5nIENsaXBib2FyZFdpbjo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nl
c3MpIGNvbnN0CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkKICAg
ICAgICAgcmV0dXJuIGdldFBsYWluVGV4dChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOwog
ICAgIGVsc2UgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKSAKLSAgICAgICAg
cmV0dXJuIGdldFVSTChtX2RhdGFPYmplY3QuZ2V0KCksIHN1Y2Nlc3MpOworICAgICAgICByZXR1
cm4gZ2V0VVJMKG1fZGF0YU9iamVjdC5nZXQoKSwgRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVu
YW1lcywgc3VjY2Vzcyk7CiAgICAgCiAgICAgcmV0dXJuICIiOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0RhdGFXaW4uY3BwCmluZGV4IDMwNDg3YjhmMDFhMzk0ZjhmMThjMmQ5ZDM4MzY3ODljYjA2
ODVjNjAuLjgyZTUzN2VmMzU5NjliZDljZDI4NGRjMzFkMzAxZGQyNmY1NmU1MGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTQ0LDE4ICs0NCwxOSBAQCBQYXNzUmVmUHRy
PENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kgcG9saWN5KSBjbwogICAgIHJldHVybiBDbGlwYm9hcmRXaW46OmNyZWF0ZSh0cnVlLCBtX3Bs
YXRmb3JtRHJhZ0RhdGEsIHBvbGljeSk7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJM
KCkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gU1VDQ0VFREVEKG1fcGxh
dGZvcm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIAogICAgICAgICB8fCBT
VUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsRm9ybWF0KCkpKQot
ICAgICAgICB8fCBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmls
ZW5hbWVXRm9ybWF0KCkpKSAKLSAgICAgICAgfHwgU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0
YS0+UXVlcnlHZXREYXRhKGZpbGVuYW1lRm9ybWF0KCkpKTsKKyAgICAgICAgfHwgKGZpbGVuYW1l
UG9saWN5ID09IENvbnZlcnRGaWxlbmFtZXMKKyAgICAgICAgICAgICYmIChTVUNDRUVERUQobV9w
bGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEoZmlsZW5hbWVXRm9ybWF0KCkpKQorICAgICAg
ICAgICAgICAgIHx8IFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0YShm
aWxlbmFtZUZvcm1hdCgpKSkpKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcq
IHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgYm9vbCBz
dWNjZXNzOwotICAgIHJldHVybiBnZXRVUkwobV9wbGF0Zm9ybURyYWdEYXRhLCBzdWNjZXNzLCB0
aXRsZSk7CisgICAgcmV0dXJuIGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGZpbGVuYW1lUG9s
aWN5LCBzdWNjZXNzLCB0aXRsZSk7CiB9CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnRGF0YVdpbmNl
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0RhdGFXaW5jZS5jcHAKaW5kZXggODgx
ZDdkNGVlMDRkMmM4NjhjNmNlYmQyZjRiMDllMTUwNTM0ODNmNi4uNWYyYTdiYWRjNTFlNjVlNGEw
ZTQ1YjM4MmE1OGVkNDdhMDdkNzc5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9EcmFnRGF0YVdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdEYXRh
V2luY2UuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IERyYWdE
YXRhOjpjcmVhdGVDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkgY28KICAg
ICByZXR1cm4gMDsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9v
bCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1l
UG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxl
bmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS93eC9EcmFnRGF0YVd4LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd3gvRHJhZ0RhdGFXeC5jcHAK
aW5kZXggOTdlYTM4YzUxYjlhYjc4MTNhN2ZlY2U5OTc5MjE2YTZmYjdkNjQ0OS4uMjc4ZjEyMzZl
MzFjZGM1ODI0OWFhMWNlN2Y2Y2ZhNGI0MmJmODI3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS93eC9EcmFnRGF0YVd4LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3d4L0RyYWdEYXRh
V3guY3BwCkBAIC03NiwxMiArNzYsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRp
YmxlQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAotYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewogICAgIHJldHVy
biBmYWxzZTsKIH0KICAgICAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoU3RyaW5nKiB0aXRsZSkg
Y29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZp
bGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmco
KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>