<?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>11200</bug_id>
          
          <creation_ts>2006-10-07 00:57:59 -0700</creation_ts>
          <short_desc>Image alt text not included in plain-text version when copying</short_desc>
          <delta_ts>2013-04-27 09:57:37 -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>Images</component>
          <version>419.x</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>5566</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Hosey">boredzo</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>ap</cc>
    
    <cc>b.brachaczek</cc>
    
    <cc>bugs.webkit.org</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>faulkner.steve</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ian</cc>
    
    <cc>jcraig</cc>
    
    <cc>laura.lee.carlson</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>patrys</cc>
    
    <cc>pelzowski</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tony</cc>
    
    <cc>vlad.alexander</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>y3qhe87yhk</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>53847</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2006-10-07 00:57:59 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Select some range of text in a WebView that includes an image (the image having been specified with an img element that has a non-empty alt attribute).
2. Copy.
3. In TextEdit, create a new plain-text document.
4. Paste.

Expected behavior:
In plain-text flavors on the pasteboard (such as public.utf8-plain-text), the alt text is included in the place of the image, as demonstrated when pasted into the plain-text view.

Actual behavior:
The alt text is omitted.

Regression:
None known.

Notes:
In Adium, we use a WebView for message display (the WebKit Message View, or WKMV). When a user has an emoticon pack enabled, emoticons are inserted into the WKMV as images, with the emoticon&apos;s text equivalent (e.g. “:)”) in the alt attribute.

When the user tries to copy part of a message from the WKMV, he naturally expects that the emoticon will come with it. This works when pasting into a rich-text editor (such as TextEdit in rich-text mode), but not when pasting into a plain-text editor (such as TextEdit in plain-text mode); in the latter case, the image is missing.

The same expectation would apply on forum websites and some blogs, where emoticons in a defined set are transparently replaced with images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53848</commentid>
    <comment_count>1</comment_count>
      <attachid>10961</attachid>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2006-10-07 01:03:49 -0700</bug_when>
    <thetext>Created attachment 10961
Test case: An image inline in a paragraph of text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83233</commentid>
    <comment_count>2</comment_count>
      <attachid>21686</attachid>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-06-13 11:59:33 -0700</bug_when>
    <thetext>Created attachment 21686
standalone test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83234</commentid>
    <comment_count>3</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-06-13 12:02:16 -0700</bug_when>
    <thetext>The issue is side effect of a problem described in bug 5566 and, in my opinion bug 5566, is a blocker bug for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256646</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-27 09:27:35 -0700</bug_when>
    <thetext>*** Bug 42810 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257886</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-29 14:27:20 -0700</bug_when>
    <thetext>*** Bug 34896 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422030</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-16 10:29:47 -0700</bug_when>
    <thetext>*** Bug 62772 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601192</commentid>
    <comment_count>7</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2012-04-12 07:03:53 -0700</bug_when>
    <thetext>FYI, this bug is fixed in IE10 consumer preview. And FF has always supported this correct behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859655</commentid>
    <comment_count>8</comment_count>
      <attachid>194106</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-20 13:29:43 -0700</bug_when>
    <thetext>Created attachment 194106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859656</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-20 13:30:23 -0700</bug_when>
    <thetext>Ryosuke, can you review the Editor changes?  mitz, can you review the TextIterator changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859667</commentid>
    <comment_count>10</comment_count>
      <attachid>194106</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-20 13:38:23 -0700</bug_when>
    <thetext>Comment on attachment 194106
Patch

So with this we’ll have image alt text in plain text, but not in styled text, on the clipboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859670</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-20 13:38:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; So with this we’ll have image alt text in plain text, but not in styled text, on the clipboard.

I guess that’s intentional because in styled text we have the actual images?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859714</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-20 14:11:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; So with this we’ll have image alt text in plain text, but not in styled text, on the clipboard.
&gt; 
&gt; I guess that’s intentional because in styled text we have the actual images?

Yes, that&apos;s right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859727</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-20 14:18:09 -0700</bug_when>
    <thetext>I don&apos;t think that pasteboard methods always write to what one expects to be &quot;clipboard&quot;. For example, OS X services use pasteboards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859745</commentid>
    <comment_count>14</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-20 14:33:58 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I don&apos;t think that pasteboard methods always write to what one expects to be &quot;clipboard&quot;. For example, OS X services use pasteboards.

Agreed. If I&apos;m feeding the selection to a service that expects plain text, I expect the same behavior as if I&apos;d copied the text and pasted into the app (or pasted into TextEdit and run the service from there).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859755</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-20 14:45:12 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; I don&apos;t think that pasteboard methods always write to what one expects to be &quot;clipboard&quot;. For example, OS X services use pasteboards.
&gt; 
&gt; Agreed. If I&apos;m feeding the selection to a service that expects plain text, I expect the same behavior as if I&apos;d copied the text and pasted into the app (or pasted into TextEdit and run the service from there).

Good point. I should rename the function to selectedTextForPasteboard (other suggestions welcome) to make it more clear that that is what the patch is doing.  E.g., it&apos;s intentional that the alt text ends up in drag&amp;drop and in the find pasteboard.

This matches the behavior in Firefox on OS X.  E.g., in the standalone test case attached to this bug, if you select the Adium image and use the &quot;Search with Google&quot; service, it will search for text with &quot;Adiumy&quot; in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859768</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-20 15:03:30 -0700</bug_when>
    <thetext>&gt; E.g., in the standalone test case attached to this bug, if you select the Adium image and use the &quot;Search with Google&quot; service, it will search for text with &quot;Adiumy&quot; in it.

Indeed, that&apos;s the case I had in mind, and this behavior is clearly a bug in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859782</commentid>
    <comment_count>17</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-20 15:11:50 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; E.g., in the standalone test case attached to this bug, if you select the Adium image and use the &quot;Search with Google&quot; service, it will search for text with &quot;Adiumy&quot; in it.
&gt; 
&gt; Indeed, that&apos;s the case I had in mind, and this behavior is clearly a bug in Firefox.

I disagree. If the service accepts images or rich text, then WebKit should send that service an image and/or rich text that includes the image (but that&apos;d be a different bug). If it accepts plain text, then WebKit should send it all of the plain text in the selection—including the alternative text of the image, as described in my original bug report.

I borrow your own example: If I want to search Google for the Adium logo, I might select the logo and choose “Search with Google”. If possible, the service should actually reverse-image-search the image using Google Image Search, but I doubt that it does that; more probably, it can only accept and search for plain text, in which case a search for “Adiumy” will find the logo and/or relevant pages, whereas a search for “” will not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859836</commentid>
    <comment_count>18</comment_count>
      <attachid>194106</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-20 16:03:08 -0700</bug_when>
    <thetext>Comment on attachment 194106
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:2614
&gt;  String Editor::selectedText() const

I would have made this function take a boolean or enum instead.

&gt; Source/WebCore/editing/Editor.cpp:2624
&gt; +String Editor::selectedText(TextIteratorBehavior behavior) const

I don&apos;t think we want to expose TextIteratorBehavior like this. TextIteratorBehavior should be considered as implementation details of WebCore.

&gt; Source/WebCore/editing/TextIterator.cpp:720
&gt; +            m_positionOffsetBaseNode = m_node;
&gt; +            m_positionStartOffset = 0;
&gt; +            m_positionEndOffset = 1;

Why are we iterating into img element? Is this really necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859841</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-20 16:11:35 -0700</bug_when>
    <thetext>&gt; If it accepts plain text, then WebKit should send it all of the plain text in the selection—including the alternative text of the image, as described in my original bug report.

I think that it&apos;s a huge stretch to claim that a user may expect some invisible text to pop up as a replacement when an image is selected. This is an amount of second-guessing the intent that&apos;s just creepy.

Also, this will clutter the services menu with unrelated items, which will not have the expected behavior when used on images. For example, &quot;Find in Dictionary&quot; clearly has nothing to do with images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859920</commentid>
    <comment_count>20</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-20 18:29:54 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; If it accepts plain text, then WebKit should send it all of the plain text in the selection—including the alternative text of the image, as described in my original bug report.
&gt; 
&gt; I think that it&apos;s a huge stretch to claim that a user may expect some invisible text to pop up as a replacement when an image is selected.

I don&apos;t think it&apos;s a huge stretch to claim that a user expects everything they have selected to be present in what they send to a service or copy to the general or Find pasteboard.

Your example was of an image that is “obviously” (to use an inherently subjective word) not part of the text, but consider the example I originally presented, where the image—an emoticon—*is* part of the text.

The very purpose of the alt attribute is to provide text to substitute in when the image element is transferred to a context that cannot support images. Text-to-speech is one example (and, returning to the emoticon example, OS X&apos;s text-to-speech can pronounce emoticons as such rather than as punctuation), but services such as create-new-Mail-message are also good ones.

If I select, say, a forum message, and want to send it as a (plain text) Mail message or read it aloud using the speech service, any emoticons in it should be included. I hold that this is true generally of all images with alternate text specified. The images should not simply be excluded from representation.

&gt; This is an amount of second-guessing the intent that&apos;s just creepy.

I think you&apos;ve overusing the word “creepy”.

&gt; Also, this will clutter the services menu with unrelated items, which will not have the expected behavior when used on images. For example, &quot;Find in Dictionary&quot; clearly has nothing to do with images.

That is a valid point.

That acknowledged, more services are concerned with larger runs of text—suitable for copying to an email message or new document, for example—than with single words. With such selections and such services, it makes more sense to include the image&apos;s alternate text than to exclude it.

One could also include some smarts for not promising text when the complete text is empty or all-whitespace. That way, if the user selects *only* an image and it doesn&apos;t have any alternate text, text-based services will not show up to dine at an empty banquet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859922</commentid>
    <comment_count>21</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-20 18:32:06 -0700</bug_when>
    <thetext>(In reply to comment #19)

&gt;some invisible text to pop up as a replacement when an image is selected
Are you saying that alternate text is invisible text? If so, it clearly is a matter of one’s perception. For blind users and those who turned off image rendering, images are invisible objects and alternate text is the norm.

700+ people including accessibility experts have signed off on these 3 test-cases:

http://a11ybugs.org/bug-1.php
http://a11ybugs.org/bug-2.php
http://a11ybugs.org/bug-3.php

PLEASE use these test-cases to implement correct behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859947</commentid>
    <comment_count>22</comment_count>
      <attachid>194106</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-20 19:18:05 -0700</bug_when>
    <thetext>Comment on attachment 194106
Patch

I still think that the issue with services needs to be resolved to land this. Ryosuke&apos;s comments appear to require changes that need to be reviewed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860763</commentid>
    <comment_count>23</comment_count>
      <attachid>194355</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-21 15:04:19 -0700</bug_when>
    <thetext>Created attachment 194355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860769</commentid>
    <comment_count>24</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-21 15:08:43 -0700</bug_when>
    <thetext>I reworked the patch to avoid putting alt text into Services.  This involved moving the enum and some logic into Pasteboard.

(In reply to comment #18)
&gt; (From update of attachment 194106 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194106&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:2614
&gt; &gt;  String Editor::selectedText() const
&gt; 
&gt; I would have made this function take a boolean or enum instead.

I tried to use the enum from Pasteboard, but it turns out that you can&apos;t include Pasteboard.h from Editor.h because Pasteboard.h and WebArchive.h declare WebArchivePboardType.

Also, by not changing the signature of selectedText(), I avoid having to update all the exports.

Let me know if this looks OK to you.

&gt; &gt; Source/WebCore/editing/Editor.cpp:2624
&gt; &gt; +String Editor::selectedText(TextIteratorBehavior behavior) const
&gt; 
&gt; I don&apos;t think we want to expose TextIteratorBehavior like this. TextIteratorBehavior should be considered as implementation details of WebCore.

We&apos;re not exposing TextIteratorBehavior; this method is private.

&gt; &gt; Source/WebCore/editing/TextIterator.cpp:720
&gt; &gt; +            m_positionOffsetBaseNode = m_node;
&gt; &gt; +            m_positionStartOffset = 0;
&gt; &gt; +            m_positionEndOffset = 1;
&gt; 
&gt; Why are we iterating into img element? Is this really necessary?

I moved the code to share more of the existing code. It should make it more clear that I&apos;m not changing the iteration order, I&apos;m just pointing it at the alt text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860831</commentid>
    <comment_count>25</comment_count>
      <attachid>194355</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-21 16:09:59 -0700</bug_when>
    <thetext>Comment on attachment 194355
Patch

Attachment 194355 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17216551</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860842</commentid>
    <comment_count>26</comment_count>
      <attachid>194376</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-21 16:15:43 -0700</bug_when>
    <thetext>Created attachment 194376
fix efl compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860873</commentid>
    <comment_count>27</comment_count>
      <attachid>194376</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-21 16:48:55 -0700</bug_when>
    <thetext>Comment on attachment 194376
fix efl compile

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

&gt; Source/WebCore/platform/Pasteboard.h:76
&gt; +enum PasteboardSelectedTextType { DefaultSelectedTextType, ForClipboard };

I would have preferred to call the latter IncldueImageAltTextForClipboard to make the intent this enum clear
but others might prefer the current style. Also PasteboardSelectedTextType doesn&apos;t really communicate the semantics of this enum.
How about something like ShouldSerializeSelectedTextForClipboard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861619</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 10:22:13 -0700</bug_when>
    <thetext>I&apos;ve asked Enrica to take a look at this patch since she&apos;s most familiar with services.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861678</commentid>
    <comment_count>29</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 11:01:27 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 194376 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194376&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Pasteboard.h:76
&gt; &gt; +enum PasteboardSelectedTextType { DefaultSelectedTextType, ForClipboard };
&gt; 
&gt; I would have preferred to call the latter IncldueImageAltTextForClipboard to make the intent this enum clear
&gt; but others might prefer the current style. Also PasteboardSelectedTextType doesn&apos;t really communicate the semantics of this enum.
&gt; How about something like ShouldSerializeSelectedTextForClipboard?

I&apos;m happy to make these renames.  I&apos;ll do it after Enrica takes a look.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861846</commentid>
    <comment_count>30</comment_count>
      <attachid>194376</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-03-22 14:24:55 -0700</bug_when>
    <thetext>Comment on attachment 194376
fix efl compile

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

&gt; Source/WebCore/editing/mac/EditorMac.mm:271
&gt; +    pasteboard.writeSelectionForTypes(pasteboardTypes, true, m_frame, DefaultSelectedTextType);

This call and the following are used by services. If I understand the code correctly, no change in behavior will occur with your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861854</commentid>
    <comment_count>31</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-03-22 14:38:26 -0700</bug_when>
    <thetext>I share Alexey&apos;s concerns about this new approach.
This patch changes the behavior of copy and cut commands as well as the behavior of finding a string from the current selection. It doesn&apos;t seem to affect Mac OS X Services, since it doesn&apos;t change the behavior of stringSelectionForPasteboard. (Please confirm that this statement is true).

Overall I think this is a change with a lot of ramifications. It will change significantly what goes in the pasteboard when the user selects content that has both text and images.
Prior to this change the plain text representation contained only the text selected; after this change the pasteboard will contain text coming from different contexts, the text on the page and the text in the alt attribute of the image, which could produce text that makes no sense.

Maybe it would be better to limit this behavior to a different pasteboard type. Such approach has the disadvantage that existing applications would not inherit the new behavior automatically, but it would also prevent unwanted side effects.
Alternatively it could be limited only to ports that are interested in this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861855</commentid>
    <comment_count>32</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-22 14:40:03 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; This patch changes the behavior of copy and cut commands as well as the behavior of finding a string from the current selection. It doesn&apos;t seem to affect Mac OS X Services, since it doesn&apos;t change the behavior of stringSelectionForPasteboard. (Please confirm that this statement is true).

Yes, that is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861857</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 14:41:33 -0700</bug_when>
    <thetext>Perhaps we should add a new setting for this? I can see that different browsers want to do this differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861859</commentid>
    <comment_count>34</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-22 14:46:13 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Prior to this change the plain text representation contained only the text selected; after this change the pasteboard will contain text coming from different contexts, the text on the page and the text in the alt attribute of the image, …

That&apos;s the behavior I requested in the original bug. Please see the “Notes” in my original report for an example use case (in a word: emoticons). Also please see Vlad Alexander&apos;s comment above for the ways that this helps accessibility.

&gt; … which could produce text that makes no sense.

Certainly true, but I think it is better to include the text, whereupon the user can spot it and remove it if it is unwanted, than to exclude it, where the user may not notice that it is missing and may have much greater difficulty in restoring it in a large selection or for distinctive alt texts.

&gt; Maybe it would be better to limit this behavior to a different pasteboard type.

Pasteboard name, or data type? Either way, I suspect nobody would use it, and certainly nobody doing the standard copy-then-paste would benefit from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861895</commentid>
    <comment_count>35</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-03-22 15:17:39 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #31)
&gt; &gt; Prior to this change the plain text representation contained only the text selected; after this change the pasteboard will contain text coming from different contexts, the text on the page and the text in the alt attribute of the image, …
&gt; 
&gt; That&apos;s the behavior I requested in the original bug. Please see the “Notes” in my original report for an example use case (in a word: emoticons). Also please see Vlad Alexander&apos;s comment above for the ways that this helps accessibility.

I understand that this is the scenario you&apos;re trying to address, but even though I see a number of cases where this would be beneficial, I can come up with other examples where this would produce a not so great experience.

&gt; Certainly true, but I think it is better to include the text, whereupon the user can spot it and remove it if it is unwanted, than to exclude it, where the user may not notice that it is missing and may have much greater difficulty in restoring it in a large selection or for distinctive alt texts.
&gt; 
I agree that the text could be removed, but there could be cases, where the user is pasting a lot of text and doesn&apos;t notice the additional text that doesn&apos;t make sense together.

&gt; Pasteboard name, or data type? Either way, I suspect nobody would use it, and certainly nobody doing the standard copy-then-paste would benefit from it.
Yes I was suggesting a different pasteboard type and I also said that it has the problem of requiring adoption.
I&apos;m not trying to push back on the feature per se, but I would like to encourage everyone to vet the consequences of a similar change. That is why I proposed that maybe this is something that could be enabled only for the ports that feel comfortable with the new behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861942</commentid>
    <comment_count>36</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2013-03-22 16:13:07 -0700</bug_when>
    <thetext>I&apos;m also unsure what would be the impact of the new behavior on features like Voice over or Speak Selection. I&apos;ll talk to some of the accessibility experts at Apple to get their opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861952</commentid>
    <comment_count>37</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-22 16:25:46 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I&apos;m also unsure what would be the impact of the new behavior on features like Voice over or Speak Selection. I&apos;ll talk to some of the accessibility experts at Apple to get their opinion.

Speak selection users would end up hearing the Alt text inline, which unless it&apos;s called out as the alt text of the image, would probably not be a great experience.

My two cents are that it seems like this is in need of an API for a web page to return what the selected range of text will be when put on the clipboard. That would solve the adium problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861969</commentid>
    <comment_count>38</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-22 16:45:21 -0700</bug_when>
    <thetext>(In reply to comment #35)

&gt;I can come up with other examples where this would produce a not so great experience.

Do you know what really is &quot;not so great experience&quot;? It&apos;s when a visually impaired person is deprived of equitable access to online information because their browser does not support basic HTML accessibility features. The quality of alternate text will not improve unless it is made usable to to everyone by including it in copy/paste, passing it to search/translation services and displaying it in place of images when an image cannot be loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861981</commentid>
    <comment_count>39</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-22 16:54:28 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #35)
&gt; 
&gt; &gt;I can come up with other examples where this would produce a not so great experience.
&gt; 
&gt; Do you know what really is &quot;not so great experience&quot;? It&apos;s when a visually impaired person is deprived of equitable access to online information because their browser does not support basic HTML accessibility features. The quality of alternate text will not improve unless it is made usable to to everyone by including it in copy/paste, passing it to search/translation services and displaying it in place of images when an image cannot be loaded.

I don&apos;t know if this bug is depriving anyone of equitable access. What you&apos;re getting here is plain text copied off a web page.

No matter whom views that plain text, visually impaired or not, they&apos;re going to get the same plain text. (right now without alt text). The sighted person is not going to see an image, and no one using a screen reader will hear the alt text.

However, who ever went to the web page would see the image, or hear the alt label. 

If instead, this bug is talking about when an image is pasted back into a rich text area, and it does not carry its alt text, than that would be an equal access issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862002</commentid>
    <comment_count>40</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-22 17:12:05 -0700</bug_when>
    <thetext>(In reply to comment #38)

&gt; Do you know what really is &quot;not so great experience&quot;? It&apos;s when a visually impaired person is deprived of equitable access to online information because their browser does not support basic HTML accessibility features.

Try not to be combative, Vlad. Chris implemented the majority of accessibility in WebKit and has done more for the accessibility community in the past couple years than most accessibility professionals will accomplish in their lifetimes. Instead of questioning his motives, try to keep in mind that we&apos;re all in this together to come up with the best experience possible for all users, including those with disabilities and those without.

That said, I think it&apos;d be reasonable to wrap image alternative text in delimiters clearly indicating it as such in the plain text PasteBoard. 

Something like:
  &lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;

Could come out as:
  &quot;Foo [Image: &apos;Bar&apos;] Baz&quot;

And could use the ARIA 1.1. &quot;text&quot; role to bypass the delimiters, such as:
  &lt;p&gt;Foo &lt;img role=&quot;text&quot; src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;

Could come out as:
  &quot;Foo Bar Baz&quot;

But then we get into the very subjective area of whether or not the plain text PasteBoard should include things like abbr[title] text, table[summary], etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862006</commentid>
    <comment_count>41</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-22 17:17:10 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; That said, I think it&apos;d be reasonable to wrap image alternative text in delimiters clearly indicating it as such in the plain text PasteBoard. 
&gt; 
&gt; Something like:
&gt;   &lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&gt; 
&gt; Could come out as:
&gt;   &quot;Foo [Image: &apos;Bar&apos;] Baz&quot;
&gt; 
&gt; And could use the ARIA 1.1. &quot;text&quot; role to bypass the delimiters, such as:
&gt;   &lt;p&gt;Foo &lt;img role=&quot;text&quot; src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&gt; 
&gt; Could come out as:
&gt;   &quot;Foo Bar Baz&quot;

That solution, all together, is very reasonable.

&gt; But then we get into the very subjective area of whether or not the plain text PasteBoard should include things like abbr[title] text, table[summary], etc.

If anyone wants to propose including those other attributes in similar cases, I think they&apos;d be worth debating as separate bugs.

The case for using the alt text here is backed up by its definition in the HTML spec:

http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#alt

&gt; … the value [of the alt attribute] must be an appropriate replacement for the image. …
&gt; 
&gt; The most general rule to consider when writing alternative text is the following: the intent is that replacing every image with the text of its alt attribute not change the meaning of the page.
&gt; 
&gt; So, in general, alternative text can be written by considering what one would have written had one not been able to include the image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862016</commentid>
    <comment_count>42</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-22 17:24:49 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt;
&gt; If anyone wants to propose including those other attributes in similar cases, I think they&apos;d be worth debating as separate bugs.
&gt; 
&gt; The case for using the alt text here is backed up by its definition in the HTML spec:
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#alt

That&apos;s a good guideline for authors. Unfortunately, many existing websites do not follow this guidelines. Of course, this is somewhat of a chicken and egg problem in that providing better support for alt in browser will encourage more authors to use it correctly.

I think the best course of action for this bug is to wrap the feature in settings or build flags or that each embedder of WebKit can decide which behavior they want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862020</commentid>
    <comment_count>43</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-22 17:29:40 -0700</bug_when>
    <thetext>&gt; I don&apos;t know if this bug is depriving anyone of equitable access.
If the quality of alternate text on the web is poor, then people are deprived of equitable access. The only way to improve the quality of alternate text is to make is usable to everyone (for example, in cases of copy/paste and passing it to search/translation services). So if you work backwards, if this bug is not fixed properly, fewer people will use alternate text and content authors will have less incentive to write better alternate text. And then you are depriving people who rely on alternate text of equitable access.

&gt; Try not to be combative, Vlad.
I don&apos;t mean to be. But this bug has been filled in 2006 with no results. I have been in communication with the Apple team since about the same time regarding other accessibility issues (check Radar) with the same results. I myself have also briefly worked at Apple so I know from experience that accessibility issues are misunderstood and are a low priority for Apple. So if my tone can be a bit short - I apologize, but please understand where it&apos;s coming from too.

&gt;wrap image alternative text in delimiters
So long as those delimiters are not visible to end-users. Otherwise you are introducing content that is not there. And it does not translate into other languages (but that is besides the point).

Why can we not implement the same behavior as in Firefox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862035</commentid>
    <comment_count>44</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-22 17:49:34 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; &gt; I don&apos;t know if this bug is depriving anyone of equitable access.
&gt; If the quality of alternate text on the web is poor, then people are deprived of equitable access. The only way to improve the quality of alternate text is to make is usable to everyone (for example, in cases of copy/paste and passing it to search/translation services). So if you work backwards, if this bug is not fixed properly, fewer people will use alternate text and content authors will have less incentive to write better alternate text. And then you are depriving people who rely on alternate text of equitable access.

I think there is a causation/correlation fallacy in that argument. A WebKit feature&apos;s primary purpose should be to do the right thing for the user, not to train web developers to write better alt text.

&gt; I myself have also briefly worked at Apple so I know from experience that accessibility issues are misunderstood and are a low priority for Apple. 

Again, please try not to be combative or make assumptions of others motives. It does more harm than good.

&gt; &gt;wrap image alternative text in delimiters
&gt; So long as those delimiters are not visible to end-users. Otherwise you are introducing content that is not there. 

The content is there. It&apos;s an image. 

&gt; And it does not translate into other languages (but that is besides the point).

That&apos;s just a simple Loc string. WebKit is localized in many languages, and this string would be localized with the rest of the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862262</commentid>
    <comment_count>45</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-23 16:02:19 -0700</bug_when>
    <thetext>Tony, will you update the patch to include the delimiters and a few more tests?

// alt text
&lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&quot;Foo [Image: &apos;Bar&apos;] Baz&quot;

// empty alt text
&lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;&quot;&gt; Baz&lt;/p&gt;
&quot;Foo  Baz&quot;

// missing alt attr
&lt;p&gt;Foo &lt;img src=&quot;bar.png&quot;&gt; Baz&lt;/p&gt;
&quot;Foo  Baz&quot;

// multiple images
&lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; &lt;img src=&quot;baz.png&quot; alt=&quot;Baz&quot;&gt; Bop&lt;/p&gt;
&quot;Foo [Image: &apos;Bar&apos;] [Image: &apos;Baz&apos;] Bop&quot;

// alt text with ARIA 1.1 text role
&lt;p&gt;Foo &lt;img role=&quot;text&quot; src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&quot;Foo Bar Baz&quot;

// make sure no extra spaces added to pasteboard string
&lt;p&gt;Foo&lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt;&lt;img src=&quot;baz.png&quot; alt=&quot;Baz&quot;&gt;Bop&lt;/p&gt;
&quot;Foo[Image: &apos;Bar&apos;][Image: &apos;Baz&apos;]Bop&quot;

// make sure no extra spaces added to pasteboard string (with text role)
&lt;p&gt;Foo&lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt;&lt;img src=&quot;baz.png&quot; alt=&quot;Baz&quot;&gt;Bop&lt;/p&gt;
&quot;FooBarBazBop&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862263</commentid>
    <comment_count>46</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-23 16:03:23 -0700</bug_when>
    <thetext>That last one should have read:

// make sure no extra spaces added to pasteboard string (with text role)
&lt;p&gt;Foo&lt;img role=&quot;text&quot; src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt;&lt;img role=&quot;text&quot; src=&quot;baz.png&quot; alt=&quot;Baz&quot;&gt;Bop&lt;/p&gt;
&quot;FooBarBazBop&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862267</commentid>
    <comment_count>47</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-23 16:57:22 -0700</bug_when>
    <thetext>I object to adding arbitrary delimiters like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862271</commentid>
    <comment_count>48</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-23 17:01:43 -0700</bug_when>
    <thetext>Given the discussion so far, it&apos;s probably worth announcing this feature on webkit-dev.  The current patch looks good but I strongly feel that we need a setting so that each port can opt-in to use this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862273</commentid>
    <comment_count>49</comment_count>
    <who name="Peter Hosey">boredzo</who>
    <bug_when>2013-03-23 17:06:00 -0700</bug_when>
    <thetext>For the record, I&apos;m not a fan of delimiters, either, but if going without them is a problem, having them by default with an attribute to turn them off seems like a reasonable solution.

An alternative would be to add the feature without delimiters, and then see whether it really is a problem to not have them. It might be that most extant non-empty alt texts are simply either (a) appropriate to be included without delimiters or (b) obviously not text anyway (e.g., filename templated in), so delimiters don&apos;t make it any more obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862274</commentid>
    <comment_count>50</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-23 17:10:46 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; An alternative would be to add the feature without delimiters, and then see whether it really is a problem to not have them. It might be that most extant non-empty alt texts are simply either (a) appropriate to be included without delimiters or (b) obviously not text anyway (e.g., filename templated in), so delimiters don&apos;t make it any more obvious.

Right. Also, I&apos;m concerned that the proposed delimiter won&apos;t be read well naturally by VoiceOver and auditory UAs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862382</commentid>
    <comment_count>51</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-24 10:06:45 -0700</bug_when>
    <thetext>(In reply to comment #50)

&gt; I&apos;m concerned that the proposed delimiter won&apos;t be read well naturally by VoiceOver and auditory UAs.

I verified that it is spoken as expected with Speak Selection and VoiceOver on both iOS and OSX. Just as importantly, the “Image” delimiter gives both auditory renderings a context that is missing from the non-delimited version, one that is clearly conveyed to sighted users and VoiceOver users in the HTML version: the fact that this is an image, not rendered text. The delimiters also address the concern Chris mentioned regarding speak selection, and the concern I had about the plain text renderings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862387</commentid>
    <comment_count>52</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-24 10:30:36 -0700</bug_when>
    <thetext>FWIW, I share Ryosuke&apos;s concern about delimiters:

1. They, make it so that the original use case in this bug is served poorly, giving extra brackets around smileys. I really don&apos;t want Mac users to get nerdy brackets all over the place when copying from Adium. Hello dear! [Image: &apos;:)&apos;]

2. They are quite arbitrary, not matching what other browsers do.

3. They still don&apos;t address the concern about getting unexpected stealthy content in pasted text. When there is a large body of text copied, it&apos;s easy to overlook the brackets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862388</commentid>
    <comment_count>53</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-24 11:00:52 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; FWIW, I share Ryosuke&apos;s concern about delimiters:
&gt; 
&gt; 1. They, make it so that the original use case in this bug is served poorly, giving extra brackets around smileys. I really don&apos;t want Mac users to get nerdy brackets all over the place when copying from Adium. Hello dear! [Image: &apos;:)&apos;]

Adium should use the &apos;text&apos; role on the emoticon images then. That’s the point of that role.

&lt;p&gt;Hello dear! &lt;img src=&quot;smiley.gif&quot; role=&quot;text&quot; alt=&quot;:)&quot;&gt;&lt;/p&gt;
&quot;Hello dear! :)&quot;

&gt; 2. They are quite arbitrary, not matching what other browsers do.

I disagree that they are arbitrary, but would be open to discussing other delimiters if you have a suggestion. As to matching other browser’s behavior, that’s because this is behavior is not specified anywhere, and as such we should strive for the best solution, not the status quo.

I’m mostly concerned about the case where photos or other graphics with real, author-provided or generated alt text are inserted in the middle of a sentence with no context, and the current solution could break the sentence for auditory contexts (hence Chris’s concern with speak selection) without clarifying that this was alternative text from an inline image.

&gt; 3. They still don&apos;t address the concern about getting unexpected stealthy content in pasted text. When there is a large body of text copied, it&apos;s easy to overlook the brackets.

It’s much easier to both notice, and search for, consistent delimiters than for arbitrary strings of alt text with no delineation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862391</commentid>
    <comment_count>54</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-24 11:34:28 -0700</bug_when>
    <thetext>&gt;Adium should use the &apos;text&apos; role on the emoticon images then. That&apos;s the point of that role.

ARIA is complex, not supported by most authoring tools and puts an undue burden on non-technical content authors. As an authoring tool vendor, I can speak to content author behavior. It is highly unlikely that content authors will adopt this.

&gt;As to matching other browser&apos;s behavior, that&apos;s because this is behavior is not specified anywhere, and as such we should strive for the best solution, not the status quo.

I don&apos;t mean to sound argumentative, but on what basis is your solution better than that of Firefox and IE10? I would argue that given accessibility expersts reviewed this at Mozilla and Microsoft, and 700+ petitioners asked for the same behavior as in Firefox, that it should have more weight than one developer&apos;s view of what is best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862451</commentid>
    <comment_count>55</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-24 17:59:36 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; &gt;Adium should use the &apos;text&apos; role on the emoticon images then. That&apos;s the point of that role.
&gt; 
&gt; ARIA is complex, 

Adding a text role is not complex, and in the exception case like Adium&apos;s emoticons, adding a role is trivial. Your example case of &quot;I ♥ you&quot; is the exception, not the rule. Most alt text is used on regular images, not inline replacements like your example, so the default should be to indicate what was actually there. The word &quot;love&quot; is not displayed, so copying it to the pasteboard without any indication that it was alternative text for an image is not representing the true content. 

For example, the following text (and alt text) is from a NYTimes story promo picked at random. The insertion of the bracketed delimiters and &quot;Image&quot; role description gives this phrase context, where without it, it would seem like the author&apos;s first sentence (it&apos;s also not even a complete sentence), and a strangely phrased one if the intention is to get you to read the article.

Watch Out for the Horses on Your Way to the Train
By MELENA RYZIK
6:18 PM ET
[Image: &quot;Students from the Ailey School at a dress rehearsal on Sunday at Grand Central Terminal for “Heard NY,” a performance that takes place there this week.&quot;]
An arts project is bringing life-size horses, each made of colorful raffia and fitting two dancers, to the main concourse of Grand Central Terminal.

&gt; [ARIA is] not supported by most authoring tools and puts an undue burden on non-technical content authors. As an authoring tool vendor, I can speak to content author behavior. It is highly unlikely that content authors will adopt this.

The point is that authors won&apos;t do this most of the time, because most of the time it would be inappropriate to use the text role. See the above example, which is a more common use of @alt than for emoticons and inline text replacements.

&gt; &gt;As to matching other browser&apos;s behavior, that&apos;s because this is behavior is not specified anywhere, and as such we should strive for the best solution, not the status quo.
&gt; 
&gt; I don&apos;t mean to sound argumentative, but on what basis is your solution better than that of Firefox and IE10? I would argue that given accessibility expersts reviewed this at Mozilla and Microsoft, and 700+ petitioners asked for the same behavior as in Firefox, that it should have more weight than one developer&apos;s view of what is best.

First of all, the petition had nothing to do with matching Firefox behavior exactly. The petition was actually about exposing alt text in the plain text pasteboard, and we all seem to be in agreement of that. I&apos;m sure I even have a duplicate bug filed somewhere.

Second, to your point about &quot;experts&quot; and signatures, even if the petition had specifically been about whether or not to use delimiters around the alt text, the number of votes would be irrelevant. Web browsers features should always be about technical merit, not popularity. If you want standardized behavior of this in pasteboard rules, that standardization should happen in the HTML Accessibility Task Force sub-team of the HTML Working Group (or perhaps in the PF group), not in a WebKit bug thread, and not on your personal petition website.

Finally, and most importantly, we have a lot more than 700 users using the previously mentioned &quot;Speak Selection&quot; feature on a daily basis on iOS and OS X. Chris&apos;s original point was to try to do this in a way that would not cause unexpected behavior for them, and I made a compromise suggestion that at least more people than just &quot;one developer&quot; consider reasonable. Speak Selection is an existing assistive technology that relies on the plain text pasteboard, and we want its users to be negatively affected by this change. I think it&apos;s reasonable to include alt text in that pasteboard, but we should not misrepresent it as plain text content, because it&apos;s not. It&apos;s an alternative for an image.

I&apos;ve stated my case. If you want to convince us to have the pasteboard hide the fact that this is an image, then take the time to make a merited argument. Don&apos;t just say &quot;experts&quot; and &quot;petitioners&quot; want this, because you don&apos;t know that they do. They merely signed a petition stating that they want alt text exposed, which is something I think we all want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862452</commentid>
    <comment_count>56</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-24 18:03:51 -0700</bug_when>
    <thetext>Ahem. Typo: …and we DO NOT want its users to be negatively affected by this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862455</commentid>
    <comment_count>57</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-24 18:13:53 -0700</bug_when>
    <thetext>&gt; I&apos;ve stated my case. If you want to convince us to have the pasteboard hide the fact that this is an image, then take the time to make a merited argument. Don&apos;t just say &quot;experts&quot; and &quot;petitioners&quot; want this, because you don&apos;t know that they do. They merely signed a petition stating that they want alt text exposed, which is something I think we all want.

Who are &quot;us&quot; here? I haven&apos;t seen anyone else supporting the proposed delimiters. Could you give me pointers to where this proposal has been supported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862457</commentid>
    <comment_count>58</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-24 18:23:57 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; &gt; I&apos;ve stated my case. If you want to convince us to have the pasteboard hide the fact that this is an image, then take the time to make a merited argument. Don&apos;t just say &quot;experts&quot; and &quot;petitioners&quot; want this, because you don&apos;t know that they do. They merely signed a petition stating that they want alt text exposed, which is something I think we all want.
&gt; 
&gt; Who are &quot;us&quot; here? I haven&apos;t seen anyone else supporting the proposed delimiters. Could you give me pointers to where this proposal has been supported?

Sorry, I meant &quot;us&quot; in the general sense, not anyone in particular, and not an &quot;us&quot; versus &quot;you&quot; implication. Poor choice of words.

But since you asked, there&apos;s at least this comment above, from Peter Hosey (&quot;That solution, all together, is very reasonable.&quot;), as well as others (Chris and Enrica) expressing concern for non-delimited alt text exposed as plain text when it is not. (&quot;…unless it&apos;s called out as the alt text of the image, would probably not be a great experience.&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862476</commentid>
    <comment_count>59</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-24 19:26:42 -0700</bug_when>
    <thetext>I am advocating that in the absence of a clear consensus on alternate text delimiters (which is where we are now), the decision should be determined based on what other browser vendors have done. There is precedent for this. Browser vendors have copied each others behavior (bugs, etc.) for the sake of consistency. Consistent behavior across browsers has value in its own right by providing a predictable environment for developers, content authors and end-users. I therefore ask that WebKit fix this bug to match behavior in Firefox and IE10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862662</commentid>
    <comment_count>60</comment_count>
    <who name="200ok">y3qhe87yhk</who>
    <bug_when>2013-03-25 05:09:02 -0700</bug_when>
    <thetext>Adding a vote for including alt attribute contents in copy+pasted text.

I&apos;ve worked on a product where users would include emoticons, tick/cross indications of yes/no, status lozenges and other graphics inline with text; and without the alt text the copy+pasted content either lacks important nuance or becomes unreadable.

Consider: 
* &quot;You idiot! :D&quot; vs. &quot;You idiot!&quot; ...the alt text of the smiley *significantly* alters the meaning/interpretation of the text.
* Issue1 (tick) Issue2 (cross) ...without the alt text, you cannot determine the status of the two issues. Accepting that tick/cross is vague in the first place, but it&apos;s a common pattern.

If this thread has reached a point where it is simply deciding about delimiters: delimiters seem unecessary, although arguably a character of white space at the start and end would be advisable to ensure the alt contents are evaluated on their own and not run into other text. 

Certainly if the choice is between no alt text at all; and delimited alt text - go with delimited alt text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862681</commentid>
    <comment_count>61</comment_count>
    <who name="Laura Carlson">laura.lee.carlson</who>
    <bug_when>2013-03-25 06:01:48 -0700</bug_when>
    <thetext>
Please fix web kit so that it uses the alternate text when copying content that contains images. Make it a simple and non obtustive retrieval process for the user as in:
http://a11ybugs.org/bug-1.php
Over 700 people have asked that this be fixed. Being consistent with other browser solutions would improve usability and interoperability of the web.

&gt; That said, I think it&apos;d be reasonable to wrap image alternative text 
&gt; in delimiters clearly indicating it as such in the plain text 
&gt; PasteBoard. 

Using delimiters was for alt attribute values are not needed. In fact they were rejected in HTML5.
http://www.w3.org/html/wg/tracker/issues/58

&gt;&gt;&gt; Adium should use the &apos;text&apos; role on the emoticon images then.
&gt;&gt;&gt; That&apos;s the point of that role.
&gt;&gt; 
&gt;&gt; ARIA is complex, 

WAI-ARIA is a bridging technology. Bridging technologies are not intended to replace native HTML semantic features. Detouring accessibility technical requirements into an &quot;Accessible Rich Internet Applications&quot; bridging specification is backward. The &quot;Introduction to ARIA&quot; document clearly states, &quot;WAI-ARIA is intended to be used as a supplement for native language semantics, not a replacement. When the host language provides a feature that provides equivalent accessibility to the WAI-ARIA feature, use the host language feature.&quot;
http://www.w3.org/TR/wai-aria/introduction

WAI-ARIA should only be used as a last resort when content can&apos;t be made accessible using the host language.

The first rule of ARIA use is: &quot;If you can use a native HTML element or attribute with the semantics and behaviour you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so.&quot;
http://dvcs.w3.org/hg/aria-unofficial/raw-file/tip/index.html#rule1

The Protocols and Formats Working Group is the group that authors WAI-ARIA. Their charter states: &quot;Note that WAI-ARIA is intended to be a bridging technology. It is expected that, over time, host languages will evolve to provide semantics for objects that currently can only be declared with WAI-ARIA.&quot;
http://www.w3.org/WAI/PF/charter201006

A significant goal of WAI-ARIA is to: &quot;help stimulate the emergence of more semantic and accessible markup. When native semantics for a given feature become available, it is appropriate for authors to use the native feature and stop using WAI-ARIA for that feature.&quot;
http://www.w3.org/TR/wai-aria/introduction#co-evolution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862892</commentid>
    <comment_count>62</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-25 10:30:10 -0700</bug_when>
    <thetext>(In reply to comment #60)

&gt; If this thread has reached a point where it is simply deciding about delimiters: 

I think it has.

&gt; delimiters seem unnecessary, 

They may seem unnecessary to because you are think about them for the use of smileys, which are only one use case, and one that will likely become irrelevant as more browsers support colored fonts and unicode smileys.

&gt; although arguably a character of white space at the start and end would be advisable to ensure the alt contents are evaluated on their own and not run into other text. 

I don&apos;t think we should insert whitespace characters either. This would negatively affect Japanese Gaiji which, along with emoji or emoticons, is one of the few cases where the ARIA text role would be appropriate. Adding extra space around characters may break pronunciation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862926</commentid>
    <comment_count>63</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-25 11:13:41 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; Using delimiters was for alt attribute values are not needed. In fact they were rejected in HTML5.
&gt; http://www.w3.org/html/wg/tracker/issues/58

That&apos;s an entirely separate issue about what browsers should use for alt text when it&apos;s missing. It has nothing to do with this thread.

&gt; WAI-ARIA is a bridging technology. Bridging technologies are not intended to replace native HTML semantic features. Detouring accessibility technical requirements into an &quot;Accessible Rich Internet Applications&quot; bridging specification is backward. 

No one is suggesting detouring accessibility requirements. When an image is used as text (as in the case of emoticons), the author is explicitly overriding the intended purpose of the img element.

&gt; The &quot;Introduction to ARIA&quot; document clearly states, &quot;WAI-ARIA is intended to be used as a supplement for native language semantics, not a replacement. When the host language provides a feature that provides equivalent accessibility to the WAI-ARIA feature, use the host language feature.&quot;
&gt; http://www.w3.org/TR/wai-aria/introduction

I&apos;ve read the ARIA spec a time or two. ☺ 

If you want to use the &quot;ideal content&quot; card, the proper host language feature, in this case, is to not use images for text. If you are using images for text (such as the emoji example), then clearing redefining the role is expected and proper. Better yet, emoji replacements for plain text emoticons should use plain text unicode representation of the emoji character, and sites (or apps like Adium) that need custom display of those characters should use @font-face with a colored emoji font.

The following paragraph should copy the right characters in any browser today.
&lt;p&gt;I &lt;span class=&quot;emoji&quot;&gt;♥&lt;/span&gt; you, you idiot! &lt;span class=&quot;emoji&quot;&gt;☺&lt;/span&gt;&lt;/p&gt;
&quot;I ♥ you, you idiot! ☺&quot;

&gt; The first rule of ARIA use is: &quot;If you can use a native HTML element or attribute with the semantics and behaviour you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so.&quot;

The built-in feature you are talking about is &lt;img&gt; which has the semantics of an image, not plain text. Since &lt;img&gt; is used as a text character here, adding the ARIA 1.1 &quot;text&quot; role is the right thing to do.

&gt; The Protocols and Formats Working Group is the group that authors WAI-ARIA. Their charter states: &quot;Note that WAI-ARIA is intended to be a bridging technology. It is expected that, over time, host languages will evolve to provide semantics for objects that currently can only be declared with WAI-ARIA.&quot;
&gt; http://www.w3.org/WAI/PF/charter201006
&gt; 
&gt; A significant goal of WAI-ARIA is to: &quot;help stimulate the emergence of more semantic and accessible markup. When native semantics for a given feature become available, it is appropriate for authors to use the native feature and stop using WAI-ARIA for that feature.&quot;
&gt; http://www.w3.org/TR/wai-aria/introduction#co-evolution

I am very familiar with our group charter and the ARIA spec, probably more so than anyone, and I don&apos;t see the relevance of these comments. I don&apos;t see anyone is arguing that alt text should not be exposed, just that it should be clearly exposed as a text alternative, rather than misrepresenting it as text that was rendered by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862936</commentid>
    <comment_count>64</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-25 11:25:29 -0700</bug_when>
    <thetext>Giving some context to the text role, which was first publicly suggested by Steve Faulkner on the XTECH list in 2011.

http://lists.w3.org/Archives/Public/wai-xtech/2011Apr/0007.html

&gt; a few suggestions for ARIA next
&gt; 
&gt; role=&quot;text&quot;
&gt; when a non text object has a role of text , its to be treated as text.
&gt; 
&gt; example use:
&gt; My &lt;img src=&quot;heart.png&quot; alt=&quot;heart&quot; role=&quot;text&quot;&gt; breaks.
&gt; 
&gt; provides a way convey an objects text alternative without exposing its role.

Please note the comment &quot;…without exposing its role.&quot; This is my objection to the non-delimited suggestion. The author has chosen to use an image here. By default, every screen reader in existence clearly indicates through a spoken role description that an image is an image, not plain text. If the plain text pasteboard does not include this, it&apos;s misrepresenting the content for all users, and losing information. In addition, it&apos;s changing the way an existing assistive technology &quot;Speak Selection&quot; works today, without clearing indicating that the alt value is not actually rendered text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862941</commentid>
    <comment_count>65</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-25 11:32:58 -0700</bug_when>
    <thetext>So in Steve&apos;s example, the plain text pasteboard of:

  &lt;p&gt;My &lt;img src=&quot;heart.png&quot; alt=&quot;heart&quot; role=&quot;text&quot;&gt; breaks.&lt;/p&gt;

should be:

  &quot;My heart breaks.&quot;

…but the plain text pasteboard of:

  &lt;p&gt;My &lt;img src=&quot;heart.png&quot; alt=&quot;heart&quot;&gt; breaks.&lt;/p&gt;

should be something like:

  &quot;My [Image: &apos;heart&apos;] breaks.&quot;

Copying Steve on this thread, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862982</commentid>
    <comment_count>66</comment_count>
    <who name="Vlad Alexander">vlad.alexander</who>
    <bug_when>2013-03-25 12:49:09 -0700</bug_when>
    <thetext>&gt;The built-in feature you are talking about is &lt;img&gt; which has the semantics of an image, not plain text.

James, do you believe that the web can provide equitable access to all? If so, then you should not give more value to the visual content of the img element than the textual content. The img element provides semantics of _content_ that can be rendered visually or textually. The names &quot;img&quot; and &quot;alt&quot; are just legacy names from a time that we did not know any better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863032</commentid>
    <comment_count>67</comment_count>
      <attachid>194917</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-25 13:46:37 -0700</bug_when>
    <thetext>Created attachment 194917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863035</commentid>
    <comment_count>68</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-25 13:48:31 -0700</bug_when>
    <thetext>- Added a setting that is off by default so ports can opt in to this behavior.
- I did the enum renames suggested in comment 27.
- I added test cases for no alt tag and 2 adjacent images.
- I updated the test case to test with the setting on and off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863043</commentid>
    <comment_count>69</comment_count>
      <attachid>194917</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-25 13:56:51 -0700</bug_when>
    <thetext>Comment on attachment 194917
Patch

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

&gt; LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt:1
&gt; +This tests that image alt text makes it to the clipboard. This test requires DRT or WTR. The first two dumps should not include alt text and the third and forth dumps should include alt text.

We should be able to manually test it by copying the whole thing, right?

&gt; LayoutTests/editing/pasteboard/copy-image-with-alt-text.html:35
&gt; +    if (window.internals)
&gt; +        internals.settings.setSelectionIncludesAltImageText(true);

Presumably, this setting is reset in the test runner automatically?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863044</commentid>
    <comment_count>70</comment_count>
      <attachid>194917</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-25 13:59:19 -0700</bug_when>
    <thetext>Comment on attachment 194917
Patch

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

&gt;&gt; LayoutTests/editing/pasteboard/copy-image-with-alt-text-expected.txt:1
&gt;&gt; +This tests that image alt text makes it to the clipboard. This test requires DRT or WTR. The first two dumps should not include alt text and the third and forth dumps should include alt text.
&gt; 
&gt; We should be able to manually test it by copying the whole thing, right?

Yes, but the setting is off by default, so it won&apos;t do anything unless you change the setting.

&gt;&gt; LayoutTests/editing/pasteboard/copy-image-with-alt-text.html:35
&gt;&gt; +        internals.settings.setSelectionIncludesAltImageText(true);
&gt; 
&gt; Presumably, this setting is reset in the test runner automatically?

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863068</commentid>
    <comment_count>71</comment_count>
      <attachid>194917</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-25 14:28:16 -0700</bug_when>
    <thetext>Comment on attachment 194917
Patch

Attachment 194917 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17120875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863070</commentid>
    <comment_count>72</comment_count>
      <attachid>194927</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-25 14:37:51 -0700</bug_when>
    <thetext>Created attachment 194927
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863071</commentid>
    <comment_count>73</comment_count>
      <attachid>194927</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-25 14:38:20 -0700</bug_when>
    <thetext>Comment on attachment 194927
Patch for landing

Letting the mac ews bots test the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863081</commentid>
    <comment_count>74</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2013-03-25 14:50:25 -0700</bug_when>
    <thetext>Someone using a screen reader doesn&apos;t need to be reminded that they can&apos;t see images if the writer of the page has actually provided equivalent text to replace the image with. That screen readers feel the need to keep reminding the user that they are missing images is a big (and IMHO rather unpleasant).

I think the same applies to copy-paste.

That there are pages where things work better if you do delimit than if you don&apos;t is true, but the opposite is true also. We should aim for where we want to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863107</commentid>
    <comment_count>75</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-25 15:34:36 -0700</bug_when>
    <thetext>(In reply to comment #74)
&gt; Someone using a screen reader doesn&apos;t need to be reminded that they can&apos;t see images if the writer of the page has actually provided equivalent text to replace the image with. 

Most of the screen reader users I know would disagree with you. If they were operating without any contact with sighted co-workers or friends, your point might be accurate, but being able to collaborate with everyone is an important part of accessibility. If a sighted user can tell the difference between an image and text, then a blind user should be able to as well.

&gt; That screen readers feel the need to keep reminding the user that they are missing images is a big (and IMHO rather unpleasant).

This is a user setting that can be changed in most screen readers. By default, it&apos;s usually set to accurately convey that contents of the screen, including role descriptions so the user knows if their sighted counterparts are seeing an image or text. 

In addition, as I stated above, this is about more than just screen reader users. Without the delimiter context, there is nothing to indicate than the first part of this NYTimes article (an incomplete sentence) is not the first sentence in the article, so conveying this in a plain text pasteboard without any delineation is a misrepresentation of the author&apos;s content.

Sample NYTimes Article (copied w/o delimiters):

Watch Out for the Horses on Your Way to the Train
By MELENA RYZIK 6:18 PM ET
Students from the Ailey School at a dress rehearsal on Sunday at Grand Central Terminal for “Heard NY,” a performance that takes place there this week. An arts project is bringing life-size horses, each made of colorful raffia and fitting two dancers, to the main concourse of Grand Central Terminal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863128</commentid>
    <comment_count>76</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-25 16:00:25 -0700</bug_when>
    <thetext>I&apos;ve already r+ed the current patch that doesn&apos;t use delimiter and match the behaviors of Firefox and Microsoft Internet Explorer.

James, I suggest we take the discussion of whether using delimiters is a good idea or not to HTML WG or one of many accessibility related working groups. Bugzilla is not an appropriate venue to continue this discussion at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863250</commentid>
    <comment_count>77</comment_count>
      <attachid>194927</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 18:35:41 -0700</bug_when>
    <thetext>Comment on attachment 194927
Patch for landing

Clearing flags on attachment: 194927

Committed r146835: &lt;http://trac.webkit.org/changeset/146835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863251</commentid>
    <comment_count>78</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 18:35:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863504</commentid>
    <comment_count>79</comment_count>
    <who name="Steve Faulkner">faulkner.steve</who>
    <bug_when>2013-03-26 03:10:55 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #38)
&gt; 
&gt; &gt; Do you know what really is &quot;not so great experience&quot;? It&apos;s when a visually impaired person is deprived of equitable access to online information because their browser does not support basic HTML accessibility features.
&gt; 
&gt; Try not to be combative, Vlad. Chris implemented the majority of accessibility in WebKit and has done more for the accessibility community in the past couple years than most accessibility professionals will accomplish in their lifetimes. Instead of questioning his motives, try to keep in mind that we&apos;re all in this together to come up with the best experience possible for all users, including those with disabilities and those without.
&gt; 
&gt; That said, I think it&apos;d be reasonable to wrap image alternative text in delimiters clearly indicating it as such in the plain text PasteBoard. 
&gt; 
&gt; Something like:
&gt;   &lt;p&gt;Foo &lt;img src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&gt; 
&gt; Could come out as:
&gt;   &quot;Foo [Image: &apos;Bar&apos;] Baz&quot;
&gt; 
&gt; And could use the ARIA 1.1. &quot;text&quot; role to bypass the delimiters, such as:
&gt;   &lt;p&gt;Foo &lt;img role=&quot;text&quot; src=&quot;bar.png&quot; alt=&quot;Bar&quot;&gt; Baz&lt;/p&gt;
&gt; 
&gt; Could come out as:
&gt;   &quot;Foo Bar Baz&quot;
&gt; 
&gt; But then we get into the very subjective area of whether or not the plain text PasteBoard should include things like abbr[title] text, table[summary], etc.

Hi james, 

I  agree with you that in the case where the alt text is included in a copy and paste, unless there is an indication of the context of the alt text important information is lost and the results in the majority of cases will be sub optimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863729</commentid>
    <comment_count>80</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-26 09:30:22 -0700</bug_when>
    <thetext>(In reply to comment #76)
&gt; James, I suggest we take the discussion of whether using delimiters is a good idea or not to HTML WG or one of many accessibility related working groups. 

Fair enough. I’ll raise an HTML defect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863875</commentid>
    <comment_count>81</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-03-26 11:42:28 -0700</bug_when>
    <thetext>HTML Defect: https://www.w3.org/Bugs/Public/show_bug.cgi?id=21403</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882186</commentid>
    <comment_count>82</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-04-27 09:57:37 -0700</bug_when>
    <thetext>Following on at bug 115283 now that the HTML change landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>10961</attachid>
            <date>2006-10-07 01:03:49 -0700</date>
            <delta_ts>2008-06-13 11:59:33 -0700</delta_ts>
            <desc>Test case: An image inline in a paragraph of text.</desc>
            <filename>No-alt-in-plain-text-copy.zip</filename>
            <type>application/zip</type>
            <size>2952</size>
            <attacher name="Peter Hosey">boredzo</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAHcHRzUAAAAAAAAAAAAAAAAaABUATm8tYWx0LWluLXBsYWluLXRleHQtY29weS9V
VAkAA3JeJ0V3XidFVXgEAPUB9QFQSwMECgACAAAAGgVHNaD91avYBgAA2AYAACcAFQBOby1hbHQt
aW4tcGxhaW4tdGV4dC1jb3B5L0FkaXVteS0zMi5wbmdVVAkAAwRaJ0UbXidFVXgEAPUB9QGJUE5H
DQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAafSURBVFjDvZdbjFXVGcd/a+37ucw5M3Nm
hmGGGQgyFkEroMVpoyliSVBoanhpY9OYGGNjYstTUzBpbaNJ+9DWpA9NbNGm4aWkIUG0rUalZBqM
CFHADjBc58Zcz5w51332dfVhJoY0YQZObb/Xvdb3/+21vtuCxu0bdPPdjb+xJljBT4Ak/zdr5bn+
g5ba9WZS/XTsHvXNd7OKXvY14kq74x0Oezb90vzttq3rbLvQQumaoLM9jfNQbfu194PruJz5XwL0
tn2fV3c+sWZt8ZxOWIM4hFoeVq5KMWLn+6ofchQoffEALexZ8xJHHn98TV/9RognPYQRgxkQGFWi
iuK+h3Nto5m5ndUTHLldiOUAeuhgCz1s+8pL1p++tn5tamp8knrZIa13ciO+Sjms0MJdFKpFKsVZ
Nj+0KjecLOxwrzNEB/0UGAPqtxIQywD0db0iT9/Vl0h1q07mi9Ns7HiMfTv+QsaCgaH3SZgJtqzu
J1/zePm93VyZ/Zj0imYuTI1TrcdcfD68Dzh3KwG5DMCqhNJlt9dNedxHWhH7dy2IAzzct50tq/sX
EiNh8aMdf8bHpzoE6+I15PQkdLF9KYGlAFK0sy6Yla5fj/Bjj1yqg6SAUQ8O/OEAARABB15/nRsB
tNjNZJNpfOXjlWNsLGhjdaMAkb6b5/t3dbYGLsRq4b48YGikyN4f/oAzMxGnpgL2vvACl8dqeIsb
41ihpEAGeqz3io3AA40AuOEhfnXh5AxxqJCYzJQmmQ3B6Mzw4oG3qOsaoW2w77WjWCsSTNRmmS+X
kcpASMVsoaLCs+oDYLCxGCjz9uBHlTHNEUilUywp/n7uRR5JwY+/vY1/XPoOp67tZf9Tj7LVgbfO
7MOtghAaKgbNkoIEFtB9Kwl9mSBMJrvI1IWiqGIMv4WDJ19lvDzOnFfib5+9gybgen4SW8DAhaOY
YY55FZNE0pS2JFn6ALfRNOxKP8ulPVu/5HSUJKdCj5Jfw1VFNlsOT7V/GV1KDk2d4UO3iiEzJPUE
DxoW5aziwDvnJ6JDbAAKjZ7AdPn3PJnLX37jF7vv6fRCnapsxW7aRKK9F5paAXh09d3408NUipPY
yiehFG8Oz/Dacf4ItC4FsFwljIErJ87HA9dK00/uuTeRSKRtjGwGLANEtHC6kYsmPZy4jK6KvHzk
evW5w8VfM8N+YG4pAf02O8HJTbEardvdudmKRnF8Eq90DU1JBJKQADPlkM6m6Eln6RNXa8zysy+u
GWXZlX7CenasFFnmu5eoTxRRsgXXWYsrc6h8jcrFK8x9MsxhKgx0BNbZU+FpQi4u51rchvz6da+I
gU39m1oLlzy6hivUPJ9JochHMWiCDtMgF4ETwOgqm8z9KU4f+3Rs5Od8Hbjy3wA47Xv5+Fs7799Q
GQY9kyLvBhTy07S3Z1H1AKEJ/DDEDWJ0M0VGV1D1yN6tcfjw2VNzv+OrQNDYFfTw9CPPtD6jTaZx
mtPUXQ+/MEd7U4L2ljQqDGlK2rQ0JWiydIRbR5cmlq3jzcZk13krr35Uv0CpsW6oNT/G93KyHSUE
umlQna8S+j6WbeDW6qTTSRzHRpMSw9CJwwCvHmAmEiil6LA6SW/j6aV0lgLobO1hc1iU6LZFuVQn
PzlDrqMZy7FxEja6ZWCYGoZtopsGzW0ZivkCtZqPZhpQ1mnt5cHFWnCHAClSxNKIfEVpzmVkaJT2
rmaSKZsojJC6hlALM2F53sW0DNyqR3NbkunRGSrzHoEXIWJhAqlG6oCIYoSQipHL42RaLZrbmigV
a+iawK3ViSOFbhp4rkvCWZhSUk0J3EqdieEZVq/PEcVLB/qtT6DCjdJ8PDs1WqU0G8TNHSmqpTph
EKIQmJZBMuPgJA1a2rKUS2U0XSMKI7KtaWKlqJRdynNqAphqJAaKhXH+VfKroVJKGaaBUhFSSIQA
IQT6YvAJTSA1ufCrSqGbEiUgXy3HhWk+A2oNzQPCIHFloDIYVGQVDYR2U+VYUAO16EgTIEFIgVKK
ykzsXj5euS6SOI32AhF9wqelq77mZyMt2BNtcEwTFEhNoukCTZfopiCOIY4kmhQoCTiS6XNuYX7Q
O6Z6KDfaCxzmGERRDN14fOifc5bXVOtVeoRhSXRLghCEUYznB1QrVaamClwanOTYGyPnq2f9g8Qc
p8BfFweS8E5LsQbYgLOYRhngXgQP0M1GWlhpOKQBQhdXlckzxjl8TgBnFttwbfFR0hDAf67T+fzG
MRfB7MVv/k1in0/VN62/pf0bvend+j6fOv4AAAAASUVORK5CYIJQSwMEFAACAAgAdwdHNdjX/MuI
AgAAMwQAACMAFQBOby1hbHQtaW4tcGxhaW4tdGV4dC1jb3B5L3Rlc3QuaHRtbFVUCQADcl4nRXJe
J0VVeAQA9QH1AW1T70/bMBD93r/i5kkItDamVEMCkk6sRaIa29AoYvs0Ock1sUjszL6Q9r/fOSkw
oUmRYt+P93zPz/G75ffF+tftFZRUV3B7//lmtQAxkfJhtpByuV7Cz+v11xuYRsdwR05nJOXVNwGi
JGrOpey6LupmkXWFXP+Q24AyDW375cT3PVFOuZiP4p5kW1fGJ/8BmJ6dnQ19IhSdV8oUiUAj4GUV
MFDl/CNNFc6XzjYN5hNV0YRwS0DoCTLlMZZDxSiukRRk1hAaSoRqmkpnirQ1A9cHprqArFTOIyX3
d5PLu8VqdQEb62pFyUZvMRcQTjvBP61+SsRiwJqsdw0KkExRafMIDqtEeNpV6EtEEkCcT0Q4lsy8
ZwyHm0TI1ugndF5VUR8N/XI/VGrz3Xw0ipv5utQe+It1XUCncyoTMTthDNRFScOah07EZa7beifA
u+x5M5mdRI0pAvQYqETow1Arn1mKYtkMFAvb7Pq0Su0TQqOcKpxqyr7H8N4TgibQhiwoaCqlzSAy
5pqsg0PfZiUoD2sOXuV96b9ltc3xKIKVgTAvC+7BbuAB0y9c2mkqIVZ7UfZmSNvCRx2mj5p6R/jS
dr85GGWF/qTzZDo9OT5mYcPNJmKPxHkwbZ2igyE/D0NxNJZqL4CuVYFMWVWQIuSDacbgFCcdVygz
CFEFA/HJDw+q/E9rLwY9D1y/OeJebQrwber5BC1hHkzCEr1q2l/biwehY3EyhyqUpju4RWK6a+tx
B4eB0DpdaKMq9k5jXUi+CvR2rDF0pWa9A8EwHwTbMXJ/f0fjoL5D37DOCHxlb8Ulp7JIhYm2UWZr
fh/ZI5L8eHrKkg0WCaDvQyBI9zyVHFzJJuXXMh/9BVBLAQIXAwoAAAAAAHcHRzUAAAAAAAAAAAAA
AAAaAA0AAAAAAAAAEADtQQAAAABOby1hbHQtaW4tcGxhaW4tdGV4dC1jb3B5L1VUBQADcl4nRVV4
AABQSwECFwMKAAIAAAAaBUc1oP3Vq9gGAADYBgAAJwANAAAAAAAAAAAApIFNAAAATm8tYWx0LWlu
LXBsYWluLXRleHQtY29weS9BZGl1bXktMzIucG5nVVQFAAMEWidFVXgAAFBLAQIXAxQAAgAIAHcH
RzXY1/zLiAIAADMEAAAjAA0AAAAAAAEAAACkgX8HAABOby1hbHQtaW4tcGxhaW4tdGV4dC1jb3B5
L3Rlc3QuaHRtbFVUBQADcl4nRVV4AABQSwUGAAAAAAMAAwAVAQAAXQoAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21686</attachid>
            <date>2008-06-13 11:59:33 -0700</date>
            <delta_ts>2008-06-13 11:59:33 -0700</delta_ts>
            <desc>standalone test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>5313</size>
            <attacher name="Robert Blaut">webkit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRt
bCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5n
PSJlbiI+CjxoZWFkPgo8dGl0bGU+RHJvcHBlZC1hbHQtdGV4dCB0ZXN0IGNhc2U8L3RpdGxlPgo8
bWV0YSBjb250ZW50PSJhcHBsaWNhdGlvbi94aHRtbCt4bWw7IGNoYXJzZXQ9VVMtQVNDSUk7IGZv
cm1hdD1maXhlZCIgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAvPgo8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvdW5pdmVyc2FsLmNzcyIgLz4KPC9oZWFkPgo8
Ym9keT4KCjxwPlRoaXMgaXMgPGltZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGFsdD0iQWRpdW15
IiBzcmM9ImRhdGE6aW1hZ2UvcG5nLCU4OVBORyUwRCUwQSUxQSUwQSUwMCUwMCUwMCUwRElIRFIl
MDAlMDAlMDAlMjAlMDAlMDAlMDAlMjAlMDglMDYlMDAlMDAlMDBzenolRjQlMDAlMDAlMDYlOUZJ
REFUWCVDMyVCRCU5NyU1QiU4Q1UlRDUlMTklQzclN0ZrJUVEJUZCJUI5JUNDOTNzZiU4NmElODYl
MTklMDgyJTE2QSUyQiVBMCVDNWklQTMpYklQaGp4aWMlRDMlOTglMThjY2IlQ0JTUzBpbSVBM0kl
RkIlRDAlRDYlQTQlMEZNbCVEMSVBNiVFMSVBNSVBNCFBJUI0JUFERiVBNWQlMUElOEMlMDhRJUMw
JTBFMCU1QyVFNyVDNiU1QyVDRiU5QzklRDclN0QlRjZ1JUY1YSUyNiU4NjRhJTA2Tm0lQkYlRDcl
QkQlRDYlRjclRkYlRUQlQjUlQkUlREIlODIlQzYlRUQlMUJ0JUYzJUREJThEJUJGJUIxJTI2WCVD
MU8lODAlMjQlRkY3ayVFNSVCOSVGRSU4MyU5NiVEQSVGNWZSJUZEdCVFQyUxRSVGNSVDRHclQjMl
OEElNUUlRjY1JUUySiVCQiVFMyUxRCUwRSU3QjYlRkQlRDIlRkMlRUQlQjYlQUQlRUJsJUJCJUQw
QiVFOSU5QSVBMCVCMyUzRCU4RCVGM1BtJUZCJUI1JUY3JTgzJUVCJUI4JTlDJUY5XyUwMiVGNCVC
NiU3RCU5Rld3JTNFJUIxZm0lRjElOUNOWCU4MzglODRaJTFFViVBRUoxYiVFNyVGQiVBQSUxRnIl
MTQoJTdEJUYxJTAwLSVFQ1klRjMlMTJHJTFFJTdGJTdDTV8lRkRGJTg4JyUzRCU4NCUxMSU4MyUx
OSUxMCUxOFUlQTIlOEElRTIlQkUlODdzbSVBMyU5OSVCOSU5RCVENSUxMyUxQyVCOSU1RCU4OCVF
NSUwMHolRTglNjAlMEIlM0RsJUZCJUNBSyVENiU5RiVCRSVCNn5tamolN0MlOTJ6JUQ5ISVBRHdy
JTIzJUJFSjklQUMlRDAlQzIlNUQlMTQlQUFFKiVDNVk2JTNGJUI0KjclOUMlMkMlRUNwJUFGM0Ql
MDclRkQlMTQlMTglMDMlRUElQjclMTIlMTAlQ0IlMDAlRjR1JUJEJTIyTyVERiVENSU5N0h1JUFC
TiVFNiU4QiVEM2wlRUN4JThDJTdEJTNCJUZFQiVDNiU4MiU4MSVBMSVGN0klOTglMDklQjYlQUMl
RUUnXyVGM3glRjklQkQlREQlNUMlOTklRkQlOTglRjQlOEFmLkwlOERTJUFEJUM3JTVDJTdDJTNF
JUJDJTBGOHclMkIlMDElQjklMEMlQzAlQUElODQlRDJlJUI3JUQ3TXklRENHWiUxMSVGQnctJTg4
JTAzJTNDJURDJUI3JTlELSVBQiVGQiUxNyUxMiUyM2ElRjElQTMlMUQlN0YlQzYlQzclQTclM0El
MDQlRUIlRTI1JUU0JUY0JTI0dCVCMSU3RCklODElQTUlMDBSJUI0JUIzLiU5OCU5NSVBRV8lOEYl
RjBjJThGJTVDJUFBJTgzJUE0JTgwUSUwRiUwRSVGQyVFMSUwMCUwMSUxMCUwMSUwNyU1RSU3RiU5
RCUxQiUwMSVCNCVEOCVDRGQlOTNpJTdDJUU1JUUzJTk1Y2wlMkNoY3UlQTMlMDAlOTElQkUlOUIl
RTclRkJ3dSVCNiUwNi4lQzRqJUUxJUJFJTNDJTYwaCVBNCVDOCVERSUxRiVGRSU4MDMzJTExJUE3
JUE2JTAyJUY2JUJFJUYwJTAyJTk3JUM3anglOEIlMUIlRTNYJUExJUE0JTQwJTA2eiVBQyVGNyU4
QSU4RCVDMCUwMyU4RCUwMCVCOCVFMSF+dSVFMSVFNCUwQ3ElQTglOTAlOTglQ0MlOTQlMjYlOTkl
MEQlQzElRTglQ0MlRjAlRTIlODElQjclQTglRUIlMUElQTFtJUIwJUVGJUI1JUEzWCUyQiUxMkwl
RDRmJTk5JTJGJTk3JTkxJUNBJTQwSCVDNWwlQTElQTIlQzIlQjMlRUElMDMlNjAlQjAlQjElMTgo
JUYzJUY2JUUwRyU5NTElQ0QlMTFIJUE1UyUyQyklRkV+JUVFRSUxRUklQzElOEYlQkYlQkQlOEQl
N0YlNUMlRkElMEUlQTclQUUlRURlJUZGUyU4RiVCMiVENSU4MSVCNyVDRSVFQyVDMyVBRCU4MiUx
MCUxQSolMDYlQ0QlOTIlODIlMDQlMTYlRDAlN0QlMkIlMDklN0QlOTklMjBMJTI2JUJCJUM4JUQ0
JTg1JUEyJUE4YiUwQyVCRiU4NSU4MydfZSVCQyUzQyVDRSU5Q1clRTJvJTlGJUJEJTgzJTI2JUUw
en4lMTIlNUIlQzAlQzAlODUlQTMlOThhJThFeSUxNSU5M0QlRDIlOTQlQjYlMjRZJUZBJTAwJUI3
JUQxNCVFQ0olM0YlQ0IlQTUlM0QlNUIlQkYlRTR0JTk0JTI0JUE3QiU4RiU5Ml8lQzNVRTYlNUIl
MEVPJUI1JTdGJTE5JTVESiUwRU0lOUQlRTFDJUI3JThBITMlMjQlRjUlMDQlMEYlMUElMTYlRTUl
QUMlRTIlQzAlM0IlRTcnJUEyQ2wlMDAlMEElOEQlOUUlQzB0JUY5JUY3JTNDJTk5JUNCX34lRTMl
MTclQkIlRUYlRTklRjRCJTlEJUFBbCVDNW4lREFEJUEyJUJEJTE3JTlBWiUwMXh0JUY1JUREJUY4
JUQzJUMzVCU4QSU5MyVEOCVDQSclQTElMTRvJTBFJUNGJUYwJURBcSVGRSUwOCVCNC4lMDUlQjAl
NUMlMjUlOEMlODElMkInJUNFJUM3JTAzJUQ3SiVEM08lRUUlQjk3JTkxSCVBNG0lOENsJTA2JTJD
JTAzRCVCNHAlQkElOTElOEIlMjYlM0QlOUMlQjglOEMlQUUlOEElQkMlN0MlRTR6JUY1JUI5JUMz
JUM1XzMlQzN+JTYwbiklMDElRkQ2JTNCJUMxJUM5TSVCMSUxQSVBRCVEQiVERCVCOSVEOSU4QUZx
JTdDJTEyJUFGdCUwRE1JJTA0JTkyJTkwJTAwMyVFNSU5MCVDRSVBNiVFOElnJUU5JTEzV2slQ0Ml
RjIlQjMlMkYlQUUlMTllJUQ5JTk1fiVDMnp2JUFDJTE0WSVFNiVCQiU5NyVBOE8lMTRRJUIyJTA1
JUQ3WSU4QiUyQnMlQTglN0MlOEQlQ0ElQzUlMkIlQ0MlN0QyJUNDYSolMEN0JTA0JUQ2JUQ5UyVF
MWlCLi4lRTdaJURDJTg2JUZDJUZBdSVBRiU4OCU4MU0lRkQlOUJaJTBCJTk3JTNDJUJBJTg2JTJC
JUQ0JTNDJTlGSSVBMSVDOEcxaCU4MiUwRSVEMyUyMCUxNyU4MSUxMyVDMCVFOColOUIlQ0MlRkQp
TiUxRiVGQnRsJUU0JUU3JTdDJTFEJUI4JUYyJURGJTAwOCVFRCU3QiVGOSVGOCU1QiUzQiVFRiVE
RlAlMTklMDYlM0QlOTMlMjIlRUYlMDYlMTQlRjIlRDMlQjQlQjdnUSVGNSUwMCVBMSUwOSVGQzAl
QzQlMERidDNFRldQJUY1JUM4JURFJUFEcSVGOCVGMCVEOVNzJUJGJUUzJUFCJTQwJUQwJUQ4JTE1
JUY0JUYwJUY0JTIzJUNGJUI0JTNFJUEzTSVBNnElOUElRDMlRDQlNUQlMEYlQkYwRyU3QlMlODIl
RjYlOTY0KiUwQ2lKJURBJUI0NCUyNWglQjJ0JTg0JTVCRyU5NyUyNiU5NiVBRCVFMyVDRCVDNmQl
RDd5JTJCJUFGflQlQkYlNDAlQTklQjFuJUE4NSUzRiVDNiVGN3IlQjIlMUQlMjUlMDQlQkFpUCU5
RCVBRiUxMiVGQSUzRSU5Nm0lRTAlRDYlRUElQTQlRDNJJTFDJUM3RiU5MyUxMiVDMyVEMCU4OSVD
MyUwMCVBRiUxRSU2MCUyNiUxMiglQTUlRTglQjAlM0FJbyVFMyVFOSVBNXQlOTYlMDIlRThsJUVE
YXNYJTk0JUU4JUI2RSVCOVQnJTNGOUMlQUUlQTMlMTklQ0IlQjFxJTEyNiVCQWUlNjAlOTglMUEl
ODZtJUEyJTlCJTA2JUNEbSUxOSU4QSVGOSUwMiVCNSU5QSU4RmYlMUFQJUQ2aSVFRCVFNSVDMSVD
NVpwJTg3JTAwKVIlQzQlRDIlODglN0NFaSVDRWVkaCU5NCVGNiVBRWYlOTIpJTlCKCU4QyU5MCVC
QSU4NlAlMEIzYXklREUlQzUlQjQlMEMlREMlQUFHcyU1QiU5MiVFOSVEMSUxOSolRjMlMUUlODEl
MTchYmElMDIlQTlGJUVBJTgwJTg4YiU4NCU5MCU4QSU5MSVDQiVFM2RaLSU5QSVEQiU5QSglMTVr
JUU4JTlBJUMwJUFEJUQ1JTg5JTIzJTg1biUxQXglQUVLJUMyWSU5OFJSTSUwOSVEQ0olOUQlODkl
RTElMTlWJUFGJUNGJTExJUM1SyUwNyVGQSVBRE8lQTAlQzIlOEQlRDIlN0MlM0MlM0I1WiVBNTQl
MUIlQzQlQ0QlMUQpJUFBJUE1JTNBYSUxMCVBMiUxMCU5OCU5NkEyJUUzJUUwJTI0JTBEWiVEQSVC
MiU5NEtlNCU1RCUyMyUwQSUyMyVCMiVBRGliJUE1JUE4JTk0JTVEJUNBc2olMDIlOThqJTI0JTA2
JThBJTg1cSVGRVUlRjIlQUIlQTFSSiUxOSVBNiU4MVIlMTFSSCU4NCUwMCElMDQlRkFiJUYwJTA5
TSUyMDUlQjklRjAlQUJKJUExJTlCJTEyJTI1JTIwXy0lQzclODVpJTNFJTAzaiUwRCVDRCUwMyVD
MiUyMHFlJUEwMiUxOFRkJTE1JTBEJTg0dlMlRTVYUCUwMyVCNSVFOEglMTMlMjBBSCU4MVIlOEEl
Q0FMJUVDJTVFJTNFJTVFJUI5LiU5MjglOEQlRjYlMDIlMTElN0QlQzIlQTclQTUlQUIlQkUlRTZn
JTIzLSVEOCUxM21wTCUxMyUxNEhNJUEyJUU5JTAyTSU5NyVFOCVBNiUyMCU4RSElOEUlMjQlOUEl
MTQoJTA5OCU5MiVFOXNuYX4lRDAlM0IlQTZ6KDclREElMEIlMUMlRTYlMThEUSUwQyVERHglN0Ml
RTglOUZzJTk2JUQ3VCVFQlV6JTg0YUl0SyU4MiUxMCU4NFElOEMlRTclMDdUJTJCVSVBNiVBNiUw
QSU1QyUxQSU5QyVFNCVEOCUxQiUyMyVFNyVBQmclRkQlODMlQzQlMUMlQTclQzBfJTE3JTA3JTky
JUYwTkslQjElMDYlRDglODAlQjMlOThGJTE5JUUwJTVFJTA0JTBGJUQwJUNERlpYaTglQTQlMDFC
JTE3VyU5NSVDOTMlQzY5JTdDTiUwMGclMTYlREJwbSVGMVElRDIlMTAlQzAlN0YlQUUlRDMlRjkl
RkMlQzYxJTE3JUMxJUVDJUM1byVGRU1iJTlGTyVENTclQUQlQkYlQTUlRkQlMUIlQkQlRTklREQl
RkElM0UlOUYlM0ElRkUlMDAlMDAlMDAlMDBJRU5EJUFFQiU2MCU4MiIgLz4sIHRoZSBBZGl1bSBt
YXNjb3QuPC9wPgoKPHA+Q29weSB0aGUgYWJvdmUgcGFyYWdyYXBoLCB0aGVuIHBhc3RlIGl0IGlu
dG8gYSBwbGFpbi10ZXh0IGVkaXRvciAoc3VjaCBhcyBUZXh0RWRpdCBpbiBwbGFpbi10ZXh0IG1v
ZGUpLiBJbiB2ZXJzaW9ucyBvZiBXZWJLaXQgd2l0aCA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIwMCIgdGl0bGU9IldlYktpdCBidWcgbnVtYmVyIDEx
MjAwIj50aGUgYnVnPC9hPiwgdGhlIGltYWdlIHdpbGwgYmUgZHJvcHBlZCwgcmF0aGVyIHRoYW4g
dGhlIGFsdCB0ZXh0ICgmbGRxdW87QWRpdW15JnJkcXVvOykgYmVpbmcgc3Vic3RpdHV0ZWQgZm9y
IGl0LjwvcD4KCjxwPlRoaXMgdGVzdCBjYXNlIHdhcyBjcmVhdGVkIGJ5IFBldGVyIEhvc2V5ICh0
aGUgb3JpZ2luYWwgcmVwb3J0ZXIgb2YgV2ViS2l0IGJ1ZyBudW1iZXIgMTEyMDAsIHdoaWNoIGlz
IHRoZSBidWcgbGlua2VkIGFib3ZlKSwgaW4gcmVzcG9uc2UgdG8gPGEgaHJlZj0iaHR0cDovL3Ry
YWMuYWRpdW14LmNvbS90aWNrZXQvNTY2MCI+QWRpdW0gYnVnICM1NjYwPC9hPi48L3A+Cgo8L2Jv
ZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194106</attachid>
            <date>2013-03-20 13:29:43 -0700</date>
            <delta_ts>2013-03-21 15:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-11200-20130320132532.patch</filename>
            <type>text/plain</type>
            <size>23189</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMxYTgxNzc1ZWQxNzgx
MWZmOGQzOTAxYjU5ODVjZjkxMDA0MWYyNi4uNTllMjIwY2RiZTEyODAxMDAwOTZhODliMmI0NTE4
MGNkNTFjZGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAzLTIwICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1hZ2UgYWx0IHRleHQgbm90
IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZmxhZyBUZXh0SXRlcmF0
b3JFbWl0c0ltYWdlQWx0VGV4dCB0byBUZXh0SXRlcmF0b3IgdGhhdCB3aGVuIHNldAorICAgICAg
ICB3aWxsIGVtaXQgdGhlIGFsdCB0ZXh0IG9uIDxpbWc+IG5vZGVzLiBTZXQgdGhpcyBmbGFnIHdo
ZW4gY29weWluZworICAgICAgICB0ZXh0IHRvIHRoZSBjbGlwYm9hcmQuCisKKyAgICAgICAgRXhw
b3NlIHRoaXMgYXMgYSBuZXcgbWV0aG9kIHNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIG9uIEVk
aXRvciBzaW5jZSBzZWxlY3RlZFRleHQoKQorICAgICAgICBpcyB1c2VkIGluIG1hbnkgZGlmZmVy
ZW50IGNvbnRleHRzIGFuZCBzb21ldGltZXMgd2UgZG9uJ3Qgd2FudCB0aGUgaW1hZ2UgYWx0IHRl
eHQKKyAgICAgICAgKGUuZy4sIHRoZSAiTG9vayB1cC4uLiIgY29udGV4dCBtZW51IGl0ZW0gb24g
T1NYIHVzZXMgRWRpdG9yOjpzZWxlY3RlZFRleHQoKSkuCisKKyAgICAgICAgVGVzdDogZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmN1dCk6IFVwZGF0
ZSB0byB1c2Ugc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpjb3B5KTogVXBkYXRlIHRvIHVzZSBzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCk6IFVzZSBwcml2YXRlIHNlbGVjdGVk
VGV4dCBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dEZvckNs
aXBib2FyZCk6IFBhc3MgVGV4dEl0ZXJhdG9yRW1pdHNJbWFnZUFsdFRleHQgdG8gcGxhaW5UZXh0
KCkuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRv
cik6IEFkZCBhIGJvb2wgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0byBlbWl0IGlt
YWdlIGFsdCB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBs
YWNlZEVsZW1lbnQpOiBUaGlzIGlzIHRoZSBjb21wbGljYXRlZCBwYXJ0IG9mIHRoZSBjaGFuZ2Uu
CisgICAgICAgIFVwZGF0ZSB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIGFsdCB0ZXh0LCBi
dXQgb25seSBpZiBpdCBpcyBzZXQuCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbik6IFVzZSBzZWxlY3RlZFRleHRGb3JD
bGlwYm9hcmQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndyaXRlUmFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkUXQ6Ondy
aXRlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZFdpbjo6d3JpdGVSYW5nZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2Fy
ZFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9u
KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6YWx0VGV4dCk6IEFkZCBhIHB1YmxpYyBhY2Nlc3NvciB0byBn
ZXQgdGhlIGFsdCB0ZXh0LgorCiAyMDEzLTAzLTIwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGbGFtZSBDaGFydC4gUHJv
dmlkZSBPdmVydmlldyBwYW5lIGZvciBiZXR0ZXIgdXNlciBleHBpcmllbmNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IGI1YjVhMDMzODMyOTM3NTI1YmIxNjg3NTA2NjY3YzI2NjBj
MjE5NDcuLmMyNjA1ZDdlZmRiMjQzNzkxMzBmNWYyY2ZhMjcwNTg4NzM0NDdjNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgRWRpdG9yOjpj
dXQoKQogICAgIGlmIChzaG91bGREZWxldGVSYW5nZShzZWxlY3Rpb24uZ2V0KCkpKSB7CiAgICAg
ICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKHRydWUpOwogICAgICAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFy
dCgpKSkgewotICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3Jp
dGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0KCksCisgICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQo
KSwKICAgICAgICAgICAgICAgICBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6
Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53
cml0ZVNlbGVjdGlvbihzZWxlY3Rpb24uZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1f
ZnJhbWUpOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBFZGl0b3I6OmNvcHkoKQogCiAgICAg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKHNlbGVjdGVkUmFuZ2UoKSk7CiAgICAgaWYg
KGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKSkp
IHsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQoc2VsZWN0ZWRUZXh0KCksCisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJk
KCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpLAogICAgICAgICAg
ICAgY2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0UmVwbGFjZSA6
IFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTI2MTMsOCArMjYx
MywxOCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwKIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRU
ZXh0KCkgY29uc3QKIHsKKyAgICByZXR1cm4gc2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckRlZmF1
bHRCZWhhdmlvcik7Cit9CisKK1N0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JFbWl0c0lt
YWdlQWx0VGV4dCk7Cit9CisKK1N0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChUZXh0SXRlcmF0
b3JCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK3sKICAgICAvLyBXZSByZW1vdmUgJ1wwJyBjaGFy
YWN0ZXJzIGJlY2F1c2UgdGhleSBhcmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIu
Ci0gICAgcmV0dXJuIHBsYWluVGV4dChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSkucmVwbGFjZSgwLCAiIik7CisgICAgcmV0dXJuIHBsYWluVGV4dChtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYmVoYXZpb3IpLnJl
cGxhY2UoMCwgIiIpOwogfQogCiBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoUmFu
Z2UqIHJhbmdlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNWJkNWE0MDAzYTY4
OTNlOTc3MTM1OGRiYTQ2YzZlNjM1MzYwOTk0Zi4uMjQyOWMzZDYyMWQ3MzVkNjhhNDljNmQ3MDQw
OWIyOTA5ZjJhNzhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVT
ZWxlY3Rpb24uaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKKyNpbmNsdWRlICJUZXh0SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiV3JpdGlu
Z0RpcmVjdGlvbi5oIgogCkBAIC0zNTUsNiArMzU2LDcgQEAgcHVibGljOgogICAgIE5vZGUqIGZp
bmRFdmVudFRhcmdldEZyb20oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25z
dDsKIAogICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdDsKKyAgICBTdHJpbmcgc2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgY29uc3Q7CiAgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zKTsKICAgICAvLyBGSVhNRTogU3dpdGNoIGNhbGxlcnMgb3ZlciB0
byB0aGUgRmluZE9wdGlvbnMgdmVyc2lvbiBhbmQgcmV0aXJlIHRoaXMgb25lLgogICAgIGJvb2wg
ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBib29sIGZvcndhcmQsIGJvb2wgY2FzZUZsYWcsIGJv
b2wgd3JhcEZsYWcsIGJvb2wgc3RhcnRJblNlbGVjdGlvbik7CkBAIC00NDIsNiArNDQ0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RN
aXNzcGVsbGluZ1JhbmdlKTsKICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayByZXNvbHZlVGV4dENo
ZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZU1hc2spOwogCisgICAgU3RyaW5nIHNlbGVj
dGVkVGV4dChUZXh0SXRlcmF0b3JCZWhhdmlvcikgY29uc3Q7CisKICAgICB2b2lkIHNlbGVjdENv
bXBvc2l0aW9uKCk7CiAgICAgZW51bSBTZXRDb21wb3NpdGlvbk1vZGUgeyBDb25maXJtQ29tcG9z
aXRpb24sIENhbmNlbENvbXBvc2l0aW9uIH07CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmLCBTZXRDb21wb3NpdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCmluZGV4IGE4NTA4YzIzMjg0OTU1ZDY5ZWUyYzAwZWE5MzM2NzM0MTQ1OGRl
ZWYuLjQyOTM1YzFhM2M1Yzg4M2FkZTlkMTg3ZjMwOThhYTRmNjllOGI5YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IlJhbmdlLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJs
ZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRDb250cm9sLmgiCkBAIC0yNjcsNiArMjY4LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0
b3IoKQogICAgICwgbV9lbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyhmYWxzZSkKICAg
ICAsIG1fc3RvcHNPbkZvcm1Db250cm9scyhmYWxzZSkKICAgICAsIG1fc2hvdWxkU3RvcChmYWxz
ZSkKKyAgICAsIG1fZW1pdHNJbWFnZUFsdFRleHQoZmFsc2UpCiB7CiB9CiAKQEAgLTI5MCw2ICsy
OTIsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgLCBtX2VtaXRzT2JqZWN0UmVwbGFjZW1lbnRD
aGFyYWN0ZXJzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBsYWNlbWVudENo
YXJhY3RlcnMpCiAgICAgLCBtX3N0b3BzT25Gb3JtQ29udHJvbHMoYmVoYXZpb3IgJiBUZXh0SXRl
cmF0b3JTdG9wc09uRm9ybUNvbnRyb2xzKQogICAgICwgbV9zaG91bGRTdG9wKGZhbHNlKQorICAg
ICwgbV9lbWl0c0ltYWdlQWx0VGV4dChiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzSW1hZ2VB
bHRUZXh0KQogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwpAQCAtNzA4LDYgKzcxMSwy
MCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKG1fZW1pdHNJbWFnZUFsdFRleHQgJiYgcmVu
ZGVyZXItPmlzSW1hZ2UoKSAmJiByZW5kZXJlci0+aXNSZW5kZXJJbWFnZSgpKSB7CisgICAgICAg
IG1fdGV4dCA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5hbHRUZXh0KCk7CisgICAgICAgIGlm
ICghbV90ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9wb3NpdGlvbk5vZGUgPSBtX25v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9
IG1fbm9kZTsKKyAgICAgICAgICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IDA7CisgICAgICAg
ICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gMTsKKyAgICAgICAgICAgIG1fdGV4dENoYXJhY3Rl
cnMgPSAwOworICAgICAgICAgICAgbV90ZXh0TGVuZ3RoID0gbV90ZXh0Lmxlbmd0aCgpOworICAg
ICAgICAgICAgbV9sYXN0Q2hhcmFjdGVyID0gbV90ZXh0W21fdGV4dExlbmd0aCAtIDFdOworICAg
ICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAgICAgbV9wb3NpdGlv
bk5vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKICAgICBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5v
ZGUgPSBtX25vZGU7CiAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDY4ZDgwMTBkZDUxMjQ2ZDA3NmYwZDVlYWFkM2Jl
N2YxNDdjZWZmYWUuLjkxODE1MTE3YzIzYzVlNzhjODllYzY4MjQxNWFmOGNlZDQyZWEyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtNDQsNyArNDQsOCBAQCBlbnVt
IFRleHRJdGVyYXRvckJlaGF2aW9yIHsKICAgICBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNp
YmlsaXR5ID0gMSA8PCAzLAogICAgIFRleHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRD
aGFyYWN0ZXJzID0gMSA8PCA0LAogICAgIFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0ID0g
MSA8PCA1LAotICAgIFRleHRJdGVyYXRvclN0b3BzT25Gb3JtQ29udHJvbHMgPSAxIDw8IDYKKyAg
ICBUZXh0SXRlcmF0b3JTdG9wc09uRm9ybUNvbnRyb2xzID0gMSA8PCA2LAorICAgIFRleHRJdGVy
YXRvckVtaXRzSW1hZ2VBbHRUZXh0ID0gMSA8PCA3LAogfTsKICAgICAKIC8vIEZJWE1FOiBDYW4n
dCByZWFsbHkgYW5zd2VyIHRoaXMgcXVlc3Rpb24gY29ycmVjdGx5IHdpdGhvdXQga25vd2luZyB0
aGUgd2hpdGUtc3BhY2UgbW9kZS4KQEAgLTE5Myw2ICsxOTQsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9zdG9wc09uRm9ybUNvbnRyb2xzOwogICAgIC8vIFVzZWQgd2hlbiBtX3N0b3BzT25Gb3Jt
Q29udHJvbHMgaXMgc2V0IHRvIGRldGVybWluZSBpZiB0aGUgaXRlcmF0b3Igc2hvdWxkIGtlZXAg
YWR2YW5jaW5nLgogICAgIGJvb2wgbV9zaG91bGRTdG9wOworCisgICAgYm9vbCBtX2VtaXRzSW1h
Z2VBbHRUZXh0OwogfTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9NIHJhbmdlLCByZXR1
cm5pbmcgYWxsIHRoZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDdiZmVhMDZmNjM0Nzg1MDkwMzVhYmZkYzk3
MGRkMTUxYjhiYzkyMjguLmEwODYwZTJiNTg1NzRmZjc1OGMwYmM1YmU2NWNjNmZlNmNkYzEzNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCB2b2lkIEVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCkKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TU3RyaW5nUGJvYXJk
VHlwZSkpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3BsYXlT
dHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0KCkpLCBOU1N0cmluZ1Bib2FyZFR5
cGUsIE5TRmluZFBib2FyZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpLCBOU1N0cmluZ1Bib2FyZFR5
cGUsIE5TRmluZFBib2FyZCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCAwNDA0NTk0MGYzNWZjZmRjNjhmZWM4NTI5MGRjMDhjNTNmOTdlZWM2Li5kMzYxOWViYWNi
M2MwNmFlMGUyY2ViMGM4NDQyM2ViOGNmZGYyNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcApAQCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0
YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9u
CiAgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikg
ewogICAgICAgICBpZiAoIWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAo
ZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAg
ICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQo
c3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNy
Yy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHNlbGVjdGlvblJhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKaW5kZXggNjA4ZTI0ZGZi
OTZhYzBkZWIxODZmMmJjOWFjNzY3MGUxZjYyMTVlZS4uMmQ4OGFhZWZmNWM3ZWNlMjAwMTZhYWE1
NTNmZDU3NGNiOTdjYWEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQqKQogCiB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sLCBGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgV1RGOjpTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCk7CisgICAgV1RGOjpTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CiAgICAgV1RGOjpTdHJpbmcgaHRtbCA9IGNyZWF0ZU1h
cmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKICAgICBXVEY6
OlN0cmluZyB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVt
LmNwcAppbmRleCBmYzM3Mjc4ZDZiOTIyNzNhZDg5NTIxNTcyZWI1ZDg0ZGJhZTkyMTg5Li5hMDE5
MTE4MDJkOTZiYTUxYzdkNWNlMTljNjVlODEyZGY2OTE5ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBAIC00
MzIsNyArNDMyLDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6d3JpdGVSYW5nZShSYW5nZSog
c2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgbV9kYXRhT2JqZWN0LT5zZXRIVE1M
QW5kQmFzZVVSTChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkpOwogCi0gICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0
KCk7CisgICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCk7CiAjaWYgT1MoV0lORE9XUykKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93
c1N0eWxlTmV3bGluZXMoc3RyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggZGYxYzZlNTU0
ZDMzNWJmYWEzZGM2OTE0M2YxZTZiMzM1NzQyMmNhYy4uYTFkN2EzNjFhOTQ3OTUzOTgwZDNjNWRm
Y2RmMzNkZGQzODc5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGUsCiB7CiAgICAgU3RyaW5nIGh0bWwgPSBjcmVhdGVNYXJrdXAoc2Vs
ZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25M
b2NhbFVSTHMpOwogICAgIEtVUkwgdXJsID0gc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIo
KS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgU3RyaW5nIHBsYWluVGV4dCA9IGZyYW1lLT5lZGl0
b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHBsYWluVGV4dCA9IGZyYW1lLT5lZGl0
b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CiAjaWYgT1MoV0lORE9XUykKICAgICBy
ZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMocGxhaW5UZXh0KTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCAy
NjNiNmNmOGYyZWRjNTk5OGYxNWEwMWFlYmM1NzIyZTM1OTY2NDRhLi4xOTAyNmQzN2ZlZWQwOTIw
NjY4ZWM3OGY3N2ZkMDRjN2ExZjk4OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgQ2xpcGJvYXJkR3Rr
Ojp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogewogICAgIEFTU0VSVChy
YW5nZSk7CiAKLSAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKSk7CisgICAgbV9kYXRhT2JqZWN0LT5zZXRUZXh0KGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpOwogICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3Vw
KGNyZWF0ZU1hcmt1cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJl
c29sdmVOb25Mb2NhbFVSTHMpKTsKIAogICAgIGlmIChtX2NsaXBib2FyZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBjZDYyMDU0MjUyYmE2
MDRhMzJlN2M4NmI4YzFkZGE2MDNiZWZlZDljLi45YWE3YTJmNTk2NmM5MjMyZTJiMDE5OTM2NDY4
N2JiODMyZTFkMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAg
RGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChj
bGlwYm9hcmQpOwogICAgIGRhdGFPYmplY3QtPmNsZWFyQWxsKCk7CiAKLSAgICBkYXRhT2JqZWN0
LT5zZXRUZXh0KGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIGRhdGFPYmpl
Y3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7
CiAgICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAw
LCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwog
ICAgIGhlbHBlci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQsIGNhblNtYXJ0Q29w
eU9yRGVsZXRlID8gUGFzdGVib2FyZEhlbHBlcjo6SW5jbHVkZVNtYXJ0UGFzdGUgOiBQYXN0ZWJv
YXJkSGVscGVyOjpEb05vdEluY2x1ZGVTbWFydFBhc3RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggMmViZWMyMGIzYmM2YTU0NWFhOTgw
NWY0YWQwNWU5OWEzZTkyYzY0My4uNTMwY2IxMmE3NjhiNDViOTA4N2Q0NGNhMzE2ZTQzY2E0NTc0
OGQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
QEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIAogU3RyaW5nIFBh
c3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5n
IHRleHQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyB0ZXh0
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICB0ZXh0
LnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IDcxYzkxY2I0MWI2Y2Ux
ZGE5MmY2MjNmZTUwOTFkNGJiMGNjOGQzNzguLjA3NTdmZjc2ZmU1ZDJiZjU1ZWEzNTQ5MGFjZjRk
MWU4YTdiNjRjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBi
b2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5j
cHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIENsaXBib2FyZFF0Ojp3cml0ZVJhbmdlKFJhbmdl
KiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFtX3dyaXRhYmxlRGF0YSkKICAgICAg
ICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwotICAgIFFTdHJpbmcgdGV4dCA9IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICB0ZXh0LnJlcGxhY2Uo
UUNoYXIoMHhhMCksIFFMYXRpbjFDaGFyKCcgJykpOwogICAgIG1fd3JpdGFibGVEYXRhLT5zZXRU
ZXh0KHRleHQpOwogICAgIG1fd3JpdGFibGVEYXRhLT5zZXRIdG1sKGNyZWF0ZU1hcmt1cChyYW5n
ZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCmluZGV4IDA4
ZTk3YzdkNjg4NGQ5NTM2YjM5MzU5MWMyYzk1YzgxMjUxYmRhMWUuLmM0ZGNhMDhlMDM1NDMyYTcz
OGQxMzU3YjFlYTdmNDlmNWRhMjY4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UGFzdGVib2FyZFF0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJk
OjpnZW5lcmFsUGFzdGVib2FyZCgpCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUpCiB7CiAgICAgUU1pbWVEYXRhKiBtZCA9IG5ldyBRTWltZURhdGE7Ci0gICAgUVN0cmluZyB0
ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBRU3RyaW5nIHRleHQg
PSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOwogICAgIHRleHQu
cmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRleHQo
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAK
aW5kZXggYzJmOTk2NDk2OTliNjQ5ZWVlNmFlY2JlZmRjZDIzZWY5MTAxYzJlMy4uM2M2MGIwZGQ1
MWY0NzVlMWMyOWI0NTM4MzViMjkwZmYyZGVkYTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc0Nyw3ICs3NDcsNyBAQCB2b2lkIENsaXBi
b2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQog
ICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3QtPlNl
dERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFsRnJl
ZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxl
TmV3bGluZXMoc3RyKTsKICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShzdHIpOwogICAgIG1lZGl1
bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShzdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGRkZTJlMjQwNGU5ODdiMmMyNmJkNjEy
NjhiYWQzMWNlNWJhYWQ4YzIuLjVkNzQwMDA1MDk1Y2RjN2M2N2RkYzAxOWM2MzA3YTYwNjFlZjhh
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdl
KiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0KICAgICAK
ICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RFVEVY
VCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NT
dHlsZU5ld2xpbmVzKHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsKICAgICBp
ZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcAppbmRleCA1ZWYzZDJiZjhhZGUzNTI0MDA4
M2YxZTlkNjY5NjY5YmRlMWUzMThlLi5iOWZkYTM2ZTI4ZTE2NmUyYmQyNWYyNGNhOTI0OTRlYzY3
ZmMzMTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJv
YXJkV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9h
cmRXaW5DRS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2Vs
ZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAog
ICAgIH0KIAogICAgIC8vIFB1dCBwbGFpbiBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuIENGX1VO
SUNPREVURVhUIGNvdmVycyBDRl9URVhUIGFzIHdlbGwKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUt
PnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVz
KHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsKICAgICBpZiAoOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmlu
ZGV4IGUxNzE0ZjVmZWQxMTM2NGQzMzRkYTllN2Q2YWFkYjlmZjM0YWIxYTQuLjE1Yzc5MDY3Y2Fk
MjZmMDBiZmM2YmE2Y2Q0M2NkZjYxOTViM2JjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNHZW5l
cmF0ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRlZENvbnRlbnQ7IH0KIAor
ICAgIFN0cmluZyBhbHRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9hbHRUZXh0OyB9CisKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQcmVmZXJyZWRXaWR0aHNSZWNhbGN1bGF0aW9u
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGYwM2QzNGYzNTFlZDAzNTYwMWY4ZTU5OTY4NjM0MDE5ZDc2NWZkODkuLjA3
OTUzYWY0N2Q0NmZhMTRmMjkyMzhlMWY4OTFiYTdmNDlhNzgyNmYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMy0wMy0yMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEltYWdlIGFsdCB0ZXh0IG5vdCBpbmNsdWRlZCBpbiBwbGFpbi10ZXh0IHZlcnNpb24gd2hl
biBjb3B5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgt
YWx0LXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjAgIMOBZMOhbSBLYWxsYWkgIDxrYWRh
bUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBRdCA0LjggZXhwZWN0ZWQgcmVzdWx0
cyByZW1vdmFsIGZyb20gVHJ1bmsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVjNDI5NGVhZDhlYzA5NjNmNmU0Nzg1Y2JmMzdjMWUyMjkxNjRkM2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1p
bWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRl
c3RzIHRoYXQgaW1hZ2UgYWx0IHRleHQgbWFrZXMgaXQgdG8gdGhlIGNsaXBib2FyZC4KKworRHVt
cCBvZiBtYXJrdXAgMToKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2PgorfCAgICAgICAi
SGVyZSBpcyBhbiBlbW90aWNvbiBbOildLCBzb21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRdLCBh
bmQgYW4gZW1wdHkgYWx0IHRhZyBbXS4iCit8ICAgICAgICIKKworIgorCitEdW1wIG9mIG1hcmt1
cCAyOgorfCA8ZGl2PgorfCAgICJIZXJlIGlzIGFuIGVtb3RpY29uIFs6KV0sIHNvbWUgbW9yZSB0
ZXh0IFtzYW1wbGUgdGV4dF0sIGFuZCBhbiBlbXB0eSBhbHQgdGFnIFtdLiIKK3wgPGRpdj4KK3wg
ICA8I3NlbGVjdGlvbi1jYXJldD4KK3wgICA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjQxZWUzNGQyZGZlZTVjMjM3YmJmMjQ1NWUzNThlOTZlZTc1MzlkMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdp
dGgtYWx0LXRleHQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitNYXJrdXAuZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBpbWFnZSBhbHQgdGV4dCBt
YWtlcyBpdCB0byB0aGUgY2xpcGJvYXJkLiIpOworTWFya3VwLm5vQXV0b0R1bXAoKTsKKword2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHRlc3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGV4ZWNTZXRTZWxlY3Rpb25Db21tYW5kKHRl
c3QsIDAsIHRlc3QubmV4dFNpYmxpbmcsIDApOworICAgIGV4ZWNDb3B5Q29tbWFuZCgpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRhcmVhLXJlc3VsdCIpLmZvY3VzKCk7Cisg
ICAgZXhlY1Bhc3RlQ29tbWFuZCgpOworICAgIE1hcmt1cC5kdW1wKCJ0ZXh0YXJlYS1yZXN1bHQi
KTsKKworICAgIHNlbGVjdGlvbi5zZXRQb3NpdGlvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGVudC1lZGl0YWJsZS1yZXN1bHQiKSwgMCk7CisgICAgZXhlY1Bhc3RlQW5kTWF0Y2hTdHls
ZUNvbW1hbmQoKTsKKyAgICBNYXJrdXAuZHVtcCgiY29udGVudC1lZGl0YWJsZS1yZXN1bHQiKTsK
KworICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7Cit9OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPGRpdiBpZD0idGVzdCI+SGVyZSBpcyBhbiBlbW90aWNvbiBbPGltZyBzcmM9InJlc291
cmNlcy9hcHBsZS5naWYiIGFsdD0iOikiPl0sIHNvbWUgbW9yZSB0ZXh0IFs8aW1nIGFsdD0ic2Ft
cGxlIHRleHQiPl0sIGFuZCBhbiBlbXB0eQorYWx0IHRhZyBbPGltZyBhbHQ9IiI+XS48L2Rpdj4K
Kzx0ZXh0YXJlYSBpZD0idGV4dGFyZWEtcmVzdWx0IiBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdo
dDogNWVtOyI+PC90ZXh0YXJlYT4KKzxkaXYgaWQ9ImNvbnRlbnQtZWRpdGFibGUtcmVzdWx0IiBj
b250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194355</attachid>
            <date>2013-03-21 15:04:19 -0700</date>
            <delta_ts>2013-03-21 16:15:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-11200-20130321150007.patch</filename>
            <type>text/plain</type>
            <size>33365</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBlNGE2YThiOWQ0MzEx
OGU3YTM1MWMxN2VmNTJmNWQ0YmJjZDJiYi4uNWIyNjgzMzM0NTU1YjQyMmUyZWU5Y2FhZTQzZWYw
OWY0OTU0YmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTAzLTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1hZ2UgYWx0IHRleHQgbm90
IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJv
YXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmN1dCk6IEV4cGxpY2l0bHkgYXNr
IHRoYXQgdGhlIHNlbGVjdGlvbiBvbiB0aGUgcGFzdGVib2FyZCBhcyBiZWluZyBmb3IgdGhlIGNs
aXBib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6IEV4cGxpY2l0bHkgYXNr
IHRoYXQgdGhlIHNlbGVjdGlvbiBvbiB0aGUgcGFzdGVib2FyZCBhcyBiZWluZyBmb3IgdGhlIGNs
aXBib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRUZXh0KTogQWRkIGEg
cHJpdmF0ZSB2ZXJzaW9uIG9mIHNlbGVjdGVkVGV4dCgpIHRoYXQgY2FuIGNob29zZSBiZXR3ZWVu
IGhhdmluZyBpbWFnZSBhbHQgdGV4dCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCk6IEFzayBmb3IgaW1hZ2UgYWx0IHRleHQuCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEFkZCBh
IGJvb2wgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0byBlbWl0IGltYWdlIGFsdCB0
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1l
bnQpOiBJZiB0aGVyZSdzIGFsdCB0ZXh0LCBwb2ludCB0aGUgaXRlcmF0b3IgdG8gaXQuCisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKFRleHRJdGVyYXRvcik6Cisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjp0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24pOiBVc2UgdGhlIHNhbWUgdGV4dCBhcyBv
biB0aGUgY2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6IERvbid0IGluY2x1ZGUgaW1hZ2UgYWx0IHRleHQgc2luY2UgdGhpcyBp
cworICAgICAgICB1c2VkIGJ5IFNlcnZpY2VzLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKTogRG9uJ3QgaW5jbHVkZSBpbWFnZSBhbHQgdGV4
dCBzaW5jZSB0aGlzIGlzCisgICAgICAgIHVzZWQgYnkgU2VydmljZXMuCisgICAgICAgICogcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKTogVXNlIGltYWdlIGFsdCB0ZXh0IChtYXRjaGVzIEZpcmVmb3gpLgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlIHBhcmFtZXRl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d3JpdGVSYW5nZSk6IFVzZSBjbGlw
Ym9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2VzICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxlY3RlZFRl
eHRUeXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3JpdGVSYW5nZSk6IFVzZSBjbGlw
Ym9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2VzICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgcGFy
YW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OndyaXRlUmFuZ2UpOiBVc2UgY2xpcGJvYXJkIHRleHQg
d2hlbiB3cml0aW5nIHJhbmdlcyAodXNlZCBieSBkJmQpLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOiAKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmdldFN0
cmluZ1NlbGVjdGlvbik6IFVzZSBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB0byBkZXRlcm1p
bmUgd2hldGhlciB0aGUgc2VsZWN0ZWQKKyAgICAgICAgdGV4dCBpcyBmb3IgdGhlIGNsaXBib2Fy
ZCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZv
clR5cGVzKTogUGFzcyBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB0aHJvdWdoLgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNl
bGVjdGVkVGV4dFR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp3cml0ZVJhbmdlKTogVXNl
IGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUg
cGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0
ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbik6IEFkZCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBwYXJhbWV0ZXIu
CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxl
Y3RlZFRleHRUeXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9QYXN0ZWJvYXJk
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBB
ZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmFsdFRl
eHQpOiBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBhbHQgdGV4dC4KKwogMjAxMy0wMy0yMSAgU3VkYXJz
YW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBOZXcgcmVmZXJlbmNlIHJldHVybmVkIGJ5IGdfbWFpbl9jb250ZXh0X25ldygp
IG11c3QgYmUgZnJlZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0OWJmOWJlNjBh
MzYwNTAzNGZlNGZlYTM0MzM4ZmYzN2U1NmUzMjc2Li4zOTAxNWZmNTBhYmE1NTEzNmZjZDc5MTU1
MTdiOTQ0ZTRjODkxYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMDQzLDEw
ICsxMDQzLDEwIEBAIHZvaWQgRWRpdG9yOjpjdXQoKQogICAgIGlmIChzaG91bGREZWxldGVSYW5n
ZShzZWxlY3Rpb24uZ2V0KCkpKSB7CiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKHRydWUpOwogICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9s
KG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewotICAgICAgICAgICAgUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0KCksCisg
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4
dChzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSwKICAgICAgICAgICAgICAgICBjYW5TbWFydENv
cHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6
Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihzZWxlY3Rpb24uZ2V0KCks
IGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1fZnJhbWUpOworICAgICAgICAgICAgUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oc2VsZWN0aW9uLmdldCgpLCBj
YW5TbWFydENvcHlPckRlbGV0ZSgpLCBtX2ZyYW1lLCBGb3JDbGlwYm9hcmQpOwogICAgICAgICBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAgICAgICBkZWxldGVTZWxlY3Rpb25X
aXRoU21hcnREZWxldGUoY2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgfQpAQCAtMTA2Mywx
NCArMTA2MywxNCBAQCB2b2lkIEVkaXRvcjo6Y29weSgpCiAKICAgICB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoc2VsZWN0ZWRSYW5nZSgpKTsKICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewotICAgICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHQo
KSwKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCksCiAgICAgICAgICAgICBjYW5TbWFydENvcHlP
ckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fu
bm90U21hcnRSZXBsYWNlKTsKICAgICB9IGVsc2UgewogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoSFRNTEltYWdlRWxlbWVudCog
aW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQpKQog
ICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVJbWFnZShp
bWFnZUVsZW1lbnQsIGRvY3VtZW50LT51cmwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0
ZVNlbGVjdGlvbihzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCks
IG1fZnJhbWUpOworICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
d3JpdGVTZWxlY3Rpb24oc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjYW5TbWFydENvcHlPckRlbGV0
ZSgpLCBtX2ZyYW1lLCBGb3JDbGlwYm9hcmQpOwogICAgIH0KIAogICAgIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCk7CkBAIC0yNjEzLDggKzI2MTMsMTggQEAgdm9pZCBFZGl0b3I6OmNo
YW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxl
Y3Rpb24sCiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7CisgICAgcmV0
dXJuIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworfQorCitTdHJp
bmcgRWRpdG9yOjpzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSBjb25zdAoreworICAgIHJldHVy
biBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yRW1pdHNJbWFnZUFsdFRleHQpOworfQorCitTdHJp
bmcgRWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNv
bnN0Cit7CiAgICAgLy8gV2UgcmVtb3ZlICdcMCcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJl
IG5vdCB2aXNpYmx5IHJlbmRlcmVkIHRvIHRoZSB1c2VyLgotICAgIHJldHVybiBwbGFpblRleHQo
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpLnJlcGxhY2Uo
MCwgIiIpOworICAgIHJldHVybiBwbGFpblRleHQobV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIGJlaGF2aW9yKS5yZXBsYWNlKDAsICIiKTsKIH0KIAogSW50
UmVjdCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDViZDVhNDAwM2E2ODkzZTk3NzEzNThkYmE0NmM2ZTYzNTM2
MDk5NGYuLjI0MjljM2Q2MjFkNzM1ZDY4YTQ5YzZkNzA0MDliMjkwOWYyYTc4ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
VGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRpbmdEaXJlY3Rpb24uaCIKIApAQCAtMzU1
LDYgKzM1Niw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9tKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3Q7CiAKICAgICBTdHJpbmcgc2VsZWN0
ZWRUZXh0KCkgY29uc3Q7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIGNv
bnN0OwogICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAg
ICAgLy8gRklYTUU6IFN3aXRjaCBjYWxsZXJzIG92ZXIgdG8gdGhlIEZpbmRPcHRpb25zIHZlcnNp
b24gYW5kIHJldGlyZSB0aGlzIG9uZS4KICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgYm9vbCBmb3J3YXJkLCBib29sIGNhc2VGbGFnLCBib29sIHdyYXBGbGFnLCBib29sIHN0YXJ0
SW5TZWxlY3Rpb24pOwpAQCAtNDQyLDYgKzQ0NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNo
ZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAg
VGV4dENoZWNraW5nVHlwZU1hc2sgcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKFRleHRDaGVj
a2luZ1R5cGVNYXNrKTsKIAorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVo
YXZpb3IpIGNvbnN0OworCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIGVudW0g
U2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlv
biB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRp
b25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBhODUw
OGMyMzI4NDk1NWQ2OWVlMmMwMGVhOTMzNjczNDE0NThkZWVmLi5iNzZjYWQwMjliZmM5ZmNkYjRk
Y2E2ZTFlYzE4MzI5ZjFlODVmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2lu
Y2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGVSb3cuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgpAQCAtMjY3LDYg
KzI2OCw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKCkKICAgICAsIG1fZW1pdHNPYmpl
Y3RSZXBsYWNlbWVudENoYXJhY3RlcnMoZmFsc2UpCiAgICAgLCBtX3N0b3BzT25Gb3JtQ29udHJv
bHMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFN0b3AoZmFsc2UpCisgICAgLCBtX2VtaXRzSW1hZ2VB
bHRUZXh0KGZhbHNlKQogewogfQogCkBAIC0yOTAsNiArMjkyLDcgQEAgVGV4dEl0ZXJhdG9yOjpU
ZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9y
KQogICAgICwgbV9lbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyhiZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKQogICAgICwgbV9zdG9w
c09uRm9ybUNvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yU3RvcHNPbkZvcm1Db250cm9s
cykKICAgICAsIG1fc2hvdWxkU3RvcChmYWxzZSkKKyAgICAsIG1fZW1pdHNJbWFnZUFsdFRleHQo
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCkKIHsKICAgICBpZiAoIXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTcxMiwxMCArNzE1LDE4IEBAIGJvb2wgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9
IG1fbm9kZTsKICAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fcG9zaXRpb25F
bmRPZmZzZXQgPSAxOwotCiAgICAgbV90ZXh0Q2hhcmFjdGVycyA9IDA7Ci0gICAgbV90ZXh0TGVu
Z3RoID0gMDsKIAorICAgIGlmIChtX2VtaXRzSW1hZ2VBbHRUZXh0ICYmIHJlbmRlcmVyLT5pc0lt
YWdlKCkgJiYgcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkgeworICAgICAgICBtX3RleHQgPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+YWx0VGV4dCgpOworICAgICAgICBpZiAoIW1fdGV4dC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fdGV4dExlbmd0aCA9IG1fdGV4dC5sZW5ndGgoKTsK
KyAgICAgICAgICAgIG1fbGFzdENoYXJhY3RlciA9IG1fdGV4dFttX3RleHRMZW5ndGggLSAxXTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgbV90ZXh0
TGVuZ3RoID0gMDsKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSAwOwogCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCA2OGQ4MDEwZGQ1MTI0NmQw
NzZmMGQ1ZWFhZDNiZTdmMTQ3Y2VmZmFlLi45MTgxNTExN2MyM2M1ZTc4Yzg5ZWM2ODI0MTVhZjhj
ZWQ0MmVhMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTQ0LDcg
KzQ0LDggQEAgZW51bSBUZXh0SXRlcmF0b3JCZWhhdmlvciB7CiAgICAgVGV4dEl0ZXJhdG9ySWdu
b3Jlc1N0eWxlVmlzaWJpbGl0eSA9IDEgPDwgMywKICAgICBUZXh0SXRlcmF0b3JFbWl0c09iamVj
dFJlcGxhY2VtZW50Q2hhcmFjdGVycyA9IDEgPDwgNCwKICAgICBUZXh0SXRlcmF0b3JFbWl0c09y
aWdpbmFsVGV4dCA9IDEgPDwgNSwKLSAgICBUZXh0SXRlcmF0b3JTdG9wc09uRm9ybUNvbnRyb2xz
ID0gMSA8PCA2CisgICAgVGV4dEl0ZXJhdG9yU3RvcHNPbkZvcm1Db250cm9scyA9IDEgPDwgNiwK
KyAgICBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCA9IDEgPDwgNywKIH07CiAgICAgCiAv
LyBGSVhNRTogQ2FuJ3QgcmVhbGx5IGFuc3dlciB0aGlzIHF1ZXN0aW9uIGNvcnJlY3RseSB3aXRo
b3V0IGtub3dpbmcgdGhlIHdoaXRlLXNwYWNlIG1vZGUuCkBAIC0xOTMsNiArMTk0LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc3RvcHNPbkZvcm1Db250cm9sczsKICAgICAvLyBVc2VkIHdoZW4g
bV9zdG9wc09uRm9ybUNvbnRyb2xzIGlzIHNldCB0byBkZXRlcm1pbmUgaWYgdGhlIGl0ZXJhdG9y
IHNob3VsZCBrZWVwIGFkdmFuY2luZy4KICAgICBib29sIG1fc2hvdWxkU3RvcDsKKworICAgIGJv
b2wgbV9lbWl0c0ltYWdlQWx0VGV4dDsKIH07CiAKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERP
TSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3YmZlYTA2ZjYzNDc4
NTA5MDM1YWJmZGM5NzBkZDE1MWI4YmM5MjI4Li5mZTRmNDBhZmY3YTg2YTM3OTJmYTJiNTAwNTU3
NTEzMDY4NGRjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBA
IC0yNjIsMTMgKzI2MiwxMyBAQCB2b2lkIEVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0
aW9uKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5n
KE5TU3RyaW5nUGJvYXJkVHlwZSkpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1f
ZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0KCkpLCBO
U1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBib2FyZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpLCBO
U1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBib2FyZCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogewogICAgIFBhc3RlYm9hcmQgcGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgcGFzdGVib2FyZC53cml0ZVNlbGVjdGlvbkZv
clR5cGVzKHBhc3RlYm9hcmRUeXBlcywgdHJ1ZSwgbV9mcmFtZSk7CisgICAgcGFzdGVib2FyZC53
cml0ZVNlbGVjdGlvbkZvclR5cGVzKHBhc3RlYm9hcmRUeXBlcywgdHJ1ZSwgbV9mcmFtZSwgRGVm
YXVsdFNlbGVjdGVkVGV4dFR5cGUpOwogfQogICAgIAogdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rp
b25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjgyLDcg
KzI4Miw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogU3RyaW5nIEVkaXRvcjo6c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVj
dGlvbihtX2ZyYW1lKTsKKyAgICByZXR1cm4gUGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9u
KG1fZnJhbWUsIERlZmF1bHRTZWxlY3RlZFRleHRUeXBlKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5k
ZXggMDQwNDU5NDBmMzVmY2ZkYzY4ZmVjODUyOTBkYzA4YzUzZjk3ZWVjNi4uZDM2MTllYmFjYjNj
MDZhZTBlMmNlYjBjODQ0MjNlYjhjZmRmMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgewogICAgICAgICAgICAgaWYgKGVu
Y2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkKLSAgICAg
ICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dCgpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNy
Yy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMt
PnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChzZWxlY3Rpb25SYW5nZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
NDAyMmE2MWEzNjJmMDBlZDNhOGExOTY4YzdmNGY5YTJhMDA2NTQ1OC4uYzdhYWNhMDAzY2NkYjFh
MzhlMzFhMzE4N2MxZDllMTk0ODdiYmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjMsNyArNjMsNyBAQCBleHRlcm4gY29uc3QgY2hhciogV2ViVVJMUGJvYXJkVHlw
ZTsKIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAjZW5k
aWYKIAotICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKK2NsYXNzIEFyY2hpdmVSZXNvdXJjZTsK
IGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsK
QEAgLTcyLDYgKzcyLDggQEAgY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworZW51bSBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB7
IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBGb3JDbGlwYm9hcmQgfTsKICAgICAKIGNsYXNzIFBh
c3RlYm9hcmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgzLDE0ICs4NSwxNCBAQCBwdWJsaWM6CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCi0gICAgdm9pZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKik7Cisg
ICAgdm9pZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiwgUGFzdGVib2Fy
ZFNlbGVjdGVkVGV4dFR5cGUpOwogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24o
RnJhbWUqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSosIFBh
c3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldERhdGFTZWxlY3Rpb24oRnJhbWUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKICNlbmRpZgogICAgIAogICAgIHN0YXRpYyBQYXN0ZWJvYXJkKiBnZW5lcmFsUGFzdGVi
b2FyZCgpOwotICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29sIGNhblNtYXJ0Q29w
eU9yRGVsZXRlLCBGcmFtZSopOworICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFBhc3RlYm9hcmRTZWxlY3RlZFRleHRUeXBl
ID0gRGVmYXVsdFNlbGVjdGVkVGV4dFR5cGUpOwogICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29u
c3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsKICAgICB2b2lkIHdyaXRlVVJMKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSogPSAwKTsKICAgICB2b2lkIHdyaXRlSW1hZ2Uo
Tm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJy
eS5jcHAKaW5kZXggNjA4ZTI0ZGZiOTZhYzBkZWIxODZmMmJjOWFjNzY3MGUxZjYyMTVlZS4uMjRk
NGYxMzI0MjAwZWE3YTFjYmY1NzM4ZDAxMTI1NWMxYThlMTE2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJy
eS5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChD
bGlwYm9hcmQqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKiBmcmFtZSkK
K3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJv
b2wsIEZyYW1lKiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0
VHlwZSkKIHsKLSAgICBXVEY6OlN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBXVEY6OlN0cmluZyB0ZXh0ID0gc2VsZWN0ZWRUZXh0VHlwZSA9PSBGb3JD
bGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICBXVEY6OlN0cmluZyBodG1sID0g
Y3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwog
ICAgIFdURjo6U3RyaW5nIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwCmluZGV4IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJlYjVkODRkYmFlOTIx
ODkuLmEwMTkxMTgwMmQ5NmJhNTFjN2Q1Y2UxOWM2NWU4MTJkZjY5MTlkMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdl
KFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBtX2RhdGFPYmplY3Qt
PnNldEhUTUxBbmRCYXNlVVJMKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyksIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHRGb3JDbGlwYm9hcmQoKTsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCBk
ZjFjNmU1NTRkMzM1YmZhYTNkYzY5MTQzZjFlNmIzMzU3NDIyY2FjLi5mMjE0M2FhZWJmOWVjN2Vi
NTg0ZWVjN2FmZjMyZWRkYjBjOTE3ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTg1LDExICs4NSwx
MSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUoYm9vbCBzZWxlY3Rpb25Nb2Rl
KQogICAgIG1fc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGU7CiB9CiAKLXZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRD
b3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1l
KiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsK
ICAgICBTdHJpbmcgaHRtbCA9IGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyk7CiAgICAgS1VSTCB1
cmwgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT51cmwoKTsK
LSAgICBTdHJpbmcgcGxhaW5UZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsK
KyAgICBTdHJpbmcgcGxhaW5UZXh0ID0gc2VsZWN0ZWRUZXh0VHlwZSA9PSBGb3JDbGlwYm9hcmQg
PyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJlcGxhY2VOZXds
aW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhwbGFpblRleHQpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDI2M2I2Y2Y4ZjJl
ZGM1OTk4ZjE1YTAxYWViYzU3MjJlMzU5NjY0NGEuLjE5MDI2ZDM3ZmVlZDA5MjA2NjhlYzc4Zjc3
ZmQwNGM3YTFmOTg5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlUmFu
Z2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJhbmdlKTsKIAot
ICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgp
KTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFy
a3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxv
Y2FsVVJMcykpOwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGNkNjIwNTQyNTJiYTYwNGEzMmU3Yzg2
YjhjMWRkYTYwM2JlZmVkOWMuLjk3ZDAxMGU0MGVlYzAwMDhiNmQwMDVkN2VhMTc3NTgwM2M4ZmEy
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCiB7CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUs
IEZyYW1lKiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlw
ZSkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyKiBoZWxwZXIgPSBQYXN0ZWJvYXJkSGVscGVyOjpk
ZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpOwogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0g
aGVscGVyLT5nZXRDdXJyZW50Q2xpcGJvYXJkKGZyYW1lKTsKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBj
YW5TbWFydENvcHlPckRlbGV0ZSwKICAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CiAgICAgZGF0YU9iamVjdC0+Y2xl
YXJBbGwoKTsKIAotICAgIGRhdGFPYmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKSk7CisgICAgZGF0YU9iamVjdC0+c2V0VGV4dChzZWxlY3RlZFRleHRUeXBlID09
IEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJk
KCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKICAgICBkYXRhT2JqZWN0LT5z
ZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJj
aGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAgICAgaGVscGVyLT53cml0ZUNs
aXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCwgY2FuU21hcnRDb3B5T3JEZWxldGUgPyBQYXN0ZWJv
YXJkSGVscGVyOjpJbmNsdWRlU21hcnRQYXN0ZSA6IFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5j
bHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9h
cmRNYWMubW0KaW5kZXggYTViMjlkOTlmODI4ZDk4NDVjM2I3ZjE3Yzg3YmE1NmFhZWJlNDJlMS4u
Mzc5Y2QzMTViODJlYWYwNWY4YTRlZjM3ZTA1NDQ4YjZkZGE2MGEyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9p
ZCBDbGlwYm9hcmRNYWM6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiAg
ICAgQVNTRVJUKHJhbmdlKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIFBhc3RlYm9hcmQgcGFz
dGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBwYXN0ZWJvYXJkLndyaXRlU2VsZWN0aW9u
KHJhbmdlLCBmcmFtZS0+ZWRpdG9yKCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpICYmIGZy
YW1lLT5zZWxlY3Rpb24oKS0+Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHksIGZyYW1l
KTsKKyAgICBwYXN0ZWJvYXJkLndyaXRlU2VsZWN0aW9uKHJhbmdlLCBmcmFtZS0+ZWRpdG9yKCkt
PnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+Z3JhbnVs
YXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHksIGZyYW1lLCBGb3JDbGlwYm9hcmQpOwogfQogCiB2
b2lkIENsaXBib2FyZE1hYzo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBjMjBiN2Ji
MjZkYmViODViZjgwNTQwZjU1Njc2MmI2MGQ1NWIwNDMwLi40MjkxYTllZGMzYjRkMzUzN2Q2YWU5
YjYzYjJiOTExZGVkZDFkOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtMTM1LDkgKzEzNSw5IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIo
KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKLVN0cmluZyBQYXN0
ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQorU3RyaW5nIFBhc3RlYm9h
cmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUsIFBhc3RlYm9hcmRTZWxlY3RlZFRl
eHRUeXBlIHNlbGVjdGVkVGV4dFR5cGUpCiB7Ci0gICAgU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyB0ZXh0ID0gc2VsZWN0ZWRUZXh0VHlw
ZSA9PSBGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICB0ZXh0LnJlcGxh
Y2Uobm9CcmVha1NwYWNlLCAnICcpOwogICAgIHJldHVybiB0ZXh0OwogfQpAQCAtMTc1LDcgKzE3
NSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpnZXREYXRhU2VsZWN0
aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUp
Cit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUq
IGZyYW1lLCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBzZWxlY3RlZFRleHRUeXBlKQogewog
ICAgIE5TQXR0cmlidXRlZFN0cmluZyogYXR0cmlidXRlZFN0cmluZyA9IG5pbDsKICAgICBSZXRh
aW5QdHI8V2ViSFRNTENvbnZlcnRlcj4gY29udmVydGVyKEFkb3B0TlMsIFtbV2ViSFRNTENvbnZl
cnRlciBhbGxvY10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFJhbmdlKCkuZ2V0KCkpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGIKICAgICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLgog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNTdHJpbmdQYm9hcmRUeXBlKSkpCi0gICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5n
Rm9yVHlwZShnZXRTdHJpbmdTZWxlY3Rpb24oZnJhbWUpLCBOU1N0cmluZ1Bib2FyZFR5cGUsIG1f
cGFzdGVib2FyZE5hbWUpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoZ2V0U3RyaW5nU2VsZWN0aW9uKGZyYW1lLCBz
ZWxlY3RlZFRleHRUeXBlKSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsK
ICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUpKQog
ICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUoMCwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUp
OwpAQCAtMjI3LDkgKzIyNyw5IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRSZXBsCiAgICAgICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlw
ZSgwLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAgICAg
Ci12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENv
cHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bihSYW5nZSosIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgUGFzdGVi
b2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsKLSAgICB3cml0ZVNlbGVj
dGlvbkZvclR5cGVzKFZlY3RvcjxTdHJpbmc+KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBmcmFt
ZSk7CisgICAgd3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhWZWN0b3I8U3RyaW5nPigpLCBjYW5TbWFy
dENvcHlPckRlbGV0ZSwgZnJhbWUsIHNlbGVjdGVkVGV4dFR5cGUpOwogfQogCiBzdGF0aWMgdm9p
ZCB3cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
U3RyLCBGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5jcHAKaW5kZXggNzFjOTFjYjQxYjZjZTFkYTkyZjYyM2ZlNTA5MWQ0YmIwY2M4ZDM3OC4uMDc1
N2ZmNzZmZTVkMmJmNTVlYTM1NDkwYWNmNGQxZThhN2I2NGM3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgQ2xp
cGJvYXJkUXQ6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBp
ZiAoIW1fd3JpdGFibGVEYXRhKQogICAgICAgICBtX3dyaXRhYmxlRGF0YSA9IG5ldyBRTWltZURh
dGE7Ci0gICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsK
KyAgICBRU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7
CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJsZURhdGEt
PnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBm
YWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggMDhlOTdjN2Q2ODg0ZDk1MzZiMzkzNTkxYzJjOTVjODEy
NTFiZGExZS4uNThhYjE3NDI0ZDgyZjM1MmZmMzI3NTA2MDZjMTYzYTUxOGU4YzJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC01OSwxMCArNTks
MTAgQEAgUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQogICAgIHJl
dHVybiBwYXN0ZWJvYXJkOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdl
LCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFBhc3RlYm9hcmRTZWxl
Y3RlZFRleHRUeXBlIHNlbGVjdGVkVGV4dFR5cGUpCiB7CiAgICAgUU1pbWVEYXRhKiBtZCA9IG5l
dyBRTWltZURhdGE7Ci0gICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBRU3RyaW5nIHRleHQgPSBzZWxlY3RlZFRleHRUeXBlID09IEZvckNsaXBi
b2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEw
KSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRleHQodGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggYzJmOTk2NDk2OTli
NjQ5ZWVlNmFlY2JlZmRjZDIzZWY5MTAxYzJlMy4uM2M2MGIwZGQ1MWY0NzVlMWMyOWI0NTM4MzVi
MjkwZmYyZGVkYTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAKQEAgLTc0Nyw3ICs3NDcsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVSYW5n
ZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQogICAgIGlmIChtZWRpdW0uaEds
b2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoaHRtbEZvcm1hdCgp
LCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7
CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAg
ICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQo
KTsKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoc3RyKTsKICAg
ICByZXBsYWNlTkJTUFdpdGhTcGFjZShzdHIpOwogICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRl
R2xvYmFsRGF0YShzdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCmluZGV4IGRkZTJlMjQwNGU5ODdiMmMyNmJkNjEyNjhiYWQzMWNlNWJhYWQ4YzIu
LmQ0NGE3YzI0NmI1ODg3MjM2MzBiOTNjN2UxYWU5MDRmZmU0YzNlYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTExMyw3ICsxMTMsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFt
ZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsKICAgICBj
bGVhcigpOwogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVj
dGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKICAg
ICB9CiAgICAgCiAgICAgLy8gUHV0IHBsYWluIHN0cmluZyBvbiB0aGUgcGFzdGVib2FyZC4gQ0Zf
VU5JQ09ERVRFWFQgY292ZXJzIENGX1RFWFQgYXMgd2VsbAotICAgIFN0cmluZyBzdHIgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzdHIgPSBzZWxlY3RlZFRl
eHRUeXBlID09IEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxh
Y2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQ
V2l0aFNwYWNlKHN0cik7CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAKaW5k
ZXggNWVmM2QyYmY4YWRlMzUyNDAwODNmMWU5ZDY2OTY2OWJkZTFlMzE4ZS4uZWQyN2E1N2U5ZmUw
ZDM3NzlmYWEzMDQ5YTMyZjA2NTU4MmE3NmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgfQogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRl
U2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRl
LCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBz
ZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFBh
c3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlIHNlbGVjdGVkVGV4dFR5cGUpCiB7CiAgICAgY2xlYXIo
KTsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24o
UmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgfQog
CiAgICAgLy8gUHV0IHBsYWluIHN0cmluZyBvbiB0aGUgcGFzdGVib2FyZC4gQ0ZfVU5JQ09ERVRF
WFQgY292ZXJzIENGX1RFWFQgYXMgd2VsbAotICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+c2VsZWN0
ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNlbGVjdGVkVGV4dFR5cGUgPT0gRm9yQ2xpcGJv
YXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRv
d3NTdHlsZU5ld2xpbmVzKHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsKICAg
ICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3gvUGFzdGVib2FyZFd4LmNwcAppbmRleCBkMGNkYzBhMmUyZDNiN2RjMjAyOGRlYzQ0MmMx
YmUyOTNkNTlkZjg0Li5kZjkwNjE0NzQ5N2MzZGNkMWRiZGVhYWZiZjYxMzYxZTRlMmExMGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCiAg
ICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1l
KiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgUGFzdGVib2Fy
ZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsKICAgICBpZiAod3hUaGVDbGlw
Ym9hcmQtPk9wZW4oKSkgewogI2lmIHd4Q0hFQ0tfVkVSU0lPTigyLCA5LCA0KQogICAgICAgICB3
eFRoZUNsaXBib2FyZC0+U2V0RGF0YShuZXcgd3hIVE1MRGF0YU9iamVjdChjcmVhdGVNYXJrdXAo
c2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpKTsKICNlbmRpZgotICAg
ICAgICB3eFRoZUNsaXBib2FyZC0+U2V0RGF0YShuZXcgd3hUZXh0RGF0YU9iamVjdChmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKSk7CisgICAgICAgIHd4VGhlQ2xpcGJvYXJkLT5TZXRE
YXRhKG5ldyB3eFRleHREYXRhT2JqZWN0KHNlbGVjdGVkVGV4dFR5cGUgPT0gRm9yQ2xpcGJvYXJk
ID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpKTsKICAgICAgICAgd3hUaGVDbGlwYm9hcmQtPkNsb3Nl
KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCBl
MTcxNGY1ZmVkMTEzNjRkMzM0ZGE5ZTdkNmFhZGI5ZmYzNGFiMWE0Li4xNWM3OTA2N2NhZDI2ZjAw
YmZjNmJhNmNkNDNjZGY2MTk1YjNiYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzR2VuZXJhdGVk
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0ZWRDb250ZW50OyB9CiAKKyAgICBT
dHJpbmcgYWx0VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0VGV4dDsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbigpIGNv
bnN0OwogICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTlhMTQ1MWI0MzczMjIzZmIxNjA4YTk0YWM0ZGQ5MzczNGIxMTE5Li5mYzgxNDQ4
ZWFjNzgxMmI4MmUwZjEyMTdlNTFhYzM0YzdlNzIxYmQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDMtMjEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bWFnZSBhbHQgdGV4dCBub3QgaW5jbHVkZWQgaW4gcGxhaW4tdGV4dCB2ZXJzaW9uIHdoZW4gY29w
eWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEy
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10
ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTIxICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFs
dC10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LWltYWdlLXdpdGgtYWx0LXRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNDI5NGVhZDhl
YzA5NjNmNmU0Nzg1Y2JmMzdjMWUyMjkxNjRkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3RzIHRoYXQgaW1hZ2UgYWx0IHRleHQgbWFr
ZXMgaXQgdG8gdGhlIGNsaXBib2FyZC4KKworRHVtcCBvZiBtYXJrdXAgMToKK3wgICA8c2hhZG93
OnJvb3Q+Cit8ICAgICA8ZGl2PgorfCAgICAgICAiSGVyZSBpcyBhbiBlbW90aWNvbiBbOildLCBz
b21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRdLCBhbmQgYW4gZW1wdHkgYWx0IHRhZyBbXS4iCit8
ICAgICAgICIKKworIgorCitEdW1wIG9mIG1hcmt1cCAyOgorfCA8ZGl2PgorfCAgICJIZXJlIGlz
IGFuIGVtb3RpY29uIFs6KV0sIHNvbWUgbW9yZSB0ZXh0IFtzYW1wbGUgdGV4dF0sIGFuZCBhbiBl
bXB0eSBhbHQgdGFnIFtdLiIKK3wgPGRpdj4KK3wgICA8I3NlbGVjdGlvbi1jYXJldD4KK3wgICA8
YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFn
ZS13aXRoLWFsdC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29w
eS1pbWFnZS13aXRoLWFsdC10ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQxZWUzNGQyZGZlZTVjMjM3
YmJmMjQ1NWUzNThlOTZlZTc1MzlkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
ZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAt
YXMtbWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitNYXJrdXAuZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBpbWFnZSBhbHQgdGV4dCBtYWtlcyBpdCB0byB0aGUgY2xpcGJvYXJkLiIp
OworTWFya3VwLm5vQXV0b0R1bXAoKTsKKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCisgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwor
ICAgIGV4ZWNTZXRTZWxlY3Rpb25Db21tYW5kKHRlc3QsIDAsIHRlc3QubmV4dFNpYmxpbmcsIDAp
OworICAgIGV4ZWNDb3B5Q29tbWFuZCgpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHRhcmVhLXJlc3VsdCIpLmZvY3VzKCk7CisgICAgZXhlY1Bhc3RlQ29tbWFuZCgpOworICAg
IE1hcmt1cC5kdW1wKCJ0ZXh0YXJlYS1yZXN1bHQiKTsKKworICAgIHNlbGVjdGlvbi5zZXRQb3Np
dGlvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudC1lZGl0YWJsZS1yZXN1bHQiKSwg
MCk7CisgICAgZXhlY1Bhc3RlQW5kTWF0Y2hTdHlsZUNvbW1hbmQoKTsKKyAgICBNYXJrdXAuZHVt
cCgiY29udGVudC1lZGl0YWJsZS1yZXN1bHQiKTsKKworICAgIE1hcmt1cC5ub3RpZnlEb25lKCk7
Cit9OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0idGVzdCI+SGVyZSBp
cyBhbiBlbW90aWNvbiBbPGltZyBzcmM9InJlc291cmNlcy9hcHBsZS5naWYiIGFsdD0iOikiPl0s
IHNvbWUgbW9yZSB0ZXh0IFs8aW1nIGFsdD0ic2FtcGxlIHRleHQiPl0sIGFuZCBhbiBlbXB0eQor
YWx0IHRhZyBbPGltZyBhbHQ9IiI+XS48L2Rpdj4KKzx0ZXh0YXJlYSBpZD0idGV4dGFyZWEtcmVz
dWx0IiBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogNWVtOyI+PC90ZXh0YXJlYT4KKzxkaXYg
aWQ9ImNvbnRlbnQtZWRpdGFibGUtcmVzdWx0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194376</attachid>
            <date>2013-03-21 16:15:43 -0700</date>
            <delta_ts>2013-03-25 13:46:30 -0700</delta_ts>
            <desc>fix efl compile</desc>
            <filename>bug-11200-20130321161132.patch</filename>
            <type>text/plain</type>
            <size>34066</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBlNGE2YThiOWQ0MzEx
OGU3YTM1MWMxN2VmNTJmNWQ0YmJjZDJiYi4uMTc5Nzk0ZTdjODI4OWY2Mjg2NTIzYjA4ODgzYmZj
MDFkNWZhNzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTAzLTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1hZ2UgYWx0IHRleHQgbm90
IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJv
YXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmN1dCk6IEV4cGxpY2l0bHkgYXNr
IHRoYXQgdGhlIHNlbGVjdGlvbiBvbiB0aGUgcGFzdGVib2FyZCBhcyBiZWluZyBmb3IgdGhlIGNs
aXBib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29weSk6IEV4cGxpY2l0bHkgYXNr
IHRoYXQgdGhlIHNlbGVjdGlvbiBvbiB0aGUgcGFzdGVib2FyZCBhcyBiZWluZyBmb3IgdGhlIGNs
aXBib2FyZC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0ZWRUZXh0KTogQWRkIGEg
cHJpdmF0ZSB2ZXJzaW9uIG9mIHNlbGVjdGVkVGV4dCgpIHRoYXQgY2FuIGNob29zZSBiZXR3ZWVu
IGhhdmluZyBpbWFnZSBhbHQgdGV4dCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCk6IEFzayBmb3IgaW1hZ2UgYWx0IHRleHQuCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEFkZCBh
IGJvb2wgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0byBlbWl0IGltYWdlIGFsdCB0
ZXh0LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1l
bnQpOiBJZiB0aGVyZSdzIGFsdCB0ZXh0LCBwb2ludCB0aGUgaXRlcmF0b3IgdG8gaXQuCisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKFRleHRJdGVyYXRvcik6Cisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjp0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24pOiBVc2UgdGhlIHNhbWUgdGV4dCBhcyBv
biB0aGUgY2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6IERvbid0IGluY2x1ZGUgaW1hZ2UgYWx0IHRleHQgc2luY2UgdGhpcyBp
cworICAgICAgICB1c2VkIGJ5IFNlcnZpY2VzLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKTogRG9uJ3QgaW5jbHVkZSBpbWFnZSBhbHQgdGV4
dCBzaW5jZSB0aGlzIGlzCisgICAgICAgIHVzZWQgYnkgU2VydmljZXMuCisgICAgICAgICogcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKTogVXNlIGltYWdlIGFsdCB0ZXh0IChtYXRjaGVzIEZpcmVmb3gpLgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlIHBhcmFtZXRl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6d3JpdGVSYW5nZSk6IFVzZSBjbGlw
Ym9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2VzICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxlY3RlZFRl
eHRUeXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IFVwZGF0
ZSBmdW5jdGlvbiBwYXJhbS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3JpdGVSYW5nZSk6IFVzZSBjbGlw
Ym9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2VzICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgcGFy
YW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OndyaXRlUmFuZ2UpOiBVc2UgY2xpcGJvYXJkIHRleHQg
d2hlbiB3cml0aW5nIHJhbmdlcyAodXNlZCBieSBkJmQpLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tOiAKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmdldFN0
cmluZ1NlbGVjdGlvbik6IFVzZSBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB0byBkZXRlcm1p
bmUgd2hldGhlciB0aGUgc2VsZWN0ZWQKKyAgICAgICAgdGV4dCBpcyBmb3IgdGhlIGNsaXBib2Fy
ZCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZv
clR5cGVzKTogUGFzcyBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB0aHJvdWdoLgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNl
bGVjdGVkVGV4dFR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2Fy
ZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0Ojp3cml0ZVJhbmdlKTogVXNl
IGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUg
cGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0
ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbik6IEFkZCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBwYXJhbWV0ZXIu
CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFBhc3RlYm9hcmRTZWxl
Y3RlZFRleHRUeXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9QYXN0ZWJvYXJk
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBB
ZGQgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgcGFyYW1ldGVyLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmFsdFRl
eHQpOiBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBhbHQgdGV4dC4KKwogMjAxMy0wMy0yMSAgU3VkYXJz
YW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBOZXcgcmVmZXJlbmNlIHJldHVybmVkIGJ5IGdfbWFpbl9jb250ZXh0X25ldygp
IG11c3QgYmUgZnJlZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0OWJmOWJlNjBh
MzYwNTAzNGZlNGZlYTM0MzM4ZmYzN2U1NmUzMjc2Li4zOTAxNWZmNTBhYmE1NTEzNmZjZDc5MTU1
MTdiOTQ0ZTRjODkxYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMDQzLDEw
ICsxMDQzLDEwIEBAIHZvaWQgRWRpdG9yOjpjdXQoKQogICAgIGlmIChzaG91bGREZWxldGVSYW5n
ZShzZWxlY3Rpb24uZ2V0KCkpKSB7CiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKHRydWUpOwogICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9s
KG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewotICAgICAgICAgICAgUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0KCksCisg
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4
dChzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSwKICAgICAgICAgICAgICAgICBjYW5TbWFydENv
cHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6
Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihzZWxlY3Rpb24uZ2V0KCks
IGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1fZnJhbWUpOworICAgICAgICAgICAgUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oc2VsZWN0aW9uLmdldCgpLCBj
YW5TbWFydENvcHlPckRlbGV0ZSgpLCBtX2ZyYW1lLCBGb3JDbGlwYm9hcmQpOwogICAgICAgICBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpOwogICAgICAgICBkZWxldGVTZWxlY3Rpb25X
aXRoU21hcnREZWxldGUoY2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgfQpAQCAtMTA2Mywx
NCArMTA2MywxNCBAQCB2b2lkIEVkaXRvcjo6Y29weSgpCiAKICAgICB3aWxsV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoc2VsZWN0ZWRSYW5nZSgpKTsKICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewotICAgICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHQo
KSwKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCksCiAgICAgICAgICAgICBjYW5TbWFydENvcHlP
ckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fu
bm90U21hcnRSZXBsYWNlKTsKICAgICB9IGVsc2UgewogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoSFRNTEltYWdlRWxlbWVudCog
aW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQpKQog
ICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVJbWFnZShp
bWFnZUVsZW1lbnQsIGRvY3VtZW50LT51cmwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0
ZVNlbGVjdGlvbihzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCks
IG1fZnJhbWUpOworICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
d3JpdGVTZWxlY3Rpb24oc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjYW5TbWFydENvcHlPckRlbGV0
ZSgpLCBtX2ZyYW1lLCBGb3JDbGlwYm9hcmQpOwogICAgIH0KIAogICAgIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCk7CkBAIC0yNjEzLDggKzI2MTMsMTggQEAgdm9pZCBFZGl0b3I6OmNo
YW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxl
Y3Rpb24sCiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7CisgICAgcmV0
dXJuIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworfQorCitTdHJp
bmcgRWRpdG9yOjpzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSBjb25zdAoreworICAgIHJldHVy
biBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yRW1pdHNJbWFnZUFsdFRleHQpOworfQorCitTdHJp
bmcgRWRpdG9yOjpzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpIGNv
bnN0Cit7CiAgICAgLy8gV2UgcmVtb3ZlICdcMCcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJl
IG5vdCB2aXNpYmx5IHJlbmRlcmVkIHRvIHRoZSB1c2VyLgotICAgIHJldHVybiBwbGFpblRleHQo
bV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpLnJlcGxhY2Uo
MCwgIiIpOworICAgIHJldHVybiBwbGFpblRleHQobV9mcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIGJlaGF2aW9yKS5yZXBsYWNlKDAsICIiKTsKIH0KIAogSW50
UmVjdCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKFJhbmdlKiByYW5nZSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IDViZDVhNDAwM2E2ODkzZTk3NzEzNThkYmE0NmM2ZTYzNTM2
MDk5NGYuLjI0MjljM2Q2MjFkNzM1ZDY4YTQ5YzZkNzA0MDliMjkwOWYyYTc4ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
VGV4dENoZWNraW5nLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRpbmdEaXJlY3Rpb24uaCIKIApAQCAtMzU1
LDYgKzM1Niw3IEBAIHB1YmxpYzoKICAgICBOb2RlKiBmaW5kRXZlbnRUYXJnZXRGcm9tKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3Q7CiAKICAgICBTdHJpbmcgc2VsZWN0
ZWRUZXh0KCkgY29uc3Q7CisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIGNv
bnN0OwogICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7CiAg
ICAgLy8gRklYTUU6IFN3aXRjaCBjYWxsZXJzIG92ZXIgdG8gdGhlIEZpbmRPcHRpb25zIHZlcnNp
b24gYW5kIHJldGlyZSB0aGlzIG9uZS4KICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgYm9vbCBmb3J3YXJkLCBib29sIGNhc2VGbGFnLCBib29sIHdyYXBGbGFnLCBib29sIHN0YXJ0
SW5TZWxlY3Rpb24pOwpAQCAtNDQyLDYgKzQ0NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNo
ZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAg
VGV4dENoZWNraW5nVHlwZU1hc2sgcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKFRleHRDaGVj
a2luZ1R5cGVNYXNrKTsKIAorICAgIFN0cmluZyBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yQmVo
YXZpb3IpIGNvbnN0OworCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIGVudW0g
U2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlv
biB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRp
b25Nb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBhODUw
OGMyMzI4NDk1NWQ2OWVlMmMwMGVhOTMzNjczNDE0NThkZWVmLi5iNzZjYWQwMjliZmM5ZmNkYjRk
Y2E2ZTFlYzE4MzI5ZjFlODVmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2lu
Y2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGVSb3cuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgpAQCAtMjY3LDYg
KzI2OCw3IEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKCkKICAgICAsIG1fZW1pdHNPYmpl
Y3RSZXBsYWNlbWVudENoYXJhY3RlcnMoZmFsc2UpCiAgICAgLCBtX3N0b3BzT25Gb3JtQ29udHJv
bHMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFN0b3AoZmFsc2UpCisgICAgLCBtX2VtaXRzSW1hZ2VB
bHRUZXh0KGZhbHNlKQogewogfQogCkBAIC0yOTAsNiArMjkyLDcgQEAgVGV4dEl0ZXJhdG9yOjpU
ZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9y
KQogICAgICwgbV9lbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyhiZWhhdmlvciAmIFRl
eHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzKQogICAgICwgbV9zdG9w
c09uRm9ybUNvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yU3RvcHNPbkZvcm1Db250cm9s
cykKICAgICAsIG1fc2hvdWxkU3RvcChmYWxzZSkKKyAgICAsIG1fZW1pdHNJbWFnZUFsdFRleHQo
YmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCkKIHsKICAgICBpZiAoIXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTcxMiwxMCArNzE1LDE4IEBAIGJvb2wgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9
IG1fbm9kZTsKICAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSAwOwogICAgIG1fcG9zaXRpb25F
bmRPZmZzZXQgPSAxOwotCiAgICAgbV90ZXh0Q2hhcmFjdGVycyA9IDA7Ci0gICAgbV90ZXh0TGVu
Z3RoID0gMDsKIAorICAgIGlmIChtX2VtaXRzSW1hZ2VBbHRUZXh0ICYmIHJlbmRlcmVyLT5pc0lt
YWdlKCkgJiYgcmVuZGVyZXItPmlzUmVuZGVySW1hZ2UoKSkgeworICAgICAgICBtX3RleHQgPSB0
b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+YWx0VGV4dCgpOworICAgICAgICBpZiAoIW1fdGV4dC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fdGV4dExlbmd0aCA9IG1fdGV4dC5sZW5ndGgoKTsK
KyAgICAgICAgICAgIG1fbGFzdENoYXJhY3RlciA9IG1fdGV4dFttX3RleHRMZW5ndGggLSAxXTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgbV90ZXh0
TGVuZ3RoID0gMDsKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSAwOwogCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCA2OGQ4MDEwZGQ1MTI0NmQw
NzZmMGQ1ZWFhZDNiZTdmMTQ3Y2VmZmFlLi45MTgxNTExN2MyM2M1ZTc4Yzg5ZWM2ODI0MTVhZjhj
ZWQ0MmVhMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTQ0LDcg
KzQ0LDggQEAgZW51bSBUZXh0SXRlcmF0b3JCZWhhdmlvciB7CiAgICAgVGV4dEl0ZXJhdG9ySWdu
b3Jlc1N0eWxlVmlzaWJpbGl0eSA9IDEgPDwgMywKICAgICBUZXh0SXRlcmF0b3JFbWl0c09iamVj
dFJlcGxhY2VtZW50Q2hhcmFjdGVycyA9IDEgPDwgNCwKICAgICBUZXh0SXRlcmF0b3JFbWl0c09y
aWdpbmFsVGV4dCA9IDEgPDwgNSwKLSAgICBUZXh0SXRlcmF0b3JTdG9wc09uRm9ybUNvbnRyb2xz
ID0gMSA8PCA2CisgICAgVGV4dEl0ZXJhdG9yU3RvcHNPbkZvcm1Db250cm9scyA9IDEgPDwgNiwK
KyAgICBUZXh0SXRlcmF0b3JFbWl0c0ltYWdlQWx0VGV4dCA9IDEgPDwgNywKIH07CiAgICAgCiAv
LyBGSVhNRTogQ2FuJ3QgcmVhbGx5IGFuc3dlciB0aGlzIHF1ZXN0aW9uIGNvcnJlY3RseSB3aXRo
b3V0IGtub3dpbmcgdGhlIHdoaXRlLXNwYWNlIG1vZGUuCkBAIC0xOTMsNiArMTk0LDggQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc3RvcHNPbkZvcm1Db250cm9sczsKICAgICAvLyBVc2VkIHdoZW4g
bV9zdG9wc09uRm9ybUNvbnRyb2xzIGlzIHNldCB0byBkZXRlcm1pbmUgaWYgdGhlIGl0ZXJhdG9y
IHNob3VsZCBrZWVwIGFkdmFuY2luZy4KICAgICBib29sIG1fc2hvdWxkU3RvcDsKKworICAgIGJv
b2wgbV9lbWl0c0ltYWdlQWx0VGV4dDsKIH07CiAKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERP
TSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUgdGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3YmZlYTA2ZjYzNDc4
NTA5MDM1YWJmZGM5NzBkZDE1MWI4YmM5MjI4Li5mZTRmNDBhZmY3YTg2YTM3OTJmYTJiNTAwNTU3
NTEzMDY4NGRjYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBA
IC0yNjIsMTMgKzI2MiwxMyBAQCB2b2lkIEVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0
aW9uKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5n
KE5TU3RyaW5nUGJvYXJkVHlwZSkpOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1f
ZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0KCkpLCBO
U1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBib2FyZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpLCBO
U1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBib2FyZCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp3cml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogewogICAgIFBhc3RlYm9hcmQgcGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgcGFzdGVib2FyZC53cml0ZVNlbGVjdGlvbkZv
clR5cGVzKHBhc3RlYm9hcmRUeXBlcywgdHJ1ZSwgbV9mcmFtZSk7CisgICAgcGFzdGVib2FyZC53
cml0ZVNlbGVjdGlvbkZvclR5cGVzKHBhc3RlYm9hcmRUeXBlcywgdHJ1ZSwgbV9mcmFtZSwgRGVm
YXVsdFNlbGVjdGVkVGV4dFR5cGUpOwogfQogICAgIAogdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rp
b25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjgyLDcg
KzI4Miw3IEBAIHZvaWQgRWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogU3RyaW5nIEVkaXRvcjo6c3RyaW5nU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVj
dGlvbihtX2ZyYW1lKTsKKyAgICByZXR1cm4gUGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9u
KG1fZnJhbWUsIERlZmF1bHRTZWxlY3RlZFRleHRUeXBlKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5k
ZXggMDQwNDU5NDBmMzVmY2ZkYzY4ZmVjODUyOTBkYzA4YzUzZjk3ZWVjNi4uZDM2MTllYmFjYjNj
MDZhZTBlMmNlYjBjODQ0MjNlYjhjZmRmMjY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKQEAgLTc4OSw3ICs3ODksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsK
ICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgewogICAgICAgICAgICAgaWYgKGVu
Y2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkKLSAgICAg
ICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dCgpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNy
Yy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMt
PnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChzZWxlY3Rpb25SYW5nZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
NDAyMmE2MWEzNjJmMDBlZDNhOGExOTY4YzdmNGY5YTJhMDA2NTQ1OC4uYzdhYWNhMDAzY2NkYjFh
MzhlMzFhMzE4N2MxZDllMTk0ODdiYmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjMsNyArNjMsNyBAQCBleHRlcm4gY29uc3QgY2hhciogV2ViVVJMUGJvYXJkVHlw
ZTsKIGV4dGVybiBjb25zdCBjaGFyKiBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAjZW5k
aWYKIAotICAgIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKK2NsYXNzIEFyY2hpdmVSZXNvdXJjZTsK
IGNsYXNzIENsaXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsK
QEAgLTcyLDYgKzcyLDggQEAgY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSYW5nZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworZW51bSBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSB7
IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBGb3JDbGlwYm9hcmQgfTsKICAgICAKIGNsYXNzIFBh
c3RlYm9hcmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTgzLDE0ICs4NSwxNCBAQCBwdWJsaWM6CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCi0gICAgdm9pZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKik7Cisg
ICAgdm9pZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiwgUGFzdGVib2Fy
ZFNlbGVjdGVkVGV4dFR5cGUpOwogICAgIGV4cGxpY2l0IFBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24o
RnJhbWUqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSosIFBh
c3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldERhdGFTZWxlY3Rpb24oRnJhbWUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKICNlbmRpZgogICAgIAogICAgIHN0YXRpYyBQYXN0ZWJvYXJkKiBnZW5lcmFsUGFzdGVi
b2FyZCgpOwotICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29sIGNhblNtYXJ0Q29w
eU9yRGVsZXRlLCBGcmFtZSopOworICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFBhc3RlYm9hcmRTZWxlY3RlZFRleHRUeXBl
ID0gRGVmYXVsdFNlbGVjdGVkVGV4dFR5cGUpOwogICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29u
c3QgU3RyaW5nJiwgU21hcnRSZXBsYWNlT3B0aW9uKTsKICAgICB2b2lkIHdyaXRlVVJMKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSogPSAwKTsKICAgICB2b2lkIHdyaXRlSW1hZ2Uo
Tm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJy
eS5jcHAKaW5kZXggNjA4ZTI0ZGZiOTZhYzBkZWIxODZmMmJjOWFjNzY3MGUxZjYyMTVlZS4uMjRk
NGYxMzI0MjAwZWE3YTFjYmY1NzM4ZDAxMTI1NWMxYThlMTE2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJy
eS5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChD
bGlwYm9hcmQqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKiBmcmFtZSkK
K3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJv
b2wsIEZyYW1lKiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0
VHlwZSkKIHsKLSAgICBXVEY6OlN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBXVEY6OlN0cmluZyB0ZXh0ID0gc2VsZWN0ZWRUZXh0VHlwZSA9PSBGb3JD
bGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICBXVEY6OlN0cmluZyBodG1sID0g
Y3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwog
ICAgIFdURjo6U3RyaW5nIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwCmluZGV4IGZjMzcyNzhkNmI5MjI3M2FkODk1MjE1NzJlYjVkODRkYmFlOTIx
ODkuLmEwMTkxMTgwMmQ5NmJhNTFjN2Q1Y2UxOWM2NWU4MTJkZjY5MTlkMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdl
KFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBtX2RhdGFPYmplY3Qt
PnNldEhUTUxBbmRCYXNlVVJMKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyksIGZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHRGb3JDbGlwYm9hcmQoKTsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCBk
ZjFjNmU1NTRkMzM1YmZhYTNkYzY5MTQzZjFlNmIzMzU3NDIyY2FjLi5mMjE0M2FhZWJmOWVjN2Vi
NTg0ZWVjN2FmZjMyZWRkYjBjOTE3ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTg1LDExICs4NSwx
MSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUoYm9vbCBzZWxlY3Rpb25Nb2Rl
KQogICAgIG1fc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGU7CiB9CiAKLXZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRD
b3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1l
KiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsK
ICAgICBTdHJpbmcgaHRtbCA9IGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyk7CiAgICAgS1VSTCB1
cmwgPSBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT51cmwoKTsK
LSAgICBTdHJpbmcgcGxhaW5UZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsK
KyAgICBTdHJpbmcgcGxhaW5UZXh0ID0gc2VsZWN0ZWRUZXh0VHlwZSA9PSBGb3JDbGlwYm9hcmQg
PyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJlcGxhY2VOZXds
aW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhwbGFpblRleHQpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggN2ExYWM0NTI3
OGNkMDRkMTJjNjE3ZjVmZmE2YTc3NTE2MWU4NjE2My4uZTg2YzNlYjg4ZjM0YjkxMDdlOWYwMjQw
NTM3ZGE5ZjMzMmZiNjg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0
ZWJvYXJkRWZsLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbikKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9v
bCwgRnJhbWUqKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2ws
IEZyYW1lKiwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAK
aW5kZXggMjYzYjZjZjhmMmVkYzU5OThmMTVhMDFhZWJjNTcyMmUzNTk2NjQ0YS4uMTkwMjZkMzdm
ZWVkMDkyMDY2OGVjNzhmNzdmZDA0YzdhMWY5ODljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIENsaXBi
b2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBB
U1NFUlQocmFuZ2UpOwogCi0gICAgbV9kYXRhT2JqZWN0LT5zZXRUZXh0KGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3QtPnNl
dE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZh
bHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggY2Q2MjA1
NDI1MmJhNjA0YTMyZTdjODZiOGMxZGRhNjAzYmVmZWQ5Yy4uOTdkMDEwZTQwZWVjMDAwOGI2ZDAw
NWQ3ZWExNzc1ODAzYzhmYTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KCkKIHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0
ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5T
bWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lLCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlw
ZSBzZWxlY3RlZFRleHRUeXBlKQogewogICAgIFBhc3RlYm9hcmRIZWxwZXIqIGhlbHBlciA9IFBh
c3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCk7CiAgICAgR3RrQ2xpcGJv
YXJkKiBjbGlwYm9hcmQgPSBoZWxwZXItPmdldEN1cnJlbnRDbGlwYm9hcmQoZnJhbWUpOwpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxl
Y3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIERhdGFPYmplY3RHdGsq
IGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKICAg
ICBkYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAgZGF0YU9iamVjdC0+c2V0VGV4dChmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHNl
bGVjdGVkVGV4dFR5cGUgPT0gRm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOwog
ICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpKTsKICAg
ICBoZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkLCBjYW5TbWFydENvcHlP
ckRlbGV0ZSA/IFBhc3RlYm9hcmRIZWxwZXI6OkluY2x1ZGVTbWFydFBhc3RlIDogUGFzdGVib2Fy
ZEhlbHBlcjo6RG9Ob3RJbmNsdWRlU21hcnRQYXN0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBhNWIyOWQ5OWY4MjhkOTg0NWMzYjdmMTdj
ODdiYTU2YWFlYmU0MmUxLi4zNzljZDMxNWI4MmVhZjA1ZjhhNGVmMzdlMDU0NDhiNmRkYTYwYTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KQEAgLTM3
Nyw3ICszNzcsNyBAQCB2b2lkIENsaXBib2FyZE1hYzo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQocmFuZ2UpOwogICAgIEFTU0VSVChmcmFtZSk7CiAg
ICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUpOwotICAgIHBhc3RlYm9h
cmQud3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxhcml0eSgpID09IFdvcmRH
cmFudWxhcml0eSwgZnJhbWUpOworICAgIHBhc3RlYm9hcmQud3JpdGVTZWxlY3Rpb24ocmFuZ2Us
IGZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNl
bGVjdGlvbigpLT5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEZvckNs
aXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjp3cml0ZVBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCmluZGV4IGMyMGI3YmIyNmRiZWI4NWJmODA1NDBmNTU2NzYyYjYwZDU1YjA0MzAuLjQyOTFh
OWVkYzNiNGQzNTM3ZDZhZTliNjNiMmI5MTFkZWRkMWQ5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMzUsOSArMTM1LDkgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRUeXBlcyhWZWN0b3I8U3RyaW5nPigpLCBtX3Bhc3RlYm9hcmROYW1lKTsK
IH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUp
CitTdHJpbmcgUGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgUGFz
dGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsKLSAgICBTdHJpbmcg
dGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHRleHQg
PSBzZWxlY3RlZFRleHRUeXBlID09IEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgp
OwogICAgIHRleHQucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7
CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxl
dGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29w
eU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFBhc3RlYm9hcmRTZWxlY3RlZFRleHRUeXBlIHNlbGVj
dGVkVGV4dFR5cGUpCiB7CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyaWJ1dGVkU3RyaW5n
ID0gbmlsOwogICAgIFJldGFpblB0cjxXZWJIVE1MQ29udmVydGVyPiBjb252ZXJ0ZXIoQWRvcHRO
UywgW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSldKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgYgogICAgIAogICAgIC8vIFB1dCBwbGFpbiBzdHJpbmcgb24g
dGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1N0cmluZ1Bi
b2FyZFR5cGUpKSkKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGdldFN0cmluZ1NlbGVjdGlvbihmcmFtZSksIE5TU3Ry
aW5nUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlwZShnZXRTdHJpbmdT
ZWxlY3Rpb24oZnJhbWUsIHNlbGVjdGVkVGV4dFR5cGUpLCBOU1N0cmluZ1Bib2FyZFR5cGUsIG1f
cGFzdGVib2FyZE5hbWUpOwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJTbWFydFBh
c3RlUGJvYXJkVHlwZSkpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0yMjcsOSArMjI3LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbiBzbWFy
dFJlcGwKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKIH0KICAgICAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2Uq
LCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJh
bWUqIGZyYW1lLCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBzZWxlY3RlZFRleHRUeXBlKQog
ewotICAgIHdyaXRlU2VsZWN0aW9uRm9yVHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgY2FuU21hcnRD
b3B5T3JEZWxldGUsIGZyYW1lKTsKKyAgICB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKFZlY3RvcjxT
dHJpbmc+KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBmcmFtZSwgc2VsZWN0ZWRUZXh0VHlwZSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGVTdHIsIEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0NsaXBib2FyZFF0LmNwcAppbmRleCA3MWM5MWNiNDFiNmNlMWRhOTJmNjIzZmU1MDkx
ZDRiYjBjYzhkMzc4Li4wNzU3ZmY3NmZlNWQyYmY1NWVhMzU0OTBhY2Y0ZDFlOGE3YjY0Yzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCkBAIC0zMTYsNyAr
MzE2LDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghbV93cml0YWJsZURhdGEpCiAgICAgICAgIG1fd3JpdGFibGVE
YXRhID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CiAgICAgdGV4dC5yZXBsYWNlKFFDaGFyKDB4YTApLCBR
TGF0aW4xQ2hhcignICcpKTsKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VGV4dCh0ZXh0KTsKICAg
ICBtX3dyaXRhYmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCAwOGU5N2M3ZDY4ODRkOTUz
NmIzOTM1OTFjMmM5NWM4MTI1MWJkYTFlLi41OGFiMTc0MjRkODJmMzUyZmYzMjc1MDYwNmMxNjNh
NTE4ZThjMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJv
YXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5j
cHAKQEAgLTU5LDEwICs1OSwxMCBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFt
ZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlwZSkKIHsKICAgICBR
TWltZURhdGEqIG1kID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRleHQgPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJpbmcgdGV4dCA9IHNlbGVjdGVkVGV4
dFR5cGUgPT0gRm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JD
bGlwYm9hcmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiAgICAgdGV4dC5y
ZXBsYWNlKFFDaGFyKDB4YTApLCBRTGF0aW4xQ2hhcignICcpKTsKICAgICBtZC0+c2V0VGV4dCh0
ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApp
bmRleCBjMmY5OTY0OTY5OWI2NDllZWU2YWVjYmVmZGNkMjNlZjkxMDFjMmUzLi4zYzYwYjBkZDUx
ZjQ3NWUxYzI5YjQ1MzgzNWIyOTBmZjJkZWRhMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNzQ3LDcgKzc0Nyw3IEBAIHZvaWQgQ2xpcGJv
YXJkV2luOjp3cml0ZVJhbmdlKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAg
ICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0
RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAgICAgICAgOjpHbG9iYWxGcmVl
KG1lZGl1bS5oR2xvYmFsKTsKIAotICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVO
ZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7CiAgICAgbWVkaXVt
LmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggZGRlMmUyNDA0ZTk4N2IyYzI2YmQ2MTI2
OGJhZDMxY2U1YmFhZDhjMi4uZDQ0YTdjMjQ2YjU4ODcyMzYzMGI5M2M3ZTFhZTkwNGZmZTRjM2Vi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogICAgIH0KIH0KIAot
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZSwgRnJhbWUqIGZyYW1lLCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBzZWxlY3RlZFRl
eHRUeXBlKQogewogICAgIGNsZWFyKCk7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0
Q29weU9yRGVsZXRlLAogICAgIH0KICAgICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRo
ZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RFVEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAg
U3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5n
IHN0ciA9IHNlbGVjdGVkVGV4dFR5cGUgPT0gRm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0KCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHN0cik7
CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJk
KG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9Q
YXN0ZWJvYXJkV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVi
b2FyZFdpbkNFLmNwcAppbmRleCA1ZWYzZDJiZjhhZGUzNTI0MDA4M2YxZTlkNjY5NjY5YmRlMWUz
MThlLi5lZDI3YTU3ZTlmZTBkMzc3OWZhYTMwNDlhMzJmMDY1NTgyYTc2ZDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKICAgICB9CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2Fu
U21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUs
IEZyYW1lKiBmcmFtZSwgUGFzdGVib2FyZFNlbGVjdGVkVGV4dFR5cGUgc2VsZWN0ZWRUZXh0VHlw
ZSkKIHsKICAgICBjbGVhcigpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlP
ckRlbGV0ZSwKICAgICB9CiAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJv
YXJkLiBDRl9VTklDT0RFVEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0
ciA9IGZyYW1lLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gc2VsZWN0ZWRUZXh0
VHlwZSA9PSBGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNs
aXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICByZXBsYWNl
TmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoc3RyKTsKICAgICByZXBsYWNlTkJTUFdp
dGhTcGFjZShzdHIpOwogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwCmluZGV4IGQwY2RjMGEyZTJk
M2I3ZGMyMDI4ZGVjNDQyYzFiZTI5M2Q1OWRmODQuLmRmOTA2MTQ3NDk3YzNkY2QxZGJkZWFhZmJm
NjEzNjFlNGUyYTEwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bh
c3RlYm9hcmRXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVib2Fy
ZFd4LmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVy
YWxQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gcGFzdGVib2FyZDsKIH0KIAotdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENv
cHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUq
IGZyYW1lLCBQYXN0ZWJvYXJkU2VsZWN0ZWRUZXh0VHlwZSBzZWxlY3RlZFRleHRUeXBlKQogewog
ICAgIGlmICh3eFRoZUNsaXBib2FyZC0+T3BlbigpKSB7CiAjaWYgd3hDSEVDS19WRVJTSU9OKDIs
IDksIDQpCiAgICAgICAgIHd4VGhlQ2xpcGJvYXJkLT5TZXREYXRhKG5ldyB3eEhUTUxEYXRhT2Jq
ZWN0KGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdl
KSkpOwogI2VuZGlmCi0gICAgICAgIHd4VGhlQ2xpcGJvYXJkLT5TZXREYXRhKG5ldyB3eFRleHRE
YXRhT2JqZWN0KGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpKTsKKyAgICAgICAgd3hU
aGVDbGlwYm9hcmQtPlNldERhdGEobmV3IHd4VGV4dERhdGFPYmplY3Qoc2VsZWN0ZWRUZXh0VHlw
ZSA9PSBGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSkpOwogICAgICAgICB3eFRo
ZUNsaXBib2FyZC0+Q2xvc2UoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IGUxNzE0ZjVmZWQxMTM2NGQzMzRkYTllN2Q2YWFkYjlmZjM0YWIxYTQu
LjE1Yzc5MDY3Y2FkMjZmMDBiZmM2YmE2Y2Q0M2NkZjYxOTViM2JjMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNHZW5lcmF0ZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRlZENv
bnRlbnQ7IH0KIAorICAgIFN0cmluZyBhbHRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9hbHRUZXh0
OyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQcmVmZXJyZWRXaWR0aHNS
ZWNhbGN1bGF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJCb3gqIGVtYmVkZGVkQ29u
dGVudEJveCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5OWExNDUxYjQzNzMyMjNmYjE2MDhhOTRhYzRkZDkz
NzM0YjExMTkuLmZjODE0NDhlYWM3ODEyYjgyZTBmMTIxN2U1MWFjMzRjN2U3MjFiZDQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0yMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEltYWdlIGFsdCB0ZXh0IG5vdCBpbmNsdWRlZCBpbiBwbGFpbi10ZXh0
IHZlcnNpb24gd2hlbiBjb3B5aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjEgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIENocm9taXVt
IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9j
b3B5LWltYWdlLXdpdGgtYWx0LXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWM0Mjk0ZWFkOGVjMDk2M2Y2ZTQ3ODVjYmYzN2MxZTIyOTE2NGQzYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgt
YWx0LXRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgdGVzdHMgdGhhdCBp
bWFnZSBhbHQgdGV4dCBtYWtlcyBpdCB0byB0aGUgY2xpcGJvYXJkLgorCitEdW1wIG9mIG1hcmt1
cCAxOgorfCAgIDxzaGFkb3c6cm9vdD4KK3wgICAgIDxkaXY+Cit8ICAgICAgICJIZXJlIGlzIGFu
IGVtb3RpY29uIFs6KV0sIHNvbWUgbW9yZSB0ZXh0IFtzYW1wbGUgdGV4dF0sIGFuZCBhbiBlbXB0
eSBhbHQgdGFnIFtdLiIKK3wgICAgICAgIgorCisiCisKK0R1bXAgb2YgbWFya3VwIDI6Cit8IDxk
aXY+Cit8ICAgIkhlcmUgaXMgYW4gZW1vdGljb24gWzopXSwgc29tZSBtb3JlIHRleHQgW3NhbXBs
ZSB0ZXh0XSwgYW5kIGFuIGVtcHR5IGFsdCB0YWcgW10uIgorfCA8ZGl2PgorfCAgIDwjc2VsZWN0
aW9uLWNhcmV0PgorfCAgIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NDFlZTM0ZDJkZmVlNWMyMzdiYmYyNDU1ZTM1OGU5NmVlNzUzOWQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4
dC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK01hcmt1
cC5kZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGltYWdlIGFsdCB0ZXh0IG1ha2VzIGl0IHRv
IHRoZSBjbGlwYm9hcmQuIik7CitNYXJrdXAubm9BdXRvRHVtcCgpOworCit3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CisgICAgZXhlY1NldFNlbGVjdGlvbkNvbW1hbmQodGVzdCwgMCwgdGVz
dC5uZXh0U2libGluZywgMCk7CisgICAgZXhlY0NvcHlDb21tYW5kKCk7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEtcmVzdWx0IikuZm9jdXMoKTsKKyAgICBleGVjUGFz
dGVDb21tYW5kKCk7CisgICAgTWFya3VwLmR1bXAoInRleHRhcmVhLXJlc3VsdCIpOworCisgICAg
c2VsZWN0aW9uLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50LWVk
aXRhYmxlLXJlc3VsdCIpLCAwKTsKKyAgICBleGVjUGFzdGVBbmRNYXRjaFN0eWxlQ29tbWFuZCgp
OworICAgIE1hcmt1cC5kdW1wKCJjb250ZW50LWVkaXRhYmxlLXJlc3VsdCIpOworCisgICAgTWFy
a3VwLm5vdGlmeURvbmUoKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2
IGlkPSJ0ZXN0Ij5IZXJlIGlzIGFuIGVtb3RpY29uIFs8aW1nIHNyYz0icmVzb3VyY2VzL2FwcGxl
LmdpZiIgYWx0PSI6KSI+XSwgc29tZSBtb3JlIHRleHQgWzxpbWcgYWx0PSJzYW1wbGUgdGV4dCI+
XSwgYW5kIGFuIGVtcHR5CithbHQgdGFnIFs8aW1nIGFsdD0iIj5dLjwvZGl2PgorPHRleHRhcmVh
IGlkPSJ0ZXh0YXJlYS1yZXN1bHQiIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1ZW07Ij48
L3RleHRhcmVhPgorPGRpdiBpZD0iY29udGVudC1lZGl0YWJsZS1yZXN1bHQiIGNvbnRlbnRFZGl0
YWJsZT0idHJ1ZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194917</attachid>
            <date>2013-03-25 13:46:37 -0700</date>
            <delta_ts>2013-03-25 14:37:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-11200-20130325134221.patch</filename>
            <type>text/plain</type>
            <size>36969</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0MDI0MWYyYjIxOTRm
OGFjZGIyMTExODliMTExNjc2MDNiYjQ3Ni4uMzdhMDc2NzVlY2NjNmEzNjI0NDA0N2ViZTlkYmI4
M2Y2ZjJiMjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTAzLTI1ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1hZ2UgYWx0IHRleHQgbm90
IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2V0dGluZyB0byBlbmFi
bGUgY29weWluZyBpbWFnZSBhbHQgdGV4dCB0byB0aGUgY2xpcGJvYXJkIGFuZCBkcmFnIGFuZCBk
cm9wIHBhc3RlYm9hcmQuCisgICAgICAgIFRoaXMgc2V0dGluZyBpcyBkaXNhYmxlZCBieSBkZWZh
dWx0LCBzbyBlYWNoIHBvcnQgY2FuIGVuYWJsZSBpZiB0aGV5IHdhbnQgdG8gbWF0Y2ggSUUxMCBh
bmQKKyAgICAgICAgRmlyZWZveCdzIGJlaGF2aW9yLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbAorCisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjdXQpOiBFeHBsaWNp
dGx5IGFzayB0aGF0IHRoZSBzZWxlY3Rpb24gb24gdGhlIHBhc3RlYm9hcmQgYXMgYmVpbmcgZm9y
IHRoZSBjbGlwYm9hcmQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNvcHkpOiBFeHBsaWNp
dGx5IGFzayB0aGF0IHRoZSBzZWxlY3Rpb24gb24gdGhlIHBhc3RlYm9hcmQgYXMgYmVpbmcgZm9y
IHRoZSBjbGlwYm9hcmQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGVkVGV4dCk6
IEFkZCBhIHByaXZhdGUgdmVyc2lvbiBvZiBzZWxlY3RlZFRleHQoKSB0aGF0IGNhbiBjaG9vc2Ug
YmV0d2VlbiBoYXZpbmcgaW1hZ2UgYWx0IHRleHQgb3Igbm90LgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpOiBBc2sgZm9yIGltYWdlIGFsdCB0ZXh0
IGlmIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6IEFkZCBhIGJvb2wgdG8ga2VlcCB0cmFjayBvZiB3
aGV0aGVyIG9yIG5vdCB0byBlbWl0IGltYWdlIGFsdCB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQpOiBJZiB0aGVyZSdzIGFsdCB0ZXh0
LCBwb2ludCB0aGUgaXRlcmF0b3IgdG8gaXQuCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuaDoKKyAgICAgICAgKFRleHRJdGVyYXRvcik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0YWtlRmluZFN0cmluZ0Zyb21T
ZWxlY3Rpb24pOiBVc2UgdGhlIHNhbWUgdGV4dCBhcyBvbiB0aGUgY2xpcGJvYXJkLgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6IERvbid0IGlu
Y2x1ZGUgaW1hZ2UgYWx0IHRleHQgc2luY2UgdGhpcyBpcworICAgICAgICB1c2VkIGJ5IFNlcnZp
Y2VzLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKTogRG9uJ3QgaW5jbHVkZSBpbWFnZSBhbHQgdGV4dCBzaW5jZSB0aGlzIGlzCisgICAgICAg
IHVzZWQgYnkgU2VydmljZXMuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKTogVXNlIGltYWdlIGFs
dCB0ZXh0IChtYXRjaGVzIEZpcmVmb3gpLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFk
ZCBhIHNldHRpbmcgdGhhdCBkaXNhYmxlcyBpbWFnZSBhbHQgdGV4dCBieSBkZWZhdWx0LgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2Jl
cnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNs
aXBib2FyZCBwYXJhbWV0ZXIuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkQ2hyb21pdW06OndyaXRl
UmFuZ2UpOiBVc2UgY2xpcGJvYXJkIHRleHQgd2hlbiB3cml0aW5nIHJhbmdlcyAodXNlZCBieSBk
JmQpLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlU2VsZWN0aW9uKTogVXBkYXRlIGZ1bmN0aW9uIHBhcmFtLgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkR3RrOjp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5n
ZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBT
aG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRNYWM6OndyaXRlUmFuZ2UpOiBVc2UgY2xpcGJvYXJkIHRleHQgd2hlbiB3cml0aW5nIHJh
bmdlcyAodXNlZCBieSBkJmQpLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKTog
VXNlIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCB0byBkZXRlcm1pbmUg
d2hldGhlciB0aGUgc2VsZWN0ZWQKKyAgICAgICAgdGV4dCBpcyBmb3IgdGhlIGNsaXBib2FyZCBv
ciBub3QuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKTogUGFzcyBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgdGhyb3Vn
aC4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKTogQWRkIFNo
b3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBwYXJhbWV0ZXIuCisgICAgICAg
ICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkUXQ6OndyaXRlUmFuZ2UpOiBVc2UgY2xpcGJvYXJkIHRleHQgd2hlbiB3cml0aW5nIHJhbmdl
cyAodXNlZCBieSBkJmQpLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkV2luOjp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5n
ZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBT
aG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBTaG91bGRTZXJpYWxpemVTZWxlY3Rl
ZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Bhc3Rl
Ym9hcmRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bik6IEFkZCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVy
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OmFsdFRleHQpOiBBZGQgYSBnZXR0ZXIgZm9yIHRoZSBhbHQgdGV4dC4KKwog
MjAxMy0wMy0yNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW5j
b3JyZWN0IHBhcnNpbmcgZHVlIHRvIGhhc2ggY29sbGlzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggMTdjMjU2MTdkZDczZGU5YjdlMTJmZDk5NjViYjNjNmZkMWZmZjMwZi4uZDhi
ZjgxYTQwY2RjZmRjZmUwZTA5N2E2YWU3Mjg1YmE0ZGFjZTRkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMTA0MywxMCArMTA0MywxMCBAQCB2b2lkIEVkaXRvcjo6Y3V0KCkKICAg
ICBpZiAoc2hvdWxkRGVsZXRlUmFuZ2Uoc2VsZWN0aW9uLmdldCgpKSkgewogICAgICAgICB1cGRh
dGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyh0cnVlKTsKICAgICAgICAgaWYgKGVu
Y2xvc2luZ1RleHRGb3JtQ29udHJvbChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKSkpIHsK
LSAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlUGxhaW5U
ZXh0KHNlbGVjdGVkVGV4dCgpLAorICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3Rl
Ym9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCksCiAgICAg
ICAgICAgICAgICAgY2FuU21hcnRDb3B5T3JEZWxldGUoKSA/IFBhc3RlYm9hcmQ6OkNhblNtYXJ0
UmVwbGFjZSA6IFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxl
Y3Rpb24oc2VsZWN0aW9uLmdldCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBtX2ZyYW1lKTsK
KyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0
aW9uKHNlbGVjdGlvbi5nZXQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgbV9mcmFtZSwgSW5j
bHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCk7CiAgICAgICAgIGRpZFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKCk7CiAgICAgICAgIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShj
YW5TbWFydENvcHlPckRlbGV0ZSgpKTsKICAgICB9CkBAIC0xMDYzLDE0ICsxMDYzLDE0IEBAIHZv
aWQgRWRpdG9yOjpjb3B5KCkKIAogICAgIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChz
ZWxlY3RlZFJhbmdlKCkpOwogICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9mcmFt
ZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKSB7Ci0gICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dCgpLAorICAgICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQoKSwKICAgICAgICAgICAgIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0
ZWJvYXJkOjpDYW5TbWFydFJlcGxhY2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2Up
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgICAgIGlmIChIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBp
bWFnZUVsZW1lbnRGcm9tSW1hZ2VEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZUltYWdlKGltYWdlRWxlbWVudCwgZG9j
dW1lbnQtPnVybCgpLCBkb2N1bWVudC0+dGl0bGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0aW9uKHNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgbV9mcmFtZSk7CisgICAg
ICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihz
ZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1fZnJhbWUsIElu
Y2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQpOwogICAgIH0KIAogICAgIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CkBAIC0yNjEzLDggKzI2MTMsMjAgQEAgdm9pZCBFZGl0b3I6
OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdT
ZWxlY3Rpb24sCiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7CisgICAg
cmV0dXJuIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworfQorCitT
dHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSBjb25zdAoreworICAgIGlm
IChtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPnNlbGVjdGlvbklu
Y2x1ZGVzQWx0SW1hZ2VUZXh0KCkpCisgICAgICAgIHJldHVybiBzZWxlY3RlZFRleHQoVGV4dEl0
ZXJhdG9yRW1pdHNJbWFnZUFsdFRleHQpOworICAgIHJldHVybiBzZWxlY3RlZFRleHQoKTsKK30K
KworU3RyaW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0KFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2
aW9yKSBjb25zdAorewogICAgIC8vIFdlIHJlbW92ZSAnXDAnIGNoYXJhY3RlcnMgYmVjYXVzZSB0
aGV5IGFyZSBub3QgdmlzaWJseSByZW5kZXJlZCB0byB0aGUgdXNlci4KLSAgICByZXR1cm4gcGxh
aW5UZXh0KG1fZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKS5y
ZXBsYWNlKDAsICIiKTsKKyAgICByZXR1cm4gcGxhaW5UZXh0KG1fZnJhbWUtPnNlbGVjdGlvbigp
LT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBiZWhhdmlvcikucmVwbGFjZSgwLCAiIik7CiB9
CiAKIEludFJlY3QgRWRpdG9yOjpmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSogcmFuZ2UpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1YmQ1YTQwMDNhNjg5M2U5NzcxMzU4ZGJhNDZj
NmU2MzUzNjA5OTRmLi4yNDI5YzNkNjIxZDczNWQ2OGE0OWM2ZDcwNDA5YjI5MDlmMmE3OGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJGcmFt
ZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2luZy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCiAK
QEAgLTM1NSw2ICszNTYsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogZmluZEV2ZW50VGFyZ2V0RnJv
bShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pIGNvbnN0OwogCiAgICAgU3RyaW5n
IHNlbGVjdGVkVGV4dCgpIGNvbnN0OworICAgIFN0cmluZyBzZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQoKSBjb25zdDsKICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMpOwogICAgIC8vIEZJWE1FOiBTd2l0Y2ggY2FsbGVycyBvdmVyIHRvIHRoZSBGaW5kT3B0aW9u
cyB2ZXJzaW9uIGFuZCByZXRpcmUgdGhpcyBvbmUuCiAgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0
IFN0cmluZyYsIGJvb2wgZm9yd2FyZCwgYm9vbCBjYXNlRmxhZywgYm9vbCB3cmFwRmxhZywgYm9v
bCBzdGFydEluU2VsZWN0aW9uKTsKQEAgLTQ0Miw2ICs0NDQsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwg
Ym9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2Up
OwogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayhU
ZXh0Q2hlY2tpbmdUeXBlTWFzayk7CiAKKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0KFRleHRJdGVy
YXRvckJlaGF2aW9yKSBjb25zdDsKKwogICAgIHZvaWQgc2VsZWN0Q29tcG9zaXRpb24oKTsKICAg
ICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENvbmZpcm1Db21wb3NpdGlvbiwgQ2FuY2VsQ29t
cG9zaXRpb24gfTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIFNldENv
bXBvc2l0aW9uTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5k
ZXggM2U0NzFlMDg4NTUyMzI4ODU0Mjc2NTNlYWVhNzExODZkZWQ5ZmFlMy4uYjgxNTIyMjZmOWY4
MjE1MWZmYWNjOTc0NWUzZmVmZTdlZDA5MTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklubGluZVRleHRCb3gu
aCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKQEAg
LTI2Niw2ICsyNjcsNyBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSog
ciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgLCBtX2VtaXRzT2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXJzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yRW1pdHNPYmplY3RSZXBs
YWNlbWVudENoYXJhY3RlcnMpCiAgICAgLCBtX3N0b3BzT25Gb3JtQ29udHJvbHMoYmVoYXZpb3Ig
JiBUZXh0SXRlcmF0b3JTdG9wc09uRm9ybUNvbnRyb2xzKQogICAgICwgbV9zaG91bGRTdG9wKGZh
bHNlKQorICAgICwgbV9lbWl0c0ltYWdlQWx0VGV4dChiZWhhdmlvciAmIFRleHRJdGVyYXRvckVt
aXRzSW1hZ2VBbHRUZXh0KQogewogICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwpAQCAtNjg4
LDEwICs2OTAsMTggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgp
CiAgICAgbV9wb3NpdGlvbk9mZnNldEJhc2VOb2RlID0gbV9ub2RlOwogICAgIG1fcG9zaXRpb25T
dGFydE9mZnNldCA9IDA7CiAgICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IDE7Ci0KICAgICBtX3Rl
eHRDaGFyYWN0ZXJzID0gMDsKLSAgICBtX3RleHRMZW5ndGggPSAwOwogCisgICAgaWYgKG1fZW1p
dHNJbWFnZUFsdFRleHQgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSAmJiByZW5kZXJlci0+aXNSZW5k
ZXJJbWFnZSgpKSB7CisgICAgICAgIG1fdGV4dCA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIpLT5h
bHRUZXh0KCk7CisgICAgICAgIGlmICghbV90ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
bV90ZXh0TGVuZ3RoID0gbV90ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgbV9sYXN0Q2hhcmFj
dGVyID0gbV90ZXh0W21fdGV4dExlbmd0aCAtIDFdOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3RleHRMZW5ndGggPSAwOwogICAgIG1fbGFzdENo
YXJhY3RlciA9IDA7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCmluZGV4IDExOTkyYjM1NzBkYWFkN2QwMTU4ODJlZjczYmEwOGZkYjViNWEwYmEu
LmI5ZTgzMTA1MDVjZTg3MTFkZWNhYTRmNTEwY2NjZDQ2YjM3YThjYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtNDQsNyArNDQsOCBAQCBlbnVtIFRleHRJdGVyYXRv
ckJlaGF2aW9yIHsKICAgICBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5ID0gMSA8
PCAzLAogICAgIFRleHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJzID0g
MSA8PCA0LAogICAgIFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0ID0gMSA8PCA1LAotICAg
IFRleHRJdGVyYXRvclN0b3BzT25Gb3JtQ29udHJvbHMgPSAxIDw8IDYKKyAgICBUZXh0SXRlcmF0
b3JTdG9wc09uRm9ybUNvbnRyb2xzID0gMSA8PCA2LAorICAgIFRleHRJdGVyYXRvckVtaXRzSW1h
Z2VBbHRUZXh0ID0gMSA8PCA3LAogfTsKICAgICAKIC8vIEZJWE1FOiBDYW4ndCByZWFsbHkgYW5z
d2VyIHRoaXMgcXVlc3Rpb24gY29ycmVjdGx5IHdpdGhvdXQga25vd2luZyB0aGUgd2hpdGUtc3Bh
Y2UgbW9kZS4KQEAgLTE5Miw2ICsxOTMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdG9wc09u
Rm9ybUNvbnRyb2xzOwogICAgIC8vIFVzZWQgd2hlbiBtX3N0b3BzT25Gb3JtQ29udHJvbHMgaXMg
c2V0IHRvIGRldGVybWluZSBpZiB0aGUgaXRlcmF0b3Igc2hvdWxkIGtlZXAgYWR2YW5jaW5nLgog
ICAgIGJvb2wgbV9zaG91bGRTdG9wOworCisgICAgYm9vbCBtX2VtaXRzSW1hZ2VBbHRUZXh0Owog
fTsKIAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9NIHJhbmdlLCByZXR1cm5pbmcgYWxsIHRo
ZSB0ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IDdiZmVhMDZmNjM0Nzg1MDkwMzVhYmZkYzk3MGRkMTUxYjhiYzky
MjguLmZlNGY0MGFmZjdhODZhMzc5MmZhMmI1MDA1NTc1MTMwNjg0ZGNiMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTI2MiwxMyArMjYyLDEzIEBAIHZvaWQg
RWRpdG9yOjp0YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKQogICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzOwogICAgIHR5cGVzLmFwcGVuZChTdHJpbmcoTlNTdHJpbmdQYm9hcmRUeXBlKSk7CiAg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0
eXBlcywgTlNGaW5kUGJvYXJkKTsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUobV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhzZWxlY3RlZFRleHQoKSksIE5TU3RyaW5nUGJvYXJkVHlwZSwgTlNGaW5k
UGJvYXJkKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnNldFN0cmluZ0ZvclR5cGUobV9mcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhzZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSksIE5TU3RyaW5nUGJvYXJkVHlwZSwgTlNGaW5k
UGJvYXJkKTsKIH0KIAogdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMpCiB7CiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
LSAgICBwYXN0ZWJvYXJkLndyaXRlU2VsZWN0aW9uRm9yVHlwZXMocGFzdGVib2FyZFR5cGVzLCB0
cnVlLCBtX2ZyYW1lKTsKKyAgICBwYXN0ZWJvYXJkLndyaXRlU2VsZWN0aW9uRm9yVHlwZXMocGFz
dGVib2FyZFR5cGVzLCB0cnVlLCBtX2ZyYW1lLCBEZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSk7CiB9
CiAgICAgCiB2b2lkIEVkaXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBFZGl0b3I6OnJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
CiBTdHJpbmcgRWRpdG9yOjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKIHsKLSAgICBy
ZXR1cm4gUGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKG1fZnJhbWUpOworICAgIHJldHVy
biBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24obV9mcmFtZSwgRGVmYXVsdFNlbGVjdGVk
VGV4dFR5cGUpOwogfQogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAwNDA0NTk0MGYzNWZjZmRjNjhmZWM4
NTI5MGRjMDhjNTNmOTdlZWM2Li5kMzYxOWViYWNiM2MwNmFlMGUyY2ViMGM4NDQyM2ViOGNmZGYy
Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzg5LDcgKzc4
OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRlLm1fZHJhZ1R5cGUg
PT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAoIWNsaXBib2FyZC0+
aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKHNy
Yy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3Jp
dGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAg
ICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0
Rm9yQ2xpcGJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXpl
ZFJhbmdlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCmluZGV4IDc3ODRjYWUxYWM1NmU3NTg0MGZhOTIzMTI0N2JkZWU4ZGUz
NDMyY2QuLjg5ZjFlMWU4YjM1MjUxZWJmODEzNWJiZDg2ZDNmMjY5ZTE2MzkyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgpAQCAtMjAzLDMgKzIwMyw1IEBAIGRlZmF1bHRWaWRlb1Bvc3RlclVS
TCB0eXBlPVN0cmluZwogCiBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQgaW5pdGlhbD1kZWZhdWx0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkCiBzZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
IGluaXRpYWw9ZGVmYXVsdFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQKKworc2VsZWN0
aW9uSW5jbHVkZXNBbHRJbWFnZVRleHQgaW5pdGlhbD1mYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCmluZGV4IDQwMjJhNjFhMzYyZjAwZWQzYThhMTk2OGM3ZjRmOWEyYTAwNjU0
NTguLjA4YjY4NjVjOWIzNzA3ZmRhZTExNzBkODdhZmVmODU0NWY4NTgzZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYzLDcgKzYzLDcgQEAgZXh0ZXJuIGNvbnN0IGNo
YXIqIFdlYlVSTFBib2FyZFR5cGU7CiBleHRlcm4gY29uc3QgY2hhciogV2ViVVJMc1dpdGhUaXRs
ZXNQYm9hcmRUeXBlOwogI2VuZGlmCiAKLSAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CitjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBDbGlwYm9hcmQ7CiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogY2xhc3MgRnJhbWU7CkBAIC03Miw2ICs3Miw4IEBAIGNsYXNzIEtVUkw7CiBjbGFzcyBO
b2RlOwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2VudW0gU2hvdWxkU2Vy
aWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHsgRGVmYXVsdFNlbGVjdGVkVGV4dFR5cGUs
IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgfTsKICAgICAKIGNsYXNzIFBhc3RlYm9h
cmQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhc3RlYm9hcmQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTgzLDE0ICs4NSwxNCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBzdXBwb3J0IE9TIFggc2VydmljZXMuCi0g
ICAgdm9pZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKik7CisgICAgdm9p
ZCB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiwgU2hvdWxkU2VyaWFsaXpl
U2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKTsKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0U3RyaW5nU2Vs
ZWN0aW9uKEZyYW1lKik7CisgICAgc3RhdGljIFN0cmluZyBnZXRTdHJpbmdTZWxlY3Rpb24oRnJh
bWUqLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpOwogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0RGF0YVNlbGVjdGlvbihGcmFtZSosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogI2VuZGlmCiAgICAgCiAgICAgc3RhdGljIFBhc3Rl
Ym9hcmQqIGdlbmVyYWxQYXN0ZWJvYXJkKCk7Ci0gICAgdm9pZCB3cml0ZVNlbGVjdGlvbihSYW5n
ZSosIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKik7CisgICAgdm9pZCB3cml0ZVNl
bGVjdGlvbihSYW5nZSosIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiwgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID0gRGVmYXVsdFNlbGVjdGVkVGV4dFR5
cGUpOwogICAgIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiwgU21hcnRSZXBsYWNl
T3B0aW9uKTsKICAgICB2b2lkIHdyaXRlVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBG
cmFtZSogPSAwKTsKICAgICB2b2lkIHdyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKaW5kZXggNjA4ZTI0ZGZiOTZh
YzBkZWIxODZmMmJjOWFjNzY3MGUxZjYyMTVlZS4uMzVkN2QwZGM0M2YzNGVjMWVjMDYyOWRmZjU5
Y2U4MDFkMDA4MjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTYxLDkgKzYxLDkgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQqKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNl
bGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVT
ZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKiBmcmFtZSwgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCkKIHsKLSAgICBXVEY6OlN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBXVEY6OlN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFs
aXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlw
Ym9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICBXVEY6OlN0cmluZyBodG1sID0gY3Jl
YXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwogICAg
IFdURjo6U3RyaW5nIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hy
b21pdW0uY3BwCmluZGV4IGQwOTA1ZjI4NjZmNjUyZDA3ZGM2ZGViM2VlOGQzODc4NzU4ZjhhNTQu
LjZiOTgxYTBmNWM1ZWIyNjk2YzVhMTUxOTc0MjUxZWZiM2Y4ZWUxMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAK
QEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIENsaXBib2FyZENocm9taXVtOjp3cml0ZVJhbmdlKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBtX2RhdGFPYmplY3QtPnNl
dEhUTUxBbmRCYXNlVVJMKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZv
ckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcyksIGZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQoKTsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCBkZjFj
NmU1NTRkMzM1YmZhYTNkYzY5MTQzZjFlNmIzMzU3NDIyY2FjLi4wN2ZhOWE5NDY4ZDJkZTlkYTc5
MWJjZDNhMGQ2NTJhYmE1NjZjNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTg1LDExICs4NSwxMSBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnNldFNlbGVjdGlvbk1vZGUoYm9vbCBzZWxlY3Rpb25Nb2RlKQog
ICAgIG1fc2VsZWN0aW9uTW9kZSA9IHNlbGVjdGlvbk1vZGU7CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24o
UmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBm
cmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBTdHJpbmcgaHRtbCA9IGNyZWF0
ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwg
UmVzb2x2ZU5vbkxvY2FsVVJMcyk7CiAgICAgS1VSTCB1cmwgPSBzZWxlY3RlZFJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT51cmwoKTsKLSAgICBTdHJpbmcgcGxhaW5UZXh0ID0g
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgcGxhaW5UZXh0ID0g
c2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFs
dFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICNpZiBPUyhXSU5ET1dT
KQogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhwbGFpblRleHQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVi
b2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5j
cHAKaW5kZXggN2ExYWM0NTI3OGNkMDRkMTJjNjE3ZjVmZmE2YTc3NTE2MWU4NjE2My4uZDQ0MzBj
NjEzYTczYjU0NWJhMjZlNGJiMDAzNmNlMjBlZmU3MDhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlv
bikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2Vs
ZWN0aW9uKFJhbmdlKiwgYm9vbCwgRnJhbWUqKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVj
dGlvbihSYW5nZSosIGJvb2wsIEZyYW1lKiwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IGY1MDQ2MGE3MjFhYzQwM2RmMWFj
YWU5YjU0NDAzODBlYTgzYTgxZjEuLjc3YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5Mjgw
MDU2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3Bw
CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2UoUmFuZ2Uq
IHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJhbmdlKTsKIAotICAgIG1fZGF0
YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICBt
X2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlw
Ym9hcmQoKSk7CiAgICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHJhbmdl
LCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykp
OwogCiAgICAgaWYgKG1fY2xpcGJvYXJkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGNkNjIwNTQyNTJiYTYwNGEzMmU3Yzg2YjhjMWRkYTYw
M2JlZmVkOWMuLmZiMTQ0M2VlYzQ2YWY3YWU2OWE4ZmE2OTI1YTgzNTBlZmYzOGU0NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCiB7CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24o
UmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBm
cmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkSGVscGVyKiBo
ZWxwZXIgPSBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpOwogICAg
IEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gaGVscGVyLT5nZXRDdXJyZW50Q2xpcGJvYXJkKGZy
YW1lKTsKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihS
YW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKICAgICBEYXRh
T2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBi
b2FyZCk7CiAgICAgZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsKIAotICAgIGRhdGFPYmplY3QtPnNl
dFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgZGF0YU9iamVjdC0+
c2V0VGV4dChzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVk
ZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0
Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKICAgICBk
YXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAgICAgaGVs
cGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCwgY2FuU21hcnRDb3B5T3JEZWxl
dGUgPyBQYXN0ZWJvYXJkSGVscGVyOjpJbmNsdWRlU21hcnRQYXN0ZSA6IFBhc3RlYm9hcmRIZWxw
ZXI6OkRvTm90SW5jbHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggMzZhNGQ4ZTI4NTYwODFhYjA4OTkxMzBlZjJmYzY3
NGQ5ZGM3MzUzZS4uOTQ5NzEyMWM1NTljYzg5M2NlYmMyZDhjZjVmYTJiMzQ3NDdmZjU5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0zNzcsNyAr
Mzc3LDcgQEAgdm9pZCBDbGlwYm9hcmRNYWM6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFt
ZSogZnJhbWUpCiAgICAgQVNTRVJUKHJhbmdlKTsKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBwYXN0ZWJvYXJkLndy
aXRlU2VsZWN0aW9uKHJhbmdlLCBmcmFtZS0+ZWRpdG9yKCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVs
YXJpdHksIGZyYW1lKTsKKyAgICBwYXN0ZWJvYXJkLndyaXRlU2VsZWN0aW9uKHJhbmdlLCBmcmFt
ZS0+ZWRpdG9yKCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpICYmIGZyYW1lLT5zZWxlY3Rp
b24oKS0+Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHksIGZyYW1lLCBGb3JDbGlwYm9h
cmQpOwogfQogCiB2b2lkIENsaXBib2FyZE1hYzo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpp
bmRleCBjMjBiN2JiMjZkYmViODViZjgwNTQwZjU1Njc2MmI2MGQ1NWIwNDMwLi5lNDk1MmQ3OTkz
YjkwOWE1OWRkM2QzNDkxZGQ5ODAyYTE4MDI5M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTM1LDkgKzEzNSw5IEBAIHZvaWQgUGFzdGVi
b2FyZDo6Y2xlYXIoKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+c2V0VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAK
LVN0cmluZyBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQorU3Ry
aW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUsIFNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRl
eHRGb3JDbGlwYm9hcmQpCiB7Ci0gICAgU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGVkVGV4dCgpOworICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRU
ZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHQoKTsKICAgICB0ZXh0LnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcpOwog
ICAgIHJldHVybiB0ZXh0OwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpnZXREYXRhU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
U2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Ym9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lLCBTaG91bGRTZXJpYWxpemVT
ZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKQogewogICAgIE5TQXR0cmlidXRlZFN0cmluZyogYXR0cmlidXRlZFN0cmluZyA9IG5p
bDsKICAgICBSZXRhaW5QdHI8V2ViSFRNTENvbnZlcnRlcj4gY29udmVydGVyKEFkb3B0TlMsIFtb
V2ViSFRNTENvbnZlcnRlciBhbGxvY10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGIKICAgICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBw
YXN0ZWJvYXJkLgogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNTdHJpbmdQYm9hcmRU
eXBlKSkpCi0gICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0U3RyaW5nRm9yVHlwZShnZXRTdHJpbmdTZWxlY3Rpb24oZnJhbWUpLCBOU1N0cmluZ1Bi
b2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoZ2V0U3RyaW5nU2VsZWN0
aW9uKGZyYW1lLCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpLCBOU1N0
cmluZ1Bib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIAogICAgIGlmICh0eXBlcy5j
b250YWlucyhXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSkpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgwLCBXZWJTbWFy
dFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0yMjcsOSArMjI3LDkgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0
UmVwbGFjZU9wdGlvbiBzbWFydFJlcGwKICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9h
cmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KICAgICAKLXZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVTZWxlY3Rpb24oUmFuZ2UqLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFy
dENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewot
ICAgIHdyaXRlU2VsZWN0aW9uRm9yVHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgY2FuU21hcnRDb3B5
T3JEZWxldGUsIGZyYW1lKTsKKyAgICB3cml0ZVNlbGVjdGlvbkZvclR5cGVzKFZlY3RvcjxTdHJp
bmc+KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBmcmFtZSwgc2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKTsKIH0KIAogc3RhdGljIHZvaWQgd3JpdGVVUkxGb3JUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZyYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IGM1Yjg3NzBj
M2ZmOTM4Yzg5OWIwYjYwOWI1ODA3ZGEyNzM2OWQzYTIuLjg4Y2RjZjY1Nzg3ZGI3NDQyNzg3NDg3
NzNjMGExYzJlNjlmY2Y4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9h
cmRRdC5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIENsaXBib2FyZFF0Ojp3cml0ZVJhbmdl
KFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFtX3dyaXRhYmxlRGF0YSkK
ICAgICAgICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwotICAgIFFTdHJpbmcgdGV4
dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgUVN0cmluZyB0ZXh0ID0g
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICB0ZXh0LnJl
cGxhY2UoUUNoYXIoMHhhMCksIFFMYXRpbjFDaGFyKCcgJykpOwogICAgIG1fd3JpdGFibGVEYXRh
LT5zZXRUZXh0KHRleHQpOwogICAgIG1fd3JpdGFibGVEYXRhLT5zZXRIdG1sKGNyZWF0ZU1hcmt1
cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2Nh
bFVSTHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9h
cmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCmlu
ZGV4IDA4ZTk3YzdkNjg4NGQ5NTM2YjM5MzU5MWMyYzk1YzgxMjUxYmRhMWUuLjU1MGFmN2FjZTk3
NWM3MWU3MDM4MzY3YWQ0OGMyNTFlODFiNGZkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtNTksMTAgKzU5LDEwIEBAIFBhc3RlYm9hcmQqIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gcGFzdGVib2FyZDsKIH0K
IAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwg
Ym9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlP
ckRlbGV0ZSwgRnJhbWUqIGZyYW1lLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlw
Ym9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewogICAgIFFN
aW1lRGF0YSogbWQgPSBuZXcgUU1pbWVEYXRhOwotICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgUVN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFs
aXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlw
Ym9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKICAgICB0ZXh0LnJlcGxhY2UoUUNoYXIoMHhh
MCksIFFMYXRpbjFDaGFyKCcgJykpOwogICAgIG1kLT5zZXRUZXh0KHRleHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDdjYTMxNjU5NWEw
YjlhZWQwYjhmNmFkMmI3OGViMmI1N2I3YWM4NDMuLjMxN2IxMDNjNWIyOWE5MTM4NTQ5OGViNzVi
ZjQyZDQ2MThhNWRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwCkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFu
Z2UoUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBpZiAobWVkaXVtLmhH
bG9iYWwgJiYgRkFJTEVEKG1fd3JpdGFibGVEYXRhT2JqZWN0LT5TZXREYXRhKGh0bWxGb3JtYXQo
KSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwp
OwogCi0gICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7Cisg
ICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJk
KCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHN0cik7CiAg
ICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsKICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0
ZUdsb2JhbERhdGEoc3RyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCBkZGUyZTI0MDRlOTg3YjJjMjZiZDYxMjY4YmFkMzFjZTViYWFkOGMy
Li4zMWVlNzVlOTdhYjY2N2ExMzQzM2RjOTQ4Y2VjZmM4NDA2YmQ4ZTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgfQogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxp
emVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgY2xlYXIoKTsKIApAQCAtMTI5LDcg
KzEyOSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgfQogICAgIAogICAgIC8vIFB1
dCBwbGFpbiBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuIENGX1VOSUNPREVURVhUIGNvdmVycyBD
Rl9URVhUIGFzIHdlbGwKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKTsKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMo
c3RyKTsKICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShzdHIpOwogICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9Q
YXN0ZWJvYXJkV2luQ0UuY3BwCmluZGV4IDVlZjNkMmJmOGFkZTM1MjQwMDgzZjFlOWQ2Njk2Njli
ZGUxZTMxOGUuLjMxMmZmMTVmODFjMmRlNWRjYTVkMDlkMDBjYTQ0OWJiZTNkNmZjNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogICAgIH0KIH0KIAot
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQordm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZSwgRnJhbWUqIGZyYW1lLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewogICAgIGNsZWFy
KCk7CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9u
KFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0K
IAogICAgIC8vIFB1dCBwbGFpbiBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuIENGX1VOSUNPREVU
RVhUIGNvdmVycyBDRl9URVhUIGFzIHdlbGwKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPnNlbGVj
dGVkVGV4dCgpOworICAgIFN0cmluZyBzdHIgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5l
cyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7CiAgICAgaWYgKDo6T3BlbkNs
aXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3gvUGFzdGVib2FyZFd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9h
cmRXeC5jcHAKaW5kZXggZDBjZGMwYTJlMmQzYjdkYzIwMjhkZWM0NDJjMWJlMjkzZDU5ZGY4NC4u
NDNhMzQ3YjdmMDYwZTljYWZhYWY1NTA5NWU1M2I5OTE2ODViMTgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVib2FyZFd4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgUGFz
dGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQogICAgIHJldHVybiBwYXN0
ZWJvYXJkOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxl
Y3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQp
CiB7CiAgICAgaWYgKHd4VGhlQ2xpcGJvYXJkLT5PcGVuKCkpIHsKICNpZiB3eENIRUNLX1ZFUlNJ
T04oMiwgOSwgNCkKICAgICAgICAgd3hUaGVDbGlwYm9hcmQtPlNldERhdGEobmV3IHd4SFRNTERh
dGFPYmplY3QoY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJj
aGFuZ2UpKSk7CiAjZW5kaWYKLSAgICAgICAgd3hUaGVDbGlwYm9hcmQtPlNldERhdGEobmV3IHd4
VGV4dERhdGFPYmplY3QoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSkpOworICAgICAg
ICB3eFRoZUNsaXBib2FyZC0+U2V0RGF0YShuZXcgd3hUZXh0RGF0YU9iamVjdChzaG91bGRTZXJp
YWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNs
aXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBm
cmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKSk7CiAgICAgICAgIHd4VGhlQ2xpcGJvYXJk
LT5DbG9zZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgK
aW5kZXggZTE3MTRmNWZlZDExMzY0ZDMzNGRhOWU3ZDZhYWRiOWZmMzRhYjFhNC4uMTVjNzkwNjdj
YWQyNmYwMGJmYzZiYTZjZDQzY2RmNjE5NWIzYmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmgKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0dl
bmVyYXRlZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdGVkQ29udGVudDsgfQog
CisgICAgU3RyaW5nIGFsdFRleHQoKSBjb25zdCB7IHJldHVybiBtX2FsdFRleHQ7IH0KKwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2FsY3VsYXRp
b24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTMwNzJkMDEwMjIwOGQ2NjFkZmNhNzI4ZjNmYTIxNWEzYzhiMmRmZi4u
OTY1OTUyNjlhMjg1YWY2MTZjZTg4YjI5N2QzMzliODYzMDJkZDkwMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEzLTAzLTI1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgSW1hZ2UgYWx0IHRleHQgbm90IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3
aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0
aC1hbHQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0yNSAgUGV0ZXIgS2FzdGluZyAgPHBr
YXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBTaGVyaWZmaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1h
bHQtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29w
eS1pbWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjFjZTE5Nzdj
YmFmYTZlNTExMzJhZGM1NDgzMTdlODZlMjZjMDZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMSBAQAorVGhpcyB0ZXN0cyB0aGF0IGltYWdlIGFsdCB0ZXh0IG1h
a2VzIGl0IHRvIHRoZSBjbGlwYm9hcmQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQgb3IgV1RSLiBU
aGUgZmlyc3QgdHdvIGR1bXBzIHNob3VsZCBub3QgaW5jbHVkZSBhbHQgdGV4dCBhbmQgdGhlIHRo
aXJkIGFuZCBmb3J0aCBkdW1wcyBzaG91bGQgaW5jbHVkZSBhbHQgdGV4dC4KKworRHVtcCBvZiBt
YXJrdXAgMToKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2PgorfCAgICAgICAiSGVyZSBp
cyBhbiBlbW90aWNvbiBbXSwgc29tZSBtb3JlIHRleHQgW10sIGFuIGVtcHR5IGFsdCB0YWcgW10s
IG5vIGFsdCB0YWcgW10gYW5kIHR3byBjb25zZWN1dGl2ZSBpbWFnZXMgW10uIgorfCAgICAgICAi
CisKKyIKKworRHVtcCBvZiBtYXJrdXAgMjoKK3wgPGRpdj4KK3wgICAiSGVyZSBpcyBhbiBlbW90
aWNvbiBbXSwgc29tZSBtb3JlIHRleHQgW10sIGFuIGVtcHR5IGFsdCB0YWcgW10sIG5vIGFsdCB0
YWcgW10gYW5kIHR3byBjb25zZWN1dGl2ZSBpbWFnZXMgW10uIgorfCA8ZGl2PgorfCAgIDwjc2Vs
ZWN0aW9uLWNhcmV0PgorfCAgIDxicj4KKworRHVtcCBvZiBtYXJrdXAgMzoKK3wgICA8c2hhZG93
OnJvb3Q+Cit8ICAgICA8ZGl2PgorfCAgICAgICAiSGVyZSBpcyBhbiBlbW90aWNvbiBbOildLCBz
b21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRdLCBhbiBlbXB0eSBhbHQgdGFnIFtdLCBubyBhbHQg
dGFnIFtdIGFuZCB0d28gY29uc2VjdXRpdmUgaW1hZ2VzIFtmaXJzdHNlY29uZF0uIgorfCAgICAg
ICAiCisKKyIKKworRHVtcCBvZiBtYXJrdXAgNDoKK3wgPGRpdj4KK3wgICAiSGVyZSBpcyBhbiBl
bW90aWNvbiBbOildLCBzb21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRdLCBhbiBlbXB0eSBhbHQg
dGFnIFtdLCBubyBhbHQgdGFnIFtdIGFuZCB0d28gY29uc2VjdXRpdmUgaW1hZ2VzIFtmaXJzdHNl
Y29uZF0uIgorfCA8ZGl2PgorfCAgIDwjc2VsZWN0aW9uLWNhcmV0PgorfCAgIDxicj4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdpdGgtYWx0
LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LWltYWdlLXdp
dGgtYWx0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTdiODFmZWY0YjcyNDhhZDg5YzQ5MTM0ZTAx
NTE4OGFhNjk5MmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK01hcmt1cC5kZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
aGF0IGltYWdlIGFsdCB0ZXh0IG1ha2VzIGl0IHRvIHRoZSBjbGlwYm9hcmQuIFRoaXMgdGVzdCBy
ZXF1aXJlcyBEUlQgb3IgV1RSLiIKKyAgICArICIgVGhlIGZpcnN0IHR3byBkdW1wcyBzaG91bGQg
bm90IGluY2x1ZGUgYWx0IHRleHQgYW5kIHRoZSB0aGlyZCBhbmQgZm9ydGggZHVtcHMgc2hvdWxk
IGluY2x1ZGUgYWx0IHRleHQuIik7CitNYXJrdXAubm9BdXRvRHVtcCgpOworCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
Iik7CisgICAgZXhlY1NldFNlbGVjdGlvbkNvbW1hbmQodGVzdCwgMCwgdGVzdC5uZXh0U2libGlu
ZywgMCk7CisgICAgZXhlY0NvcHlDb21tYW5kKCk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGV4dGFyZWEtcmVzdWx0IikudmFsdWUgPSAiIjsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGV4dGFyZWEtcmVzdWx0IikuZm9jdXMoKTsKKyAgICBleGVjUGFzdGVDb21tYW5k
KCk7CisgICAgTWFya3VwLmR1bXAoInRleHRhcmVhLXJlc3VsdCIpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRlbnQtZWRpdGFibGUtcmVzdWx0IikuaW5uZXJIVE1MID0gIiI7
CisgICAgc2VsZWN0aW9uLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250
ZW50LWVkaXRhYmxlLXJlc3VsdCIpLCAwKTsKKyAgICBleGVjUGFzdGVBbmRNYXRjaFN0eWxlQ29t
bWFuZCgpOworICAgIE1hcmt1cC5kdW1wKCJjb250ZW50LWVkaXRhYmxlLXJlc3VsdCIpOworfQor
Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBydW5UZXN0KCk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRT
ZWxlY3Rpb25JbmNsdWRlc0FsdEltYWdlVGV4dCh0cnVlKTsKKyAgICBydW5UZXN0KCk7CisKKyAg
ICBNYXJrdXAubm90aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisK
KzxkaXYgaWQ9InRlc3QiPkhlcmUgaXMgYW4gZW1vdGljb24gWzxpbWcgc3JjPSJyZXNvdXJjZXMv
YXBwbGUuZ2lmIiBhbHQ9IjopIj5dLAorc29tZSBtb3JlIHRleHQgWzxpbWcgYWx0PSJzYW1wbGUg
dGV4dCI+XSwKK2FuIGVtcHR5IGFsdCB0YWcgWzxpbWcgYWx0PSIiPl0sCitubyBhbHQgdGFnIFs8
aW1nIHNyYz0icmVzb3VyY2VzL2FwcGxlLmdpZiI+XQorYW5kIHR3byBjb25zZWN1dGl2ZSBpbWFn
ZXMgWzxpbWcgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIiBhbHQ9ImZpcnN0Ij48aW1nIHNyYz0i
cmVzb3VyY2VzL2FwcGxlLmdpZiIgYWx0PSJzZWNvbmQiPl0uPC9kaXY+Cis8dGV4dGFyZWEgaWQ9
InRleHRhcmVhLXJlc3VsdCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDVlbTsiPjwvdGV4
dGFyZWE+Cis8ZGl2IGlkPSJjb250ZW50LWVkaXRhYmxlLXJlc3VsdCIgY29udGVudEVkaXRhYmxl
PSJ0cnVlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194927</attachid>
            <date>2013-03-25 14:37:51 -0700</date>
            <delta_ts>2013-03-25 18:35:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-11200-20130325143335.patch</filename>
            <type>text/plain</type>
            <size>36984</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ0MDI0MWYyYjIxOTRm
OGFjZGIyMTExODliMTExNjc2MDNiYjQ3Ni4uZjMyNjgwZDliMjVmZWUzZmU0YzUzN2YzZWY2MWIx
NzU1OWFhMWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTAzLTI1ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1hZ2UgYWx0IHRleHQgbm90
IGluY2x1ZGVkIGluIHBsYWluLXRleHQgdmVyc2lvbiB3aGVuIGNvcHlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdG8gZW5hYmxl
IGNvcHlpbmcgaW1hZ2UgYWx0IHRleHQgdG8gdGhlIGNsaXBib2FyZCBhbmQgZHJhZyBhbmQgZHJv
cCBwYXN0ZWJvYXJkLgorICAgICAgICBUaGlzIHNldHRpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVs
dCwgc28gZWFjaCBwb3J0IGNhbiBlbmFibGUgaWYgdGhleSB3YW50IHRvIG1hdGNoIElFMTAgYW5k
CisgICAgICAgIEZpcmVmb3gncyBiZWhhdmlvci4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3Bh
c3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0Lmh0bWwKKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3V0KTogRXhwbGljaXRs
eSBhc2sgdGhhdCB0aGUgc2VsZWN0aW9uIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGJlaW5nIGZvciB0
aGUgY2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3B5KTogRXhwbGljaXRs
eSBhc2sgdGhhdCB0aGUgc2VsZWN0aW9uIG9uIHRoZSBwYXN0ZWJvYXJkIGFzIGJlaW5nIGZvciB0
aGUgY2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3RlZFRleHQpOiBB
ZGQgYSBwcml2YXRlIHZlcnNpb24gb2Ygc2VsZWN0ZWRUZXh0KCkgdGhhdCBjYW4gY2hvb3NlIGJl
dHdlZW4gaGF2aW5nIGltYWdlIGFsdCB0ZXh0IG9yIG5vdC4KKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKTogQXNrIGZvciBpbWFnZSBhbHQgdGV4dCBp
ZiB0aGUgc2V0dGluZyBpcyBlbmFibGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IpOiBBZGQgYSBib29sIHRvIGtlZXAgdHJhY2sgb2Ygd2hl
dGhlciBvciBub3QgdG8gZW1pdCBpbWFnZSBhbHQgdGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KTogSWYgdGhlcmUncyBhbHQgdGV4dCwg
cG9pbnQgdGhlIGl0ZXJhdG9yIHRvIGl0LgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9y
Lmg6CisgICAgICAgIChUZXh0SXRlcmF0b3IpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKTogVXNlIHRoZSBzYW1lIHRleHQgYXMgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOiBEb24ndCBpbmNs
dWRlIGltYWdlIGFsdCB0ZXh0IHNpbmNlIHRoaXMgaXMKKyAgICAgICAgdXNlZCBieSBTZXJ2aWNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCk6IERvbid0IGluY2x1ZGUgaW1hZ2UgYWx0IHRleHQgc2luY2UgdGhpcyBpcworICAgICAgICB1
c2VkIGJ5IFNlcnZpY2VzLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6IFVzZSBpbWFnZSBhbHQg
dGV4dCAobWF0Y2hlcyBGaXJlZm94KS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGQg
YSBzZXR0aW5nIHRoYXQgZGlzYWJsZXMgaW1hZ2UgYWx0IHRleHQgYnkgZGVmYXVsdC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Ojp3cml0ZVNlbGVjdGlvbik6IEFkZCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlw
Ym9hcmQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZENocm9taXVtOjp3cml0ZVJh
bmdlKTogVXNlIGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMgKHVzZWQgYnkgZCZk
KS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZVNlbGVjdGlvbik6IFVwZGF0ZSBmdW5jdGlvbiBwYXJhbS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEd0azo6d3JpdGVSYW5nZSk6IFVzZSBjbGlwYm9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2Vz
ICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgU2hv
dWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkTWFjOjp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5n
ZXMgKHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbik6IFVz
ZSBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdGhlIHNlbGVjdGVkCisgICAgICAgIHRleHQgaXMgZm9yIHRoZSBjbGlwYm9hcmQgb3Ig
bm90LgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBl
cyk6IFBhc3MgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHRocm91Z2gu
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbik6IEFkZCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgcGFyYW1ldGVyLgorICAgICAgICAq
IHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZFF0Ojp3cml0ZVJhbmdlKTogVXNlIGNsaXBib2FyZCB0ZXh0IHdoZW4gd3JpdGluZyByYW5nZXMg
KHVzZWQgYnkgZCZkKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4KKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZFdpbjo6d3JpdGVSYW5nZSk6IFVzZSBjbGlwYm9hcmQgdGV4dCB3aGVuIHdyaXRpbmcgcmFuZ2Vz
ICh1c2VkIGJ5IGQmZCkuCisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgU2hv
dWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOiBBZGQgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRU
ZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9QYXN0ZWJv
YXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24p
OiBBZGQgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHBhcmFtZXRlci4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjphbHRUZXh0KTogQWRkIGEgZ2V0dGVyIGZvciB0aGUgYWx0IHRleHQuCisKIDIw
MTMtMDMtMjUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIEluY29y
cmVjdCBwYXJzaW5nIGR1ZSB0byBoYXNoIGNvbGxpc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDE3YzI1NjE3ZGQ3M2RlOWI3ZTEyZmQ5OTY1YmIzYzZmZDFmZmYzMGYuLmQ4YmY4
MWE0MGNkY2ZkY2ZlMGUwOTdhNmFlNzI4NWJhNGRhY2U0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTEwNDMsMTAgKzEwNDMsMTAgQEAgdm9pZCBFZGl0b3I6OmN1dCgpCiAgICAg
aWYgKHNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi5nZXQoKSkpIHsKICAgICAgICAgdXBkYXRl
TWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcodHJ1ZSk7CiAgICAgICAgIGlmIChlbmNs
b3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9mcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKSB7Ci0g
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4
dChzZWxlY3RlZFRleHQoKSwKKyAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJv
YXJkKCktPndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpLAogICAgICAg
ICAgICAgICAgIGNhblNtYXJ0Q29weU9yRGVsZXRlKCkgPyBQYXN0ZWJvYXJkOjpDYW5TbWFydFJl
cGxhY2UgOiBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2UpOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0
aW9uKHNlbGVjdGlvbi5nZXQoKSwgY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgbV9mcmFtZSk7Cisg
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlv
bihzZWxlY3Rpb24uZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1fZnJhbWUsIEluY2x1
ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQpOwogICAgICAgICBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpOwogICAgICAgICBkZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoY2Fu
U21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgfQpAQCAtMTA2MywxNCArMTA2MywxNCBAQCB2b2lk
IEVkaXRvcjo6Y29weSgpCiAKICAgICB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoc2Vs
ZWN0ZWRSYW5nZSgpKTsKICAgICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5zdGFydCgpKSkgewotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpLT53cml0ZVBsYWluVGV4dChzZWxlY3RlZFRleHQoKSwKKyAgICAgICAgUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRleHQoc2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCksCiAgICAgICAgICAgICBjYW5TbWFydENvcHlPckRlbGV0ZSgpID8gUGFzdGVi
b2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpOwogICAgICAgICBpZiAoSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gaW1h
Z2VFbGVtZW50RnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICAgICAgUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVJbWFnZShpbWFnZUVsZW1lbnQsIGRvY3Vt
ZW50LT51cmwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihzZWxlY3Rl
ZFJhbmdlKCkuZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1fZnJhbWUpOworICAgICAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oc2Vs
ZWN0ZWRSYW5nZSgpLmdldCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBtX2ZyYW1lLCBJbmNs
dWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkKTsKICAgICB9CiAKICAgICBkaWRXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZCgpOwpAQCAtMjYxMyw4ICsyNjEzLDIwIEBAIHZvaWQgRWRpdG9yOjpj
aGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2Vs
ZWN0aW9uLAogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3RlZFRleHQoKSBjb25zdAogeworICAgIHJl
dHVybiBzZWxlY3RlZFRleHQoVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKK30KKworU3Ry
aW5nIEVkaXRvcjo6c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgY29uc3QKK3sKKyAgICBpZiAo
bV9mcmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5zZWxlY3Rpb25JbmNs
dWRlc0FsdEltYWdlVGV4dCgpKQorICAgICAgICByZXR1cm4gc2VsZWN0ZWRUZXh0KFRleHRJdGVy
YXRvckVtaXRzSW1hZ2VBbHRUZXh0KTsKKyAgICByZXR1cm4gc2VsZWN0ZWRUZXh0KCk7Cit9CisK
K1N0cmluZyBFZGl0b3I6OnNlbGVjdGVkVGV4dChUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlv
cikgY29uc3QKK3sKICAgICAvLyBXZSByZW1vdmUgJ1wwJyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhl
eSBhcmUgbm90IHZpc2libHkgcmVuZGVyZWQgdG8gdGhlIHVzZXIuCi0gICAgcmV0dXJuIHBsYWlu
VGV4dChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSkucmVw
bGFjZSgwLCAiIik7CisgICAgcmV0dXJuIHBsYWluVGV4dChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYmVoYXZpb3IpLnJlcGxhY2UoMCwgIiIpOwogfQog
CiBJbnRSZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoUmFuZ2UqIHJhbmdlKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNWJkNWE0MDAzYTY4OTNlOTc3MTM1OGRiYTQ2YzZl
NjM1MzYwOTk0Zi4uMjQyOWMzZDYyMWQ3MzVkNjhhNDljNmQ3MDQwOWIyOTA5ZjJhNzhlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tpbmcuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogCkBA
IC0zNTUsNiArMzU2LDcgQEAgcHVibGljOgogICAgIE5vZGUqIGZpbmRFdmVudFRhcmdldEZyb20o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdDsKIAogICAgIFN0cmluZyBz
ZWxlY3RlZFRleHQoKSBjb25zdDsKKyAgICBTdHJpbmcgc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJk
KCkgY29uc3Q7CiAgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
KTsKICAgICAvLyBGSVhNRTogU3dpdGNoIGNhbGxlcnMgb3ZlciB0byB0aGUgRmluZE9wdGlvbnMg
dmVyc2lvbiBhbmQgcmV0aXJlIHRoaXMgb25lLgogICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBib29sIGZvcndhcmQsIGJvb2wgY2FzZUZsYWcsIGJvb2wgd3JhcEZsYWcsIGJvb2wg
c3RhcnRJblNlbGVjdGlvbik7CkBAIC00NDIsNiArNDQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJv
b2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
ICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayByZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4
dENoZWNraW5nVHlwZU1hc2spOwogCisgICAgU3RyaW5nIHNlbGVjdGVkVGV4dChUZXh0SXRlcmF0
b3JCZWhhdmlvcikgY29uc3Q7CisKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CiAgICAg
ZW51bSBTZXRDb21wb3NpdGlvbk1vZGUgeyBDb25maXJtQ29tcG9zaXRpb24sIENhbmNlbENvbXBv
c2l0aW9uIH07CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBTZXRDb21w
b3NpdGlvbk1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IDNlNDcxZTA4ODU1MjMyODg1NDI3NjUzZWFlYTcxMTg2ZGVkOWZhZTMuLmI4MTUyMjI2ZjlmODIx
NTFmZmFjYzk3NDVlM2ZlZmU3ZWQwOTE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94Lmgi
CiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVk
ZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRl
ICJSZW5kZXJUYWJsZVJvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCkBAIC0y
NjYsNiArMjY3LDcgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIs
IFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgICwgbV9lbWl0c09iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVycyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT2JqZWN0UmVwbGFj
ZW1lbnRDaGFyYWN0ZXJzKQogICAgICwgbV9zdG9wc09uRm9ybUNvbnRyb2xzKGJlaGF2aW9yICYg
VGV4dEl0ZXJhdG9yU3RvcHNPbkZvcm1Db250cm9scykKICAgICAsIG1fc2hvdWxkU3RvcChmYWxz
ZSkKKyAgICAsIG1fZW1pdHNJbWFnZUFsdFRleHQoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JFbWl0
c0ltYWdlQWx0VGV4dCkKIHsKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybjsKQEAgLTY4OCwx
MCArNjkwLDE4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQog
ICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG1fbm9kZTsKICAgICBtX3Bvc2l0aW9uU3Rh
cnRPZmZzZXQgPSAwOwogICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSAxOwotCiAgICAgbV90ZXh0
Q2hhcmFjdGVycyA9IDA7Ci0gICAgbV90ZXh0TGVuZ3RoID0gMDsKIAorICAgIGlmIChtX2VtaXRz
SW1hZ2VBbHRUZXh0ICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgcmVuZGVyZXItPmlzUmVuZGVy
SW1hZ2UoKSkgeworICAgICAgICBtX3RleHQgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+YWx0
VGV4dCgpOworICAgICAgICBpZiAoIW1fdGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1f
dGV4dExlbmd0aCA9IG1fdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAgIG1fbGFzdENoYXJhY3Rl
ciA9IG1fdGV4dFttX3RleHRMZW5ndGggLSAxXTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbV90ZXh0TGVuZ3RoID0gMDsKICAgICBtX2xhc3RDaGFy
YWN0ZXIgPSAwOwogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuaAppbmRleCAxMTk5MmIzNTcwZGFhZDdkMDE1ODgyZWY3M2JhMDhmZGI1YjVhMGJhLi5i
OWU4MzEwNTA1Y2U4NzExZGVjYWE0ZjUxMGNjY2Q0NmIzN2E4Y2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBUZXh0SXRlcmF0b3JC
ZWhhdmlvciB7CiAgICAgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSA9IDEgPDwg
MywKICAgICBUZXh0SXRlcmF0b3JFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyA9IDEg
PDwgNCwKICAgICBUZXh0SXRlcmF0b3JFbWl0c09yaWdpbmFsVGV4dCA9IDEgPDwgNSwKLSAgICBU
ZXh0SXRlcmF0b3JTdG9wc09uRm9ybUNvbnRyb2xzID0gMSA8PCA2CisgICAgVGV4dEl0ZXJhdG9y
U3RvcHNPbkZvcm1Db250cm9scyA9IDEgPDwgNiwKKyAgICBUZXh0SXRlcmF0b3JFbWl0c0ltYWdl
QWx0VGV4dCA9IDEgPDwgNywKIH07CiAgICAgCiAvLyBGSVhNRTogQ2FuJ3QgcmVhbGx5IGFuc3dl
ciB0aGlzIHF1ZXN0aW9uIGNvcnJlY3RseSB3aXRob3V0IGtub3dpbmcgdGhlIHdoaXRlLXNwYWNl
IG1vZGUuCkBAIC0xOTIsNiArMTkzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3RvcHNPbkZv
cm1Db250cm9sczsKICAgICAvLyBVc2VkIHdoZW4gbV9zdG9wc09uRm9ybUNvbnRyb2xzIGlzIHNl
dCB0byBkZXRlcm1pbmUgaWYgdGhlIGl0ZXJhdG9yIHNob3VsZCBrZWVwIGFkdmFuY2luZy4KICAg
ICBib29sIG1fc2hvdWxkU3RvcDsKKworICAgIGJvb2wgbV9lbWl0c0ltYWdlQWx0VGV4dDsKIH07
CiAKIC8vIEl0ZXJhdGVzIHRocm91Z2ggdGhlIERPTSByYW5nZSwgcmV0dXJuaW5nIGFsbCB0aGUg
dGV4dCwgYW5kIDAtbGVuZ3RoIGJvdW5kYXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQppbmRleCA3YmZlYTA2ZjYzNDc4NTA5MDM1YWJmZGM5NzBkZDE1MWI4YmM5MjI4
Li5mZTRmNDBhZmY3YTg2YTM3OTJmYTJiNTAwNTU3NTEzMDY4NGRjYjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNjIsMTMgKzI2MiwxMyBAQCB2b2lkIEVk
aXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCkKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKICAgICB0eXBlcy5hcHBlbmQoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpOwogICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlw
ZXMsIE5TRmluZFBib2FyZCk7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2Rpbmcoc2VsZWN0ZWRUZXh0KCkpLCBOU1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBi
b2FyZCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpLCBOU1N0cmluZ1Bib2FyZFR5cGUsIE5TRmluZFBi
b2FyZCk7CiB9CiAKIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzKQogewogICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgcGFzdGVib2FyZC53cml0ZVNlbGVjdGlvbkZvclR5cGVzKHBhc3RlYm9hcmRUeXBlcywgdHJ1
ZSwgbV9mcmFtZSk7CisgICAgcGFzdGVib2FyZC53cml0ZVNlbGVjdGlvbkZvclR5cGVzKHBhc3Rl
Ym9hcmRUeXBlcywgdHJ1ZSwgbV9mcmFtZSwgRGVmYXVsdFNlbGVjdGVkVGV4dFR5cGUpOwogfQog
ICAgIAogdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgRWRpdG9yOjpyZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAog
U3RyaW5nIEVkaXRvcjo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0
dXJuIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihtX2ZyYW1lKTsKKyAgICByZXR1cm4g
UGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKG1fZnJhbWUsIERlZmF1bHRTZWxlY3RlZFRl
eHRUeXBlKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMDQwNDU5NDBmMzVmY2ZkYzY4ZmVjODUy
OTBkYzA4YzUzZjk3ZWVjNi4uZDM2MTllYmFjYjNjMDZhZTBlMmNlYjBjODQ0MjNlYjhjZmRmMjY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc4OSw3ICs3ODks
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09
IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhh
c0RhdGEoKSkgewogICAgICAgICAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMt
PnNlbGVjdGlvbigpLT5zdGFydCgpKSkKLSAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRl
UGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgICAgICAg
ICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzcmMtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRS
YW5nZSgpOwogICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rpb25SYW5nZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5pbgppbmRleCA3Nzg0Y2FlMWFjNTZlNzU4NDBmYTkyMzEyNDdiZGVlOGRlMzQz
MmNkLi44OWYxZTFlOGIzNTI1MWViZjgxMzViYmQ4NmQzZjI2OWUxNjM5MjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaW4KQEAgLTIwMywzICsyMDMsNSBAQCBkZWZhdWx0VmlkZW9Qb3N0ZXJVUkwg
dHlwZT1TdHJpbmcKIAogc21hcnRJbnNlcnREZWxldGVFbmFibGVkIGluaXRpYWw9ZGVmYXVsdFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZAogc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBp
bml0aWFsPWRlZmF1bHRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisKK3NlbGVjdGlv
bkluY2x1ZGVzQWx0SW1hZ2VUZXh0IGluaXRpYWw9ZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaAppbmRleCA0MDIyYTYxYTM2MmYwMGVkM2E4YTE5NjhjN2Y0ZjlhMmEwMDY1NDU4
Li4wOGI2ODY1YzliMzcwN2ZkYWUxMTcwZDg3YWZlZjg1NDVmODU4M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02Myw3ICs2Myw3IEBAIGV4dGVybiBjb25zdCBjaGFy
KiBXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYlVSTHNXaXRoVGl0bGVz
UGJvYXJkVHlwZTsKICNlbmRpZgogCi0gICAgY2xhc3MgQXJjaGl2ZVJlc291cmNlOworY2xhc3Mg
QXJjaGl2ZVJlc291cmNlOwogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIEZyYW1lOwpAQCAtNzIsNiArNzIsOCBAQCBjbGFzcyBLVVJMOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworCitlbnVtIFNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJ
bmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkIH07CiAgICAgCiBjbGFzcyBQYXN0ZWJvYXJk
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXN0ZWJvYXJkKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC04MywxNCArODUsMTQgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBPUyBYIHNlcnZpY2VzLgotICAg
IHZvaWQgd3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSopOworICAgIHZvaWQg
d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFNob3VsZFNlcmlhbGl6ZVNl
bGVjdGVkVGV4dEZvckNsaXBib2FyZCk7CiAgICAgZXhwbGljaXQgUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBzdGF0aWMgU3RyaW5nIGdldFN0cmluZ1NlbGVj
dGlvbihGcmFtZSopOworICAgIHN0YXRpYyBTdHJpbmcgZ2V0U3RyaW5nU2VsZWN0aW9uKEZyYW1l
KiwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdldERhdGFTZWxlY3Rpb24oRnJhbWUqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICNlbmRpZgogICAgIAogICAgIHN0YXRpYyBQYXN0ZWJv
YXJkKiBnZW5lcmFsUGFzdGVib2FyZCgpOwotICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2Uq
LCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSopOworICAgIHZvaWQgd3JpdGVTZWxl
Y3Rpb24oUmFuZ2UqLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9IERlZmF1bHRTZWxlY3RlZFRleHRUeXBl
KTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9w
dGlvbik7CiAgICAgdm9pZCB3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJh
bWUqID0gMCk7CiAgICAgdm9pZCB3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwCmluZGV4IDYwOGUyNGRmYjk2YWMw
ZGViMTg2ZjJiYzlhYzc2NzBlMWY2MjE1ZWUuLjM1ZDdkMGRjNDNmMzRlYzFlYzA2MjlkZmY1OWNl
ODAxZDAwODI2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwCkBAIC02MSw5ICs2MSw5IEBAIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxl
Y3RlZFJhbmdlLCBib29sLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2Vs
ZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sLCBGcmFtZSogZnJhbWUsIFNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRl
eHRGb3JDbGlwYm9hcmQpCiB7Ci0gICAgV1RGOjpTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgV1RGOjpTdHJpbmcgdGV4dCA9IHNob3VsZFNlcmlhbGl6
ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJv
YXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiAgICAgV1RGOjpTdHJpbmcgaHRtbCA9IGNyZWF0
ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKICAgICBX
VEY6OlN0cmluZyB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcAppbmRleCBkMDkwNWYyODY2ZjY1MmQwN2RjNmRlYjNlZThkMzg3ODc1OGY4YTU0Li42
Yjk4MWEwZjVjNWViMjY5NmM1YTE1MTk3NDI1MWVmYjNmOGVlMTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCkBA
IC00MzIsNyArNDMyLDcgQEAgdm9pZCBDbGlwYm9hcmRDaHJvbWl1bTo6d3JpdGVSYW5nZShSYW5n
ZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgbV9kYXRhT2JqZWN0LT5zZXRI
VE1MQW5kQmFzZVVSTChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJ
bnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkpOwogCi0gICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCk7CiAjaWYgT1MoV0lORE9XUykKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2lu
ZG93c1N0eWxlTmV3bGluZXMoc3RyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggZGYxYzZl
NTU0ZDMzNWJmYWEzZGM2OTE0M2YxZTZiMzM1NzQyMmNhYy4uMDdmYTlhOTQ2OGQyZGU5ZGE3OTFi
Y2QzYTBkNjUyYWJhNTY2YzcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC04NSwxMSArODUsMTEgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpzZXRTZWxlY3Rpb25Nb2RlKGJvb2wgc2VsZWN0aW9uTW9kZSkKICAg
ICBtX3NlbGVjdGlvbk1vZGUgPSBzZWxlY3Rpb25Nb2RlOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxp
emVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgU3RyaW5nIGh0bWwgPSBjcmVhdGVN
YXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJl
c29sdmVOb25Mb2NhbFVSTHMpOwogICAgIEtVUkwgdXJsID0gc2VsZWN0ZWRSYW5nZS0+c3RhcnRD
b250YWluZXIoKS0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgU3RyaW5nIHBsYWluVGV4dCA9IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHBsYWluVGV4dCA9IHNo
b3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRU
ZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiAjaWYgT1MoV0lORE9XUykK
ICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMocGxhaW5UZXh0KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9h
cmRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3Bw
CmluZGV4IDdhMWFjNDUyNzhjZDA0ZDEyYzYxN2Y1ZmZhNmE3NzUxNjFlODYxNjMuLmQ0NDMwYzYx
M2E3M2I1NDViYTI2ZTRiYjAwMzZjZTIwZWZlNzA4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24p
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVj
dGlvbihSYW5nZSosIGJvb2wsIEZyYW1lKikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rp
b24oUmFuZ2UqLCBib29sLCBGcmFtZSosIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNs
aXBib2FyZCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCBmNTA0NjBhNzIxYWM0MDNkZjFhY2Fl
OWI1NDQwMzgwZWE4M2E4MWYxLi43N2E2NTA1ZDA1MWFkOTBkYTNiNGIyOTllYzZhMTRmOTI4MDA1
NjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApA
QCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKFJhbmdlKiBy
YW5nZSwgRnJhbWUqIGZyYW1lKQogewogICAgIEFTU0VSVChyYW5nZSk7CiAKLSAgICBtX2RhdGFP
YmplY3QtPnNldFRleHQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgbV9k
YXRhT2JqZWN0LT5zZXRUZXh0KGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCkpOwogICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChyYW5nZSwg
MCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgZmFsc2UsIFJlc29sdmVOb25Mb2NhbFVSTHMpKTsK
IAogICAgIGlmIChtX2NsaXBib2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCBjZDYyMDU0MjUyYmE2MDRhMzJlN2M4NmI4YzFkZGE2MDNi
ZWZlZDljLi5mYjE0NDNlZWM0NmFmN2FlNjlhOGZhNjkyNWE4MzUwZWZmMzhlNDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC01Niw3ICs1
Niw3IEBAIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQogewogfQogCi12b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlLCBGcmFtZSogZnJhbWUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJh
bWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxp
emVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgUGFzdGVib2FyZEhlbHBlciogaGVs
cGVyID0gUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKTsKICAgICBH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGhlbHBlci0+Z2V0Q3VycmVudENsaXBib2FyZChmcmFt
ZSk7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgRGF0YU9i
amVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9h
cmQpOwogICAgIGRhdGFPYmplY3QtPmNsZWFyQWxsKCk7CiAKLSAgICBkYXRhT2JqZWN0LT5zZXRU
ZXh0KGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIGRhdGFPYmplY3QtPnNl
dFRleHQoc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJ
bWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CiAgICAgZGF0
YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwogICAgIGhlbHBl
ci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQsIGNhblNtYXJ0Q29weU9yRGVsZXRl
ID8gUGFzdGVib2FyZEhlbHBlcjo6SW5jbHVkZVNtYXJ0UGFzdGUgOiBQYXN0ZWJvYXJkSGVscGVy
OjpEb05vdEluY2x1ZGVTbWFydFBhc3RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDM2YTRkOGUyODU2MDgxYWIwODk5MTMwZWYyZmM2NzRk
OWRjNzM1M2UuLjk4ZGExYjczYmY4NTBkNDIwY2JjOTFiYWVlMmQzYmUxMzAyNTA0YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQpAQCAtMzc3LDcgKzM3
Nyw3IEBAIHZvaWQgQ2xpcGJvYXJkTWFjOjp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUq
IGZyYW1lKQogICAgIEFTU0VSVChyYW5nZSk7CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBQYXN0
ZWJvYXJkIHBhc3RlYm9hcmQobV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgcGFzdGVib2FyZC53cml0
ZVNlbGVjdGlvbihyYW5nZSwgZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFy
aXR5LCBmcmFtZSk7CisgICAgcGFzdGVib2FyZC53cml0ZVNlbGVjdGlvbihyYW5nZSwgZnJhbWUt
PmVkaXRvcigpLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjp3cml0ZVBsYWlu
VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IGMyMGI3YmIyNmRiZWI4NWJmODA1NDBmNTU2NzYyYjYwZDU1
YjA0MzAuLmU0OTUyZDc5OTNiOTA5YTU5ZGQzZDM0OTFkZDk4MDJhMTgwMjkzZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMzUsOSArMTM1
LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyhWZWN0b3I8U3RyaW5nPigpLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKIH0KIAotU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihG
cmFtZSogZnJhbWUpCitTdHJpbmcgUGFzdGVib2FyZDo6Z2V0U3RyaW5nU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKLSAgICBTdHJpbmcgdGV4dCA9IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHRleHQgPSBzaG91bGRT
ZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZv
ckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkg
OiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShub0Jy
ZWFrU3BhY2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUs
IFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVT
ZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBhdHRy
aWJ1dGVkU3RyaW5nID0gbmlsOwogICAgIFJldGFpblB0cjxXZWJIVE1MQ29udmVydGVyPiBjb252
ZXJ0ZXIoQWRvcHROUywgW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdl
OmtpdChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSldKTsKQEAgLTIwOCw3
ICsyMDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYgogICAgIAogICAgIC8vIFB1dCBwbGFp
biBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkKLSAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGdldFN0cmluZ1NlbGVjdGlvbihm
cmFtZSksIE5TU3RyaW5nUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0U3RyaW5nRm9yVHlw
ZShnZXRTdHJpbmdTZWxlY3Rpb24oZnJhbWUsIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCksIE5TU3RyaW5nUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlKSkKICAgICAg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJG
b3JUeXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKQEAg
LTIyNyw5ICsyMjcsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uIHNtYXJ0UmVwbAogICAgICAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoMCwg
V2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogfQogICAgIAotdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFu
Z2UqLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQpCiB7Ci0gICAgd3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhWZWN0b3I8U3RyaW5n
PigpLCBjYW5TbWFydENvcHlPckRlbGV0ZSwgZnJhbWUpOworICAgIHdyaXRlU2VsZWN0aW9uRm9y
VHlwZXMoVmVjdG9yPFN0cmluZz4oKSwgY2FuU21hcnRDb3B5T3JEZWxldGUsIGZyYW1lLCBzaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpOwogfQogCiBzdGF0aWMgdm9pZCB3
cml0ZVVSTEZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3Ry
LCBGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
bGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5j
cHAKaW5kZXggYzViODc3MGMzZmY5MzhjODk5YjBiNjA5YjU4MDdkYTI3MzY5ZDNhMi4uODhjZGNm
NjU3ODdkYjc0NDI3ODc0ODc3M2MwYTFjMmU2OWZjZjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgQ2xpcGJv
YXJkUXQ6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBpZiAo
IW1fd3JpdGFibGVEYXRhKQogICAgICAgICBtX3dyaXRhYmxlRGF0YSA9IG5ldyBRTWltZURhdGE7
Ci0gICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAg
ICBRU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAg
ICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJsZURhdGEtPnNl
dEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBmYWxz
ZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bh
c3RlYm9hcmRRdC5jcHAKaW5kZXggMDhlOTdjN2Q2ODg0ZDk1MzZiMzkzNTkxYzJjOTVjODEyNTFi
ZGExZS4uNTUwYWY3YWNlOTc1YzcxZTcwMzgzNjdhZDQ4YzI1MWU4MWI0ZmQ5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC01OSwxMCArNTksMTAg
QEAgUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQogICAgIHJldHVy
biBwYXN0ZWJvYXJkOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdl
KiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUp
Cit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNl
bGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlw
Ym9hcmQpCiB7CiAgICAgUU1pbWVEYXRhKiBtZCA9IG5ldyBRTWltZURhdGE7Ci0gICAgUVN0cmlu
ZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBRU3RyaW5nIHRl
eHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUlt
YWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQu
cmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRleHQo
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAK
aW5kZXggN2NhMzE2NTk1YTBiOWFlZDBiOGY2YWQyYjc4ZWIyYjU3YjdhYzg0My4uMzE3YjEwM2M1
YjI5YTkxMzg1NDk4ZWI3NWJmNDJkNDYxOGE1ZGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc0Nyw3ICs3NDcsNyBAQCB2b2lkIENsaXBi
b2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQog
ICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3QtPlNl
dERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFsRnJl
ZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxl
TmV3bGluZXMoc3RyKTsKICAgICByZXBsYWNlTkJTUFdpdGhTcGFjZShzdHIpOwogICAgIG1lZGl1
bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShzdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGRkZTJlMjQwNGU5ODdiMmMyNmJkNjEy
NjhiYWQzMWNlNWJhYWQ4YzIuLjMxZWU3NWU5N2FiNjY3YTEzNDMzZGM5NDhjZWNmYzg0MDZiZDhl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKICAgICB9CiB9CiAK
LXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJv
b2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBjbGVh
cigpOwogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlv
bihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwKICAgICB9
CiAgICAgCiAgICAgLy8gUHV0IHBsYWluIHN0cmluZyBvbiB0aGUgcGFzdGVib2FyZC4gQ0ZfVU5J
Q09ERVRFWFQgY292ZXJzIENGX1RFWFQgYXMgd2VsbAotICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzdHIgPSBzaG91bGRTZXJpYWxp
emVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBi
b2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5k
b3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7CiAg
ICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAKaW5kZXggNWVmM2QyYmY4YWRlMzUy
NDAwODNmMWU5ZDY2OTY2OWJkZTFlMzE4ZS4uMzEyZmYxNWY4MWMyZGU1ZGNhNWQwOWQwMGNhNDQ5
YmJlM2Q2ZmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFz
dGVib2FyZFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0
ZWJvYXJkV2luQ0UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVh
cigpCiAgICAgfQogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBz
ZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUpCit2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQpCiB7CiAgICAgY2xlYXIoKTsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGUsCiAgICAgfQogCiAgICAgLy8gUHV0IHBsYWluIHN0cmluZyBvbiB0aGUgcGFzdGVi
b2FyZC4gQ0ZfVU5JQ09ERVRFWFQgY292ZXJzIENGX1RFWFQgYXMgd2VsbAotICAgIFN0cmluZyBz
dHIgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0aFdp
bmRvd3NTdHlsZU5ld2xpbmVzKHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3RyKTsK
ICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd3gvUGFzdGVib2FyZFd4LmNwcAppbmRleCBkMGNkYzBhMmUyZDNiN2RjMjAyOGRlYzQ0
MmMxYmUyOTNkNTlkZjg0Li40M2EzNDdiN2YwNjBlOWNhZmFhZjU1MDk1ZTUzYjk5MTY4NWIxODE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAKQEAgLTUw
LDEzICs1MCwxMyBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgp
CiAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxl
Y3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZy
YW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVj
dGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBpZiAod3hUaGVDbGlwYm9hcmQtPk9wZW4oKSkgewog
I2lmIHd4Q0hFQ0tfVkVSU0lPTigyLCA5LCA0KQogICAgICAgICB3eFRoZUNsaXBib2FyZC0+U2V0
RGF0YShuZXcgd3hIVE1MRGF0YU9iamVjdChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpKTsKICNlbmRpZgotICAgICAgICB3eFRoZUNsaXBib2Fy
ZC0+U2V0RGF0YShuZXcgd3hUZXh0RGF0YU9iamVjdChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpKSk7CisgICAgICAgIHd4VGhlQ2xpcGJvYXJkLT5TZXREYXRhKG5ldyB3eFRleHREYXRh
T2JqZWN0KHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRl
SW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpKTsKICAgICAg
ICAgd3hUaGVDbGlwYm9hcmQtPkNsb3NlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaAppbmRleCBlMTcxNGY1ZmVkMTEzNjRkMzM0ZGE5ZTdkNmFhZGI5ZmYz
NGFiMWE0Li4xNWM3OTA2N2NhZDI2ZjAwYmZjNmJhNmNkNDNjZGY2MTk1YjNiYzA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzR2VuZXJhdGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5l
cmF0ZWRDb250ZW50OyB9CiAKKyAgICBTdHJpbmcgYWx0VGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0VGV4dDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVk
V2lkdGhzUmVjYWxjdWxhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJl
ZGRlZENvbnRlbnRCb3goKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMzA3MmQwMTAyMjA4ZDY2MWRmY2E3Mjhm
M2ZhMjE1YTNjOGIyZGZmLi4yODVhZTNkMmU0MWE1Njg0MzMxOWNmM2IyYjhkMjE5MzQ5NzVkNmE2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjUgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbWFnZSBhbHQgdGV4dCBub3QgaW5jbHVkZWQgaW4gcGxh
aW4tdGV4dCB2ZXJzaW9uIHdoZW4gY29weWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDAKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFs
dC10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0yNSAgUGV0
ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBT
aGVyaWZmaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktaW1hZ2Utd2l0aC1hbHQtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvY29weS1pbWFnZS13aXRoLWFsdC10ZXh0LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjFjZTE5NzdjYmFmYTZlNTExMzJhZGM1NDgzMTdlODZlMjZjMDZjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1h
bHQtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorVGhpcyB0ZXN0cyB0aGF0IGlt
YWdlIGFsdCB0ZXh0IG1ha2VzIGl0IHRvIHRoZSBjbGlwYm9hcmQuIFRoaXMgdGVzdCByZXF1aXJl
cyBEUlQgb3IgV1RSLiBUaGUgZmlyc3QgdHdvIGR1bXBzIHNob3VsZCBub3QgaW5jbHVkZSBhbHQg
dGV4dCBhbmQgdGhlIHRoaXJkIGFuZCBmb3J0aCBkdW1wcyBzaG91bGQgaW5jbHVkZSBhbHQgdGV4
dC4KKworRHVtcCBvZiBtYXJrdXAgMToKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2Pgor
fCAgICAgICAiSGVyZSBpcyBhbiBlbW90aWNvbiBbXSwgc29tZSBtb3JlIHRleHQgW10sIGFuIGVt
cHR5IGFsdCB0YWcgW10sIG5vIGFsdCB0YWcgW10gYW5kIHR3byBjb25zZWN1dGl2ZSBpbWFnZXMg
W10uIgorfCAgICAgICAiCisKKyIKKworRHVtcCBvZiBtYXJrdXAgMjoKK3wgPGRpdj4KK3wgICAi
SGVyZSBpcyBhbiBlbW90aWNvbiBbXSwgc29tZSBtb3JlIHRleHQgW10sIGFuIGVtcHR5IGFsdCB0
YWcgW10sIG5vIGFsdCB0YWcgW10gYW5kIHR3byBjb25zZWN1dGl2ZSBpbWFnZXMgW10uIgorfCA8
ZGl2PgorfCAgIDwjc2VsZWN0aW9uLWNhcmV0PgorfCAgIDxicj4KKworRHVtcCBvZiBtYXJrdXAg
MzoKK3wgICA8c2hhZG93OnJvb3Q+Cit8ICAgICA8ZGl2PgorfCAgICAgICAiSGVyZSBpcyBhbiBl
bW90aWNvbiBbOildLCBzb21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRdLCBhbiBlbXB0eSBhbHQg
dGFnIFtdLCBubyBhbHQgdGFnIFtdIGFuZCB0d28gY29uc2VjdXRpdmUgaW1hZ2VzIFtmaXJzdHNl
Y29uZF0uIgorfCAgICAgICAiCisKKyIKKworRHVtcCBvZiBtYXJrdXAgNDoKK3wgPGRpdj4KK3wg
ICAiSGVyZSBpcyBhbiBlbW90aWNvbiBbOildLCBzb21lIG1vcmUgdGV4dCBbc2FtcGxlIHRleHRd
LCBhbiBlbXB0eSBhbHQgdGFnIFtdLCBubyBhbHQgdGFnIFtdIGFuZCB0d28gY29uc2VjdXRpdmUg
aW1hZ2VzIFtmaXJzdHNlY29uZF0uIgorfCA8ZGl2PgorfCAgIDwjc2VsZWN0aW9uLWNhcmV0Pgor
fCAgIDxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9jb3B5LWltYWdlLXdpdGgtYWx0LXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTdiODFmZWY0Yjcy
NDhhZDg5YzQ5MTM0ZTAxNTE4OGFhNjk5MmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktaW1hZ2Utd2l0aC1hbHQtdGV4dC5odG1sCkBAIC0w
LDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
ZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK01hcmt1cC5kZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGF0IGltYWdlIGFsdCB0ZXh0IG1ha2VzIGl0IHRvIHRoZSBjbGlwYm9h
cmQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQgb3IgV1RSLiIKKyAgICArICIgVGhlIGZpcnN0IHR3
byBkdW1wcyBzaG91bGQgbm90IGluY2x1ZGUgYWx0IHRleHQgYW5kIHRoZSB0aGlyZCBhbmQgZm9y
dGggZHVtcHMgc2hvdWxkIGluY2x1ZGUgYWx0IHRleHQuIik7CitNYXJrdXAubm9BdXRvRHVtcCgp
OworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgZXhlY1NldFNlbGVjdGlvbkNvbW1hbmQodGVzdCwgMCwg
dGVzdC5uZXh0U2libGluZywgMCk7CisgICAgZXhlY0NvcHlDb21tYW5kKCk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEtcmVzdWx0IikudmFsdWUgPSAiIjsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGFyZWEtcmVzdWx0IikuZm9jdXMoKTsKKyAgICBl
eGVjUGFzdGVDb21tYW5kKCk7CisgICAgTWFya3VwLmR1bXAoInRleHRhcmVhLXJlc3VsdCIpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQtZWRpdGFibGUtcmVzdWx0Iiku
aW5uZXJIVE1MID0gIiI7CisgICAgc2VsZWN0aW9uLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250ZW50LWVkaXRhYmxlLXJlc3VsdCIpLCAwKTsKKyAgICBleGVjUGFzdGVB
bmRNYXRjaFN0eWxlQ29tbWFuZCgpOworICAgIE1hcmt1cC5kdW1wKCJjb250ZW50LWVkaXRhYmxl
LXJlc3VsdCIpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICBydW5UZXN0KCk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRTZWxlY3Rpb25JbmNsdWRlc0FsdEltYWdlVGV4dCh0cnVlKTsKKyAgICBy
dW5UZXN0KCk7CisKKyAgICBNYXJrdXAubm90aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9InRlc3QiPkhlcmUgaXMgYW4gZW1vdGljb24gWzxpbWcg
c3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIiBhbHQ9IjopIj5dLAorc29tZSBtb3JlIHRleHQgWzxp
bWcgYWx0PSJzYW1wbGUgdGV4dCI+XSwKK2FuIGVtcHR5IGFsdCB0YWcgWzxpbWcgYWx0PSIiPl0s
CitubyBhbHQgdGFnIFs8aW1nIHNyYz0icmVzb3VyY2VzL2FwcGxlLmdpZiI+XQorYW5kIHR3byBj
b25zZWN1dGl2ZSBpbWFnZXMgWzxpbWcgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIiBhbHQ9ImZp
cnN0Ij48aW1nIHNyYz0icmVzb3VyY2VzL2FwcGxlLmdpZiIgYWx0PSJzZWNvbmQiPl0uPC9kaXY+
Cis8dGV4dGFyZWEgaWQ9InRleHRhcmVhLXJlc3VsdCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWln
aHQ6IDVlbTsiPjwvdGV4dGFyZWE+Cis8ZGl2IGlkPSJjb250ZW50LWVkaXRhYmxlLXJlc3VsdCIg
Y29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>