<?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>104191</bug_id>
          
          <creation_ts>2012-12-05 16:46:02 -0800</creation_ts>
          <short_desc>Implement matching cue by the class name with ::cue pseudo element</short_desc>
          <delta_ts>2012-12-17 16:02:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dima Gorbik">dgorbik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgorbik</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>shinyak</cc>
    
    <cc>silviapf</cc>
    
    <cc>silviapfeiffer1</cc>
    
    <cc>vcarbune</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784271</commentid>
    <comment_count>0</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-05 16:46:02 -0800</bug_when>
    <thetext>Implement a pseudo-element ::cue with a an argument of a simple selector list type that would match cues by a class name. 
Example: ::cue(.classname, .anothername)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784280</commentid>
    <comment_count>1</comment_count>
      <attachid>177869</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-05 16:51:57 -0800</bug_when>
    <thetext>Created attachment 177869
Proposed fix 0.1 (test case and changelog missing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784290</commentid>
    <comment_count>2</comment_count>
      <attachid>177869</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-05 16:59:42 -0800</bug_when>
    <thetext>Comment on attachment 177869
Proposed fix 0.1 (test case and changelog missing)

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

&gt; Source/WebCore/css/CSSParser.cpp:10108
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +        // Don&apos;t set the tag for the PseudoCue element because the matchig will not work when the tags are being compared.
&gt; +        if (!(specifiers-&gt;pseudoType() == CSSSelector::PseudoCue))
&gt; +#endif
&gt; +            specifiers-&gt;setTag(tag);

I will fix the typo in the comment.
I am not sure about this piece of code. Maybe I could use the tag somehow to find out that this is a webvtt node and let it set here?

&gt; Source/WebCore/css/CSSParser.cpp:10142
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +    if (newSpecifier-&gt;isUnknownPseudoElement() || newSpecifier-&gt;pseudoType() == CSSSelector::PseudoCue) {
&gt; +#else
&gt;      if (newSpecifier-&gt;isUnknownPseudoElement()) {
&gt; +#endif
&gt;          // Unknown pseudo element always goes at the top of selector chain.
&gt;          newSpecifier-&gt;appendTagHistory(CSSSelector::ShadowDescendant, sinkFloatingSelector(specifiers));
&gt;          return newSpecifier;

Without this change the cue basically wouldn&apos;t work when the selector has a parent element matched by an ID (and other cases when updateSpecifiers in the parser is used). For example: #myvideo::cue(.test) wouldn&apos;t work because the pseudo element wouldn&apos;t get on top of the selector chain.

&gt; Source/WebCore/css/SelectorChecker.cpp:462
&gt; +            if (pseudoId != NOPSEUDO &amp;&amp; m_mode != SharingRules &amp;&amp; pseudoId != CUE)
&gt;                  dynamicPseudo = pseudoId;

Not sure about this as well. Without this change the properties wouldn&apos;t be applied to the cue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784301</commentid>
    <comment_count>3</comment_count>
      <attachid>177869</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-05 17:09:48 -0800</bug_when>
    <thetext>Comment on attachment 177869
Proposed fix 0.1 (test case and changelog missing)

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

&gt; Source/WebCore/dom/Element.cpp:2480
&gt;  {
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +    if (other.isWebVTTNode())
&gt; +        setIsWebVTTNode(true);
&gt; +#endif

I also don&apos;t like the fact that I have to copy this data manually. Is there a way to let it deal with this automatically somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784514</commentid>
    <comment_count>4</comment_count>
      <attachid>177912</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-05 20:03:26 -0800</bug_when>
    <thetext>Created attachment 177912
Proposed fix 0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784930</commentid>
    <comment_count>5</comment_count>
      <attachid>177912</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-12-06 07:18:35 -0800</bug_when>
    <thetext>Comment on attachment 177912
Proposed fix 0.2

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

&gt; LayoutTests/media/track/captions-webvtt/styling.vtt:10
&gt; +00:01.000 --&gt; 00:02.000
&gt; +&lt;c.red&gt;dolor sit &lt;/c&gt;&lt;c.green&gt;amet, consectetur &lt;/c&gt;&lt;c.red2&gt;adipiscing elit&lt;/c&gt;

Nit: you might as well add a newline at the end of the file to keep SVN from complaining.

&gt; LayoutTests/media/track/track-css-matching-expected.txt:1
&gt; +Test that cues are being matches properly by the class name

Nit: typo, matches -&gt; matched</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785246</commentid>
    <comment_count>6</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-06 14:07:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 177912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177912&amp;action=review
&gt; 
&gt; &gt; LayoutTests/media/track/captions-webvtt/styling.vtt:10
&gt; &gt; +00:01.000 --&gt; 00:02.000
&gt; &gt; +&lt;c.red&gt;dolor sit &lt;/c&gt;&lt;c.green&gt;amet, consectetur &lt;/c&gt;&lt;c.red2&gt;adipiscing elit&lt;/c&gt;
&gt; 
&gt; Nit: you might as well add a newline at the end of the file to keep SVN from complaining.

I think this newline came from the previous version of the file. I should fix this in a previous bug. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785335</commentid>
    <comment_count>7</comment_count>
      <attachid>177912</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-06 15:28:33 -0800</bug_when>
    <thetext>Comment on attachment 177912
Proposed fix 0.2

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

&gt; Source/WebCore/css/CSSParser.cpp:10104
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +        // Don&apos;t set the tag for the PseudoCue element because the matching will not work when the tags are being compared.
&gt; +        if (!(specifiers-&gt;pseudoType() == CSSSelector::PseudoCue))
&gt; +#endif
&gt; +            specifiers-&gt;setTag(tag);

I don&apos;t quite understand this. The comment is not very helpful.

&gt; Source/WebCore/css/SelectorChecker.cpp:1160
&gt; +        subContext.isMatchingCueNodes = true;

I don&apos;t see you ever reading this bit. Why does it exist?

&gt; Source/WebCore/dom/Element.cpp:2482
&gt; +#if ENABLE(VIDEO_TRACK)
&gt; +    if (other.isWebVTTNode())
&gt; +        setIsWebVTTNode(true);
&gt; +#endif
&gt;      cloneAttributesFromElement(other);
&gt;      copyNonAttributePropertiesFromElement(other);

I think this can be handled in a cleaner way. See the comment below.

&gt; Source/WebCore/html/track/WebVTTParser.cpp:367
&gt;              child = HTMLElement::create(qTag, document);
&gt;  
&gt;          if (child) {
&gt; +            child-&gt;setIsWebVTTNode(true);

I think you will want to add new private HTMLElement subclass (WebVTTElement or similar) and build the tree out of those instead of generic HTMLElements. That class will have virtual copyNonAttributePropertiesFromElement() function that will copy the isWebVTTNode bit and any other metadata you might want. Or maybe just make isWebVTTNode itself virtual, it is not called much I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785349</commentid>
    <comment_count>8</comment_count>
      <attachid>177912</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-06 15:47:17 -0800</bug_when>
    <thetext>Comment on attachment 177912
Proposed fix 0.2

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

&gt; Source/WebCore/css/CSSParser.cpp:10132
&gt; +    if (newSpecifier-&gt;isUnknownPseudoElement() || newSpecifier-&gt;pseudoType() == CSSSelector::PseudoCue) {

The current ToT calls this isCustomPseudoElement(). It is not clear to me what the exact meaning of that is supposed to be but maybe PseudoCue just needs to have that set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785637</commentid>
    <comment_count>9</comment_count>
      <attachid>177912</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-12-06 22:06:45 -0800</bug_when>
    <thetext>Comment on attachment 177912
Proposed fix 0.2

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

&gt;&gt; Source/WebCore/css/CSSParser.cpp:10132
&gt;&gt; +    if (newSpecifier-&gt;isUnknownPseudoElement() || newSpecifier-&gt;pseudoType() == CSSSelector::PseudoCue) {
&gt; 
&gt; The current ToT calls this isCustomPseudoElement(). It is not clear to me what the exact meaning of that is supposed to be but maybe PseudoCue just needs to have that set?

isUnknownPseudo() is used to represent -webkit-* pseudo ids. 
Since web components (cough) allows page author to specify their own pseudo, we needed to refine this &quot;unknown&quot; category into:

- A. -webkit-* -&gt; PseudoWebKitCustomElement
- B. x-* (for web components) -&gt; PseudoUserAgentCustomElement
- C. really unknown -&gt; PseudoUnknown

isCustomPseudoElement() matches A and B and isUnknownPseudo() now matches only C.
Does this make sense?

It looks PseudoCue is usual pseudo id and good to have its own enum entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786368</commentid>
    <comment_count>10</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-07 19:07:28 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; It looks PseudoCue is usual pseudo id and good to have its own enum entry.

That sounds good, also we are unable to make a cue pseudo selector &apos;Custom&apos; because it won&apos;t be matching any nodes since the code in SelectorChecker::checkSelector will work:
if (context.element-&gt;shadowPseudoId() != context.selector-&gt;value())
Here an element will now have shadowID. We could set the shadow id for all webvtt objects, but that would cause merging two code paths: one for built-in, compiled selector types and the other for the dynamic pseudo elements. That&apos;s probably not what we would like to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786371</commentid>
    <comment_count>11</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-07 19:13:52 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 177912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177912&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:10104
&gt; &gt; +#if ENABLE(VIDEO_TRACK)
&gt; &gt; +        // Don&apos;t set the tag for the PseudoCue element because the matching will not work when the tags are being compared.
&gt; &gt; +        if (!(specifiers-&gt;pseudoType() == CSSSelector::PseudoCue))
&gt; &gt; +#endif
&gt; &gt; +            specifiers-&gt;setTag(tag);
&gt; 
&gt; I don&apos;t quite understand this. The comment is not very helpful.

If we allow the tag to be set here, it will be matched against webvtt objects&apos; tags, and the selector will be declined since tags are different. I am not sure how QualifiedName is computed and if it may be still used for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786374</commentid>
    <comment_count>12</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-07 19:24:06 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; I think you will want to add new private HTMLElement subclass (WebVTTElement or similar) and build the tree out of those instead of generic HTMLElements. That class will have virtual copyNonAttributePropertiesFromElement() function that will copy the isWebVTTNode bit and any other metadata you might want. Or maybe just make isWebVTTNode itself virtual, it is not called much I think.

To make it virtual it will require storing the WebVTT information inside of QualifiedName so the object of the right type would be created in Document::createElement. I guess it&apos;s better to override copyNonAttributePropertiesFromElement for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786397</commentid>
    <comment_count>13</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-07 20:16:31 -0800</bug_when>
    <thetext>Antti, I think the subclassing will not help in this case. When the cloneChildNodes is called, document::create is then called to create the clone which gets a qTag as an argument. And it will not preserve the original class, it will create a regular Element instead of the WebVTTElement, and will call its&apos; copyNonAttributeProperties which is empty.
There a type choosing code in document::create which is based on the namespace for the tag. May this be used to create a WebVTTElement instead of Element?
The other idea I have is to implement a virtual function in Element &quot;createElementOfSameType&quot;. And this function could be used instead of document::create in cloneChildNodes. This could slow things down, but how often does cloning happens?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787902</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-10 17:52:29 -0800</bug_when>
    <thetext>Since cloning is really only needed for TextTrackCue::getCueAsHTML which clones m_documentFragment I think the easiest solution is simply set the bit for the nodes in the cloned tree there. We know they are all WebVTT nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788060</commentid>
    <comment_count>15</comment_count>
      <attachid>178723</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-10 22:41:40 -0800</bug_when>
    <thetext>Created attachment 178723
Proposed fix 0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788110</commentid>
    <comment_count>16</comment_count>
      <attachid>178723</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-11 00:01:07 -0800</bug_when>
    <thetext>Comment on attachment 178723
Proposed fix 0.3

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

r- for unsafe cast and many style errors. Please check http://www.webkit.org/coding/coding-style.html

&gt; Source/WebCore/dom/Element.h:432
&gt; +    virtual bool isWebVTTNode() const;

This doesn&apos;t need to be virtual since you are putting the bit to the rare data.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:490
&gt; +void TextTrackCue::markNodesAsWebVTTNodes(Node *object)

Please use meaningful variable names. &apos;object&apos; is as generic as it gets.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:492
&gt; +    for (Node *child = object-&gt;firstChild(); child; child = child-&gt;nextSibling()) {

You should use NodeTraversal::next(current, root) instead of recursing.

* goes next to the type, Node* current

&gt; Source/WebCore/html/track/TextTrackCue.cpp:493
&gt; +        ((Element *) child)-&gt;setIsWebVTTNode(true);

You need to check with current-&gt;isElementNode() before casting.
Use C++ style static_cast
Remove unnecessary spaces, Element*

&gt; Source/WebCore/html/track/TextTrackCue.cpp:494
&gt; +        markNodesAsWebVTTNodes(child);

Use NodeTraversal  instead of recursing.

&gt; Source/WebCore/html/track/TextTrackCue.h:128
&gt; +    void markNodesAsWebVTTNodes(Node *);

* placement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789011</commentid>
    <comment_count>17</comment_count>
      <attachid>178925</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-11 17:14:26 -0800</bug_when>
    <thetext>Created attachment 178925
Proposed fix 0.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789020</commentid>
    <comment_count>18</comment_count>
      <attachid>178927</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-11 17:20:43 -0800</bug_when>
    <thetext>Created attachment 178927
Proposed fix 0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789023</commentid>
    <comment_count>19</comment_count>
    <who name="Silvia Pfeiffer">silviapfeiffer1</who>
    <bug_when>2012-12-11 17:22:31 -0800</bug_when>
    <thetext>FYI: You can also run Tools/Scripts/check-webkit-style to check if your patch satisfies the webkit style rules - it&apos;s not completely perfect but helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789037</commentid>
    <comment_count>20</comment_count>
      <attachid>178927</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 17:33:30 -0800</bug_when>
    <thetext>Comment on attachment 178927
Proposed fix 0.5

Attachment 178927 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15282257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789040</commentid>
    <comment_count>21</comment_count>
      <attachid>178927</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 17:34:25 -0800</bug_when>
    <thetext>Comment on attachment 178927
Proposed fix 0.5

Attachment 178927 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15284215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789070</commentid>
    <comment_count>22</comment_count>
      <attachid>178938</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-11 18:06:15 -0800</bug_when>
    <thetext>Created attachment 178938
Proposed fix 0.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789702</commentid>
    <comment_count>23</comment_count>
      <attachid>178938</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 10:56:44 -0800</bug_when>
    <thetext>Comment on attachment 178938
Proposed fix 0.6

Attachment 178938 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15296197

New failing tests:
fast/frames/sandboxed-iframe-attribute-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791187</commentid>
    <comment_count>24</comment_count>
      <attachid>178938</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-13 18:07:17 -0800</bug_when>
    <thetext>Comment on attachment 178938
Proposed fix 0.6

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

Looks good otherwise.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:494
&gt; +    for (Node* child = root-&gt;firstChild(); child; child = NodeTraversal::next(child, root))
&gt; +        static_cast&lt;Element*&gt;(child)-&gt;setIsWebVTTNode(true);

This is still unsafe case. If someone adds a non Element (like Text) to the WebVTT tree you will have memory corruption. At minimum you should use toElement() casting function which includes assert. But really using the new ElementTraversal interface is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791188</commentid>
    <comment_count>25</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-13 18:08:01 -0800</bug_when>
    <thetext>The test failure seems bogus though better at least try it out locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791896</commentid>
    <comment_count>26</comment_count>
      <attachid>179540</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2012-12-14 15:18:35 -0800</bug_when>
    <thetext>Created attachment 179540
Proposed fix 0.7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791946</commentid>
    <comment_count>27</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-12-14 16:17:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/12887267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791964</commentid>
    <comment_count>28</comment_count>
      <attachid>179540</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-14 16:46:00 -0800</bug_when>
    <thetext>Comment on attachment 179540
Proposed fix 0.7

Attachment 179540 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15315853

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html
WebCompositorInputHandlerImplTest.gestureFlingIgnoredTouchpad
WebCompositorInputHandlerImplTest.lastInputEventForVSync
WebCompositorInputHandlerImplTest.gestureFlingTransferResetsTouchpad
WebCompositorInputHandlerImplTest.gestureFlingAnimatesTouchpad
WebCompositorInputHandlerImplTest.gestureFlingIgnoredTouchscreen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792427</commentid>
    <comment_count>29</comment_count>
      <attachid>179540</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-16 18:25:45 -0800</bug_when>
    <thetext>Comment on attachment 179540
Proposed fix 0.7

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

r=me

&gt; Source/WebCore/html/track/TextTrackCue.cpp:491
&gt; +void TextTrackCue::markNodesAsWebVTTNodes(Node* root)

This could be a standalone functions instea of a member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793119</commentid>
    <comment_count>30</comment_count>
      <attachid>179540</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 16:02:45 -0800</bug_when>
    <thetext>Comment on attachment 179540
Proposed fix 0.7

Clearing flags on attachment: 179540

Committed r137955: &lt;http://trac.webkit.org/changeset/137955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793120</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 16:02:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177869</attachid>
            <date>2012-12-05 16:51:57 -0800</date>
            <delta_ts>2012-12-05 20:03:26 -0800</delta_ts>
            <desc>Proposed fix 0.1 (test case and changelog missing)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17136</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDIyOTU3YzYuLmVhOWY4NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtMTczLDYgKzE3Myw5IEBAIHN0YXRpYyBpbmxp
bmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogJXRva2VuIDxzdHJpbmc+IFVS
SQogJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04K
KyNpZiBFTkFCTEVfVklERU9fVFJBQ0sKKyV0b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgorI2Vu
ZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBDQUxDRlVO
Q1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgpAQCAtMTMwOSw2ICsxMzEyLDIxIEBA
IHBzZXVkbzoKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ug
c2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJseSBlbm91Z2guCiAgICAgICAg
ICQkLT5wc2V1ZG9UeXBlKCk7CiAgICAgfQorI2lmIEVOQUJMRV9WSURFT19UUkFDSworICAgIC8v
IHVzZWQgYnkgOjpjdWUoOnBhc3QvOmZ1dHVyZSkKKyAgICB8ICc6JyAnOicgQ1VFRlVOQ1RJT04g
bWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAg
ICAgaWYgKCQ1KSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
cyk7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvclZlY3RvcigkNSkpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsK
KyAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOworICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkKKyAg
ICAgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAw
OworICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklY
TUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1w
bGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRv
IG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBiMTYxYWVjLi4z
YmZjY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtODk3Niw2ICs4OTc2LDEwIEBA
IGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25UeXBlVG9rZW4oaW50IGxlbmd0
aCkKICAgICAgICAgICAgIG1fdG9rZW4gPSBOT1RGVU5DVElPTjsKICAgICAgICAgZWxzZSBpZiAo
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzBdLCAndScpICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobmFtZVsxXSwgJ3InKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5h
bWVbMl0sICdsJykpCiAgICAgICAgICAgICBtX3Rva2VuID0gVVJJOworI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyAgICAgICAgZWxzZSBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1l
WzBdLCAnYycpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVsxXSwgJ3UnKSAmJiBp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMl0sICdlJykpCisgICAgICAgICAgICBtX3Rv
a2VuID0gQ1VFRlVOQ1RJT047CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSA5
OgpAQCAtOTE1NCw2ICs5MTU4LDEwIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RGFz
aFRva2VuKGludCBsZW5ndGgpCiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSAxMiAm
JiBpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUgKyAxLCAid2Via2l0LWNhbGMiKSkKICAgICAg
ICAgbV90b2tlbiA9IENBTENGVU5DVElPTjsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
ZWxzZQorICAgICAgICBtX3Rva2VuID0gQ1VFRlVOQ1RJT047CisjZW5kaWYKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0xMDA5Myw3ICsxMDEwMSwxMSBAQCB2b2lk
IENTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWVzcGFjZVByZQogICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNwYWNl
ID0gbmFtZXNwYWNlUHJlZml4ICE9IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5bGVT
aGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHROYW1l
c3BhY2U7CiAgICAgUXVhbGlmaWVkTmFtZSB0YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVBy
ZWZpeCwgZWxlbWVudE5hbWUsIGRldGVybWluZWROYW1lc3BhY2UpOwogICAgIGlmICghc3BlY2lm
aWVycy0+aXNVbmtub3duUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIHNwZWNpZmllcnMtPnNl
dFRhZyh0YWcpOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgLy8gRG9uJ3Qgc2V0
IHRoZSB0YWcgZm9yIHRoZSBQc2V1ZG9DdWUgZWxlbWVudCBiZWNhdXNlIHRoZSBtYXRjaGlnIHdp
bGwgbm90IHdvcmsgd2hlbiB0aGUgdGFncyBhcmUgYmVpbmcgY29tcGFyZWQuCisgICAgICAgIGlm
ICghKHNwZWNpZmllcnMtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSkK
KyNlbmRpZgorICAgICAgICAgICAgc3BlY2lmaWVycy0+c2V0VGFnKHRhZyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwMTIwLDcgKzEwMTMyLDExIEBAIHZvaWQgQ1NTUGFyc2VyOjp1
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlUHJlCiAKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMo
Q1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVj
aWZpZXIpCiB7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChuZXdTcGVjaWZpZXIt
PmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSB8fCBuZXdTcGVjaWZpZXItPnBzZXVkb1R5cGUoKSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CisjZWxzZQogICAgIGlmIChuZXdTcGVjaWZpZXIt
PmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgeworI2VuZGlmCiAgICAgICAgIC8vIFVua25vd24g
cHNldWRvIGVsZW1lbnQgYWx3YXlzIGdvZXMgYXQgdGhlIHRvcCBvZiBzZWxlY3RvciBjaGFpbi4K
ICAgICAgICAgbmV3U3BlY2lmaWVyLT5hcHBlbmRUYWdIaXN0b3J5KENTU1NlbGVjdG9yOjpTaGFk
b3dEZXNjZW5kYW50LCBzaW5rRmxvYXRpbmdTZWxlY3RvcihzcGVjaWZpZXJzKSk7CiAgICAgICAg
IHJldHVybiBuZXdTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBk
MmJhNzU2Ny4uNTVlNGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0xNjMs
NiArMTYzLDEwIEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5
cGUpCiAgICAgY2FzZSBQc2V1ZG9BbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbjoKICAgICAg
ICAgcmV0dXJuIEFOSU1BVElOR19GVUxMX1NDUkVFTl9UUkFOU0lUSU9OOwogI2VuZGlmCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNhc2UgUHNldWRvQ3VlOgorICAgICAgICByZXR1cm4g
Q1VFOworI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9Vbmtub3duOgogICAgIGNhc2UgUHNldWRvRW1w
dHk6CiAgICAgY2FzZSBQc2V1ZG9GaXJzdENoaWxkOgpAQCAtMzAwLDYgKzMwNCw5IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGZ1bGxTY3JlZW5BbmNlc3RvciwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbiwgKCItd2Via2l0
LWFuaW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlKCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBvdXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKIApAQCAtMzc1LDYgKzM4Miw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAo
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuQW5jZXN0b3IuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkFuY2VzdG9yKTsKICAgICAgICAgbmFtZVRv
UHNldWRvVHlwZS0+c2V0KGFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uLmltcGwoKSwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uKTsKICNlbmRpZgor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGN1
ZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpOworI2VuZGlmCiAgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChpblJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0luUmFu
Z2UpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob3V0T2ZSYW5nZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9PdXRPZlJhbmdlKTsKICAgICB9CkBAIC00MDksNiArNDE5LDkgQEAg
dm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIHN3aXRjaCAo
bV9wc2V1ZG9UeXBlKSB7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKICAgICBjYXNlIFBzZXVkb0Jl
Zm9yZToKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisjZW5k
aWYKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5l
OgogICAgICAgICBjb21wYXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1
Y2EyNGY0Li4zYWZmMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMTU0LDYgKzE1
NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICAgICAgUHNldWRvSW5S
YW5nZSwKICAgICAgICAgICAgIFBzZXVkb091dE9mUmFuZ2UsCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgICAgICAgICAgUHNldWRvQ3VlLAorI2VuZGlmCiAgICAgICAgIH07CiAKICAgICAg
ICAgZW51bSBNYXJnaW5Cb3hUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBmNzVmNGY0
Li42MjM5NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xNDUsNiArMTQ1LDkgQEAgdm9p
ZCBSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogICAgIHJlcG9ydEF0b21SdWxlTWFwKCZpbmZvLCBtX3RhZ1J1bGVzKTsK
ICAgICByZXBvcnRBdG9tUnVsZU1hcCgmaW5mbywgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fbGlua1BzZXVkb0NsYXNzUnVsZXMpOworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVBzZXVkb0NsYXNzUnVsZXMp
OworI2VuZGlmCiAgICAgaW5mby5hZGRNZW1iZXIobV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fdW5pdmVyc2FsUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fcGFnZVJ1bGVzKTsKQEAgLTIyOSw2ICsyMzIsMTIgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxl
KFN0eWxlUnVsZSogcnVsZSwgdW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFk
ZFIKICAgICAgICAgYWRkVG9SdWxlU2V0KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9jbGFz
c1J1bGVzLCBydWxlRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgaWYgKHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0N1ZSkKKyAgICAgICAgbV9jdWVQc2V1ZG9DbGFzc1J1bGVzLmFwcGVuZChydWxl
RGF0YSk7CisjZW5kaWYKKwogICAgIGlmIChzZWxlY3Rvci0+aXNVbmtub3duUHNldWRvRWxlbWVu
dCgpKSB7CiAgICAgICAgIGFkZFRvUnVsZVNldChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCksIG1f
c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzLCBydWxlRGF0YSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTM4Niw2ICszOTUsOSBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICAgICBzaHJpbmtN
YXBWZWN0b3JzVG9GaXQobV90YWdSdWxlcyk7CiAgICAgc2hyaW5rTWFwVmVjdG9yc1RvRml0KG1f
c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKTsKICAgICBtX2xpbmtQc2V1ZG9DbGFzc1J1bGVzLnNo
cmlua1RvRml0KCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIG1fY3VlUHNldWRvQ2xh
c3NSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1c1BzZXVkb0NsYXNzUnVs
ZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNocmlua1RvRml0KCk7CiAg
ICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCmluZGV4IGEyZmJl
Y2IuLjE0MTI0Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKQEAgLTEyMiw2ICsxMjIsOSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogdGFnUnVsZXMoQXRvbWljU3RyaW5nSW1w
bCoga2V5KSBjb25zdCB7IHJldHVybiBtX3RhZ1J1bGVzLmdldChrZXkpOyB9CiAgICAgY29uc3Qg
VmVjdG9yPFJ1bGVEYXRhPiogc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKEF0b21pY1N0cmluZ0lt
cGwqIGtleSkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMuZ2V0KGtl
eSk7IH0KICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBsaW5rUHNldWRvQ2xhc3NSdWxlcygp
IGNvbnN0IHsgcmV0dXJuICZtX2xpbmtQc2V1ZG9DbGFzc1J1bGVzOyB9CisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGN1ZVBzZXVkb0NsYXNzUnVs
ZXMoKSBjb25zdCB7IHJldHVybiAmbV9jdWVQc2V1ZG9DbGFzc1J1bGVzOyB9CisjZW5kaWYKICAg
ICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBmb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSBjb25zdCB7
IHJldHVybiAmbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8UnVs
ZURhdGE+KiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1bGVz
OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgcGFnZVJ1bGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlUnVsZXM7IH0KQEAgLTEzNiw2ICsxMzksOSBAQCBwdWJsaWM6CiAgICAg
QXRvbVJ1bGVNYXAgbV90YWdSdWxlczsKICAgICBBdG9tUnVsZU1hcCBtX3NoYWRvd1BzZXVkb0Vs
ZW1lbnRSdWxlczsKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fbGlua1BzZXVkb0NsYXNzUnVsZXM7
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIFZlY3RvcjxSdWxlRGF0YT4gbV9jdWVQc2V1
ZG9DbGFzc1J1bGVzOworI2VuZGlmCiAgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2ZvY3VzUHNldWRv
Q2xhc3NSdWxlczsKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fdW5pdmVyc2FsUnVsZXM7CiAgICAg
VmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiBtX3BhZ2VSdWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAKaW5kZXggYjY2MDUwZi4uNzY5YmJlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlYwogICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0
LmVsZW1lbnQtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNoZWV0Q29sbGVjdGlvbigpLT5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyh0cnVlKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETyAmJiBtX21vZGUg
IT0gU2hhcmluZ1J1bGVzKQorICAgICAgICAgICAgaWYgKHBzZXVkb0lkICE9IE5PUFNFVURPICYm
IG1fbW9kZSAhPSBTaGFyaW5nUnVsZXMgJiYgcHNldWRvSWQgIT0gQ1VFKQogICAgICAgICAgICAg
ICAgIGR5bmFtaWNQc2V1ZG8gPSBwc2V1ZG9JZDsKICAgICAgICAgfQogICAgIH0KQEAgLTExNTMs
NiArMTE1MywyMSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25z
dCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGVsc2Ug
aWYgKHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNl
bGVjdG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgeworICAgICAg
ICBTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICBz
dWJDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOworICAgICAgICBzdWJDb250ZXh0LmlzTWF0
Y2hpbmdDdWVOb2RlcyA9IHRydWU7CisKKyAgICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1Bz
ZXVkbyA9IE5PUFNFVURPOworICAgICAgICBDU1NTZWxlY3RvciogY29uc3QgJiBzZWxlY3RvciA9
IGNvbnRleHQuc2VsZWN0b3I7CisgICAgICAgIGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNl
bGVjdG9yLT5zZWxlY3Rvckxpc3QoKS0+Zmlyc3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3Vi
Q29udGV4dC5zZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJDb250ZXh0LnNlbGVj
dG9yKSkgeworICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgaWdub3Jl
RHluYW1pY1BzZXVkbykgPT0gU2VsZWN0b3JNYXRjaGVzKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYK
ICAgICAvLyAjIyMgYWRkIHRoZSByZXN0IG9mIHRoZSBjaGVja3MuLi4KICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA5YmRiNjY5Li4yMzc2
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC02NSw2ICs2NSw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICwgZWxlbWVudFN0eWxlKDApCiAgICAgICAgICAgICAsIGVs
ZW1lbnRQYXJlbnRTdHlsZSgwKQogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgICAgICwgaXNNYXRjaGluZ0N1ZU5vZGVz
KGZhbHNlKQorI2VuZGlmCiAgICAgICAgICAgICAsIGhhc1Njcm9sbGJhclBzZXVkbyhmYWxzZSkK
ICAgICAgICAgICAgICwgaGFzU2VsZWN0aW9uUHNldWRvKGZhbHNlKQogICAgICAgICB7IH0KQEAg
LTc3LDYgKzgwLDkgQEAgcHVibGljOgogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxl
OwogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlOwogICAgICAgICBib29s
IGlzU3ViU2VsZWN0b3I7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBib29sIGlz
TWF0Y2hpbmdDdWVOb2RlczsKKyNlbmRpZgogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVk
bzsKICAgICAgICAgYm9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA3Y2NkZmZmLi5hNjZmMmY2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjY5LDYgKzY2OSwxMCBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVs
ZUluZGV4LCBpbgogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPnNo
YWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwg
bGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGlmIChtX2VsZW1lbnQtPmlzV2ViVlRUTm9kZSgpKQorICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmN1ZVBzZXVkb0NsYXNzUnVsZXMoKSwgZmlyc3RSdWxl
SW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOworI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hl
dGhlciBvdGhlciB0eXBlcyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0
cmVlIHNjb3BlLiBDcml0ZXJpYSBmb3IgdGhpczoKICAgICAvLyBhKSBpdCdzIGEgVUEgcnVsZQog
ICAgIC8vIGIpIHRoZSB0cmVlIHNjb3BlIGFsbG93cyBhdXRob3IgcnVsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCA0ZDkzODMwLi5iYjFiZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC0yMDYzLDcgKzIwNjMsMTkgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQKICAgICByZXR1cm4g
Tm9kZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogI2VuZGlm
Ci0gICAgCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIEVsZW1lbnQ6OmlzV2ViVlRU
Tm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVE
YXRhKCktPmlzV2ViVlRUTm9kZSgpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzV2ViVlRUTm9k
ZShib29sIGZsYWcpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldElzV2ViVlRU
Tm9kZShmbGFnKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogdm9p
ZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCiB7CkBAIC0yNDYyLDYgKzI0NzQs
MTAgQEAgdm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVt
ZW50JiBvdGhlcikKIAogdm9pZCBFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudChjb25zdCBF
bGVtZW50JiBvdGhlcikKIHsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKG90aGVy
LmlzV2ViVlRUTm9kZSgpKQorICAgICAgICBzZXRJc1dlYlZUVE5vZGUodHJ1ZSk7CisjZW5kaWYK
ICAgICBjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChvdGhlcik7CiAgICAgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChvdGhlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRl
eCA2NzdiMzQ3Li5iYzkxZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM5OCw2ICszOTgsMTEg
QEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHZpcnR1YWwgYm9vbCBpc1dlYlZUVE5v
ZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldElzV2ViVlRUTm9kZShib29sIGZsYWcpOworI2VuZGlm
CiAgICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGVudW0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDRiMTljZDQuLjQyMTNhNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB1
c2luZyBOb2RlUmFyZURhdGE6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5OwogICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6aXNJbkNhbnZhc1N1YnRyZWU7CiAgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpz
ZXRJc0luQ2FudmFzU3VidHJlZTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdXNpbmcg
Tm9kZVJhcmVEYXRhOjppc1dlYlZUVE5vZGU7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJ
c1dlYlZUVE5vZGU7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdXNp
bmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OwogICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAppbmRleCBjNTZkMDZmLi4xYTMyODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCkBAIC0xOTAsNiArMTkwLDkgQEAgcHVibGljOgogICAgICAgICAsIG1fbmVlZHNGb2N1
c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCiAgICAgICAgICwgbV9zdHls
ZUFmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAgICAgICAgLCBtX2lzSW5DYW52YXNTdWJ0cmVlKGZh
bHNlKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgLCBtX2lzV2ViVlRUTm9kZShm
YWxzZSkKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgLCBtX2Nv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKQEAgLTMwNyw2ICszMTAsMTAg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoYm9vbCB2YWx1
ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5ID0gdmFsdWU7IH0KICAgICBib29sIGlzSW5DYW52
YXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luQ2FudmFzU3VidHJlZTsgfQogICAgIHZv
aWQgc2V0SXNJbkNhbnZhc1N1YnRyZWUoYm9vbCB2YWx1ZSkgeyBtX2lzSW5DYW52YXNTdWJ0cmVl
ID0gdmFsdWU7IH0KKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCBpc1dlYlZUVE5v
ZGUoKSB7IHJldHVybiBtX2lzV2ViVlRUTm9kZTsgfQorICAgIHZvaWQgc2V0SXNXZWJWVFROb2Rl
KGJvb2wgdmFsdWUpIHsgbV9pc1dlYlZUVE5vZGUgPSB2YWx1ZTsgfQorI2VuZGlmCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgp
IHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZvaWQgc2V0Q29u
dGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCA9IHZhbHVlOyB9CkBAIC0zMjIsNiArMzI5LDkgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggOiAxOwogICAgIGJv
b2wgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eSA6IDE7CiAgICAgYm9vbCBtX2lzSW5DYW52YXNTdWJ0
cmVlIDogMTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCBtX2lzV2ViVlRUTm9k
ZSA6IDE7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2Nv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uZmVkMDM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzY0LDYgKzM2NCw3IEBA
IHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxVGFnLCBkb2N1
bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBjaGlsZC0+c2V0SXNX
ZWJWVFROb2RlKHRydWUpOwogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNpemUo
KSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0
b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3NlcygpLnNp
emUoKSkpOwogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHFUYWcpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aAppbmRleCBmOWYzMjA5Li45NDE2MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzEsNiArNzEsOSBAQCBl
bnVtIFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eSB7CiBlbnVtIFBzZXVk
b0lkIHsKICAgICAvLyBUaGUgb3JkZXIgbXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0
aGVuIGludGVybmFsIElEcy4KICAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVS
LCBCRUZPUkUsIEFGVEVSLCBTRUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JPTExC
QVIsCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIENVRSwKKyNlbmRpZgogICAgIC8vIElu
dGVybmFsIElEcyBmb2xsb3c6CiAgICAgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9O
LCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5F
UiwgUkVTSVpFUiwKICAgICBJTlBVVF9MSVNUX0JVVFRPTiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177912</attachid>
            <date>2012-12-05 20:03:26 -0800</date>
            <delta_ts>2012-12-10 22:41:40 -0800</delta_ts>
            <desc>Proposed fix 0.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23468</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3ZjhjNWZhLi43NjU5ODdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MDUgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNCAg
RGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZ2Vu
ZXJhbCA6OmN1ZSBwc2V1ZG8gZWxlbWVudCBmb3IgdGhlIDx2aWRlbz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAppbmRleCA3OWZm
ODk5Li5hNzFiY2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9u
cy13ZWJ2dHQvc3R5bGluZy52dHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlv
bnMtd2VidnR0L3N0eWxpbmcudnR0CkBAIC0xLDQgKzEsOSBAQAogV0VCVlRUCiAKLTAwOjAwLjAw
MCAtLT4gMDA6MDQuMDAwCi1Mb3J1bSBpcHN1bQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
KzEKKzAwOjAwLjAwMCAtLT4gMDA6MDEuMDAwCitMb3J1bSBpcHN1bQorCisyCiswMDowMS4wMDAg
LS0+IDAwOjAyLjAwMAorPGMucmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29uc2Vj
dGV0dXIgPC9jPjxjLnJlZDI+YWRpcGlzY2luZyBlbGl0PC9jPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFkYzFkYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlcyBwcm9wZXJs
eSBieSB0aGUgY2xhc3MgbmFtZQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFVkVOVChzZWVrZWQp
CitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwg
MCwgMCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigwLCAxMjgsIDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUp
LmNvbG9yID09ICdyZ2IoMjU1LCAwLCAwKScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYjdkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
Lz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KKworICAgICAgICA8c3R5bGU+
CisKKyAgICAgICAgdmlkZW86OmN1ZSgucmVkLCAucmVkMikgeyBjb2xvcjpyZWQgfQorICAgICAg
ICAjdGVzdHZpZGVvOjpjdWUoLmdyZWVuKSB7IGNvbG9yOmdyZWVuIH0KKworICAgICAgICA8L3N0
eWxlPgorCisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgdmFyIGN1ZU5vZGU7CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Vla2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgY3VlTm9kZSA9IHRl
eHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAncGFzdC1ub2RlcycpLmZpcnN0Q2hpbGQ7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ii
LCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAgICAgIGN1ZU5vZGUgPSBjdWVOb2RlLm5leHRT
aWJsaW5nOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5v
ZGUpLmNvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3Vl
Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZShjdWVOb2RlKS5jb2xvciIsICJyZ2IoMjU1LCAwLCAwKSIpOworICAgICAgICAgICAgZW5k
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0
Y2hlcyBwcm9wZXJseSBieSB0aGUgY2xhc3MgbmFtZSIpOworICAgICAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8n
LCAnLi4vY29udGVudC90ZXN0Jyk7CisgICAgICAgICAgICB2aWRlby5pZCA9ICJ0ZXN0dmlkZW8i
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQpOworICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJy
ZW50VGltZSA9IDEuNTsgfSk7CisgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJsb2FkZWQoKSI+CisgICAgICAgIDx2aWRlbyBjb250
cm9scyA+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52
dHQiIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDg5ZTlmLi41OWYyNzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTItMTItMDUgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3
aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgOjpjdWUoKSBwc2V1ZG8tZWxlbWVudCB3
aXRoIGFuIGFyZ3VtZW50IHRoYXQgbWF5IGhvbGQgYSBzaW1wbGUgc2VsZWN0b3IgbGlzdC4KKyAg
ICAgICAgVGhpcyBlbmFibGVzIG1hdGNoaW5nIGN1ZSBvYmplY3RzIGJ5IHRoZSBjbGFzcyBuYW1l
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBzdXBwb3J0IHBhcnNpbmcgdGhlIDo6Y3Vl
KCkgd2l0aCBhbiBhcmd1bWVudAorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbik6IHRva2VuaXpl
IHRoZSAnY3VlJy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSk6IGRvIG5vdCBzZXQgdGhlIHRhZyBmb3IgdGhlIGN1ZSBwc2V1ZG8t
ZWxlbWVudCBiZWNhdXNlCisgICAgICAgIHRoZSA6OmN1ZSBtYXkgbWF0Y2ggZWxlbWVudHMgd2l0
aCBkaWZmZXJlbnQgdGFncy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dXBkYXRlU3Bl
Y2lmaWVycyk6IHRoZSBiZWhhdmlvciBmb3IgdGhlIFBzZXVkb0N1ZSBzZWxlY3RvciBzaG91bGQg
YmUgc2FtZSBhcyBmb3IKKyAgICAgICAgdW5rbm93biBwc2V1ZG8gZWxlbWVudHMgLSB0aGUgcHNl
dWRvLWVsZW1lbnQgc2hvdWxkIHN0YXkgb24gdG9wIG9mIHRoZSBzZWxlY3RvciBjaGFpbi4KKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOiBhZGRlZCB0aGUgdHlwZSBkZXRlY3Rpb24gZm9y
IHRoZSBuZXcgc2VsZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRv
SWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAqIGNzcy9D
U1NTZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDogYWRkIGEgbmV3IGxpc3Qg
dG8gaG9sZCBhbGwgdGhlIHJ1bGVzZXRzIGZvciB0aGUgbmV3IHBzZXVkbyBlbGVtZW50LgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjpzaHJp
bmtUb0ZpdCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuaDoKKyAgICAgICAgKFJ1bGVTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6Y3VlUHNldWRvQ2xhc3NSdWxlcyk6CisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMpOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDogYW4gYWRkaXRpb24gdG8gdGhlIHJhcmUgZGF0YSB0byBiZSBhYmxlIHRvIGZp
bmQgb3V0IGlmIHRoZSBub2RlIGlzIGEgd2VidnR0IG5vZGUuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzV2ViVlRUTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRJc1dlYlZUVE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2xvbmVEYXRhRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAg
IChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhKToKKyAgICAgICAgKE5vZGVS
YXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmlzV2ViVlRUTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OnNldElzV2ViVlRUTm9kZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMi0xMi0wNCAgRGltYSBHb3JiaWsg
IDxkZ29yYmlrQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZ2VuZXJhbCA6OmN1ZSBw
c2V1ZG8gZWxlbWVudCBmb3IgdGhlIDx2aWRlbz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Lmlu
CmluZGV4IDIyOTU3YzYuLmVhOWY4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpA
QCAtMTczLDYgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNv
bnN0IGNoYXIqKQogJXRva2VuIDxzdHJpbmc+IFVSSQogJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9O
CiAldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KKyNpZiBFTkFCTEVfVklERU9fVFJBQ0sKKyV0
b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgorI2VuZGlmCiAldG9rZW4gPHN0cmluZz4gTk9URlVO
Q1RJT04KICV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBNSU5G
VU5DVElPTgpAQCAtMTMwOSw2ICsxMzEyLDIxIEBAIHBzZXVkbzoKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNl
dWRvVHlwZSBlYXJseSBlbm91Z2guCiAgICAgICAgICQkLT5wc2V1ZG9UeXBlKCk7CiAgICAgfQor
I2lmIEVOQUJMRV9WSURFT19UUkFDSworICAgIC8vIHVzZWQgYnkgOjpjdWUoOnBhc3QvOmZ1dHVy
ZSkKKyAgICB8ICc6JyAnOicgQ1VFRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9y
X2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCQ1KSB7CisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICAgICAkJC0+YWRvcHRT
ZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNSkpOwor
ICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICAgICAgaWYgKHR5cGUg
IT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkKKyAgICAgICAgICAgICAgICAkJCA9IDA7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyNlbmRpZgogICAgIC8vIHVz
ZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVy
aWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBz
aW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAppbmRleCBiMTYxYWVjLi4xZTY2OGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtODk3Niw2ICs4OTc2LDEwIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6ZGV0
ZWN0RnVuY3Rpb25UeXBlVG9rZW4oaW50IGxlbmd0aCkKICAgICAgICAgICAgIG1fdG9rZW4gPSBO
T1RGVU5DVElPTjsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChu
YW1lWzBdLCAndScpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVsxXSwgJ3InKSAm
JiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMl0sICdsJykpCiAgICAgICAgICAgICBt
X3Rva2VuID0gVVJJOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgZWxzZSBpZiAo
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzBdLCAnYycpICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwobmFtZVsxXSwgJ3UnKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5h
bWVbMl0sICdlJykpCisgICAgICAgICAgICBtX3Rva2VuID0gQ1VFRlVOQ1RJT047CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSA5OgpAQCAtMTAwOTMsNyArMTAwOTcsMTEgQEAg
dm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVz
cGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0
eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0
TmFtZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3Bh
Y2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKICAgICBpZiAoIXNw
ZWNpZmllcnMtPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBzcGVjaWZpZXJz
LT5zZXRUYWcodGFnKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIC8vIERvbid0
IHNldCB0aGUgdGFnIGZvciB0aGUgUHNldWRvQ3VlIGVsZW1lbnQgYmVjYXVzZSB0aGUgbWF0Y2hp
bmcgd2lsbCBub3Qgd29yayB3aGVuIHRoZSB0YWdzIGFyZSBiZWluZyBjb21wYXJlZC4KKyAgICAg
ICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9D
dWUpKQorI2VuZGlmCisgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFnKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAxMjAsNyArMTAxMjgsMTEgQEAgdm9pZCBDU1NQYXJz
ZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VQcmUKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBkYXRlU3BlY2lm
aWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2VsZWN0b3IqIG5l
d1NwZWNpZmllcikKIHsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKG5ld1NwZWNp
Zmllci0+aXNVbmtub3duUHNldWRvRWxlbWVudCgpIHx8IG5ld1NwZWNpZmllci0+cHNldWRvVHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpIHsKKyNlbHNlCiAgICAgaWYgKG5ld1NwZWNp
Zmllci0+aXNVbmtub3duUHNldWRvRWxlbWVudCgpKSB7CisjZW5kaWYKICAgICAgICAgLy8gVW5r
bm93biBwc2V1ZG8gZWxlbWVudCBhbHdheXMgZ29lcyBhdCB0aGUgdG9wIG9mIHNlbGVjdG9yIGNo
YWluLgogICAgICAgICBuZXdTcGVjaWZpZXItPmFwcGVuZFRhZ0hpc3RvcnkoQ1NTU2VsZWN0b3I6
OlNoYWRvd0Rlc2NlbmRhbnQsIHNpbmtGbG9hdGluZ1NlbGVjdG9yKHNwZWNpZmllcnMpKTsKICAg
ICAgICAgcmV0dXJuIG5ld1NwZWNpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmlu
ZGV4IGQyYmE3NTY3Li41NWU0YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAg
LTE2Myw2ICsxNjMsMTAgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5
cGUgdHlwZSkKICAgICBjYXNlIFBzZXVkb0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uOgog
ICAgICAgICByZXR1cm4gQU5JTUFUSU5HX0ZVTExfU0NSRUVOX1RSQU5TSVRJT047CiAjZW5kaWYK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisgICAgICAgIHJl
dHVybiBDVUU7CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1Vua25vd246CiAgICAgY2FzZSBQc2V1
ZG9FbXB0eToKICAgICBjYXNlIFBzZXVkb0ZpcnN0Q2hpbGQ6CkBAIC0zMDAsNiArMzA0LDkgQEAg
c3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
PiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZnVsbFNjcmVlbkFuY2VzdG9yLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4tYW5jZXN0b3Ii
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uLCAoIi13
ZWJraXQtYW5pbWF0aW5nLWZ1bGwtc2NyZWVuLXRyYW5zaXRpb24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGN1ZSwgKCJjdWUoIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworI2VuZGlmCiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGluUmFuZ2UsICgiaW4tcmFuZ2UiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG91dE9mUmFuZ2UsICgib3V0LW9mLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogCkBAIC0zNzUsNiArMzgyLDkgQEAgc3RhdGljIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlw
ZU1hcCgKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW5BbmNlc3Rvci5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuQW5jZXN0b3IpOwogICAgICAgICBu
YW1lVG9Qc2V1ZG9UeXBlLT5zZXQoYW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb24uaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb24pOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5z
ZXQoY3VlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSk7CisjZW5kaWYKICAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KGluUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
SW5SYW5nZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChvdXRPZlJhbmdlLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb091dE9mUmFuZ2UpOwogICAgIH0KQEAgLTQwOSw2ICs0MTks
OSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgc3dp
dGNoIChtX3BzZXVkb1R5cGUpIHsKICAgICBjYXNlIFBzZXVkb0FmdGVyOgogICAgIGNhc2UgUHNl
dWRvQmVmb3JlOgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIFBzZXVkb0N1ZToK
KyNlbmRpZgogICAgIGNhc2UgUHNldWRvRmlyc3RMZXR0ZXI6CiAgICAgY2FzZSBQc2V1ZG9GaXJz
dExpbmU6CiAgICAgICAgIGNvbXBhdCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmlu
ZGV4IDVjYTI0ZjQuLjNhZmYwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC0xNTQs
NiArMTU0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgICAgICBQc2V1
ZG9JblJhbmdlLAogICAgICAgICAgICAgUHNldWRvT3V0T2ZSYW5nZSwKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgICAgICAgICBQc2V1ZG9DdWUsCisjZW5kaWYKICAgICAgICAgfTsKIAog
ICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGY3
NWY0ZjQuLjYyMzk2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE0NSw2ICsxNDUsOSBA
QCB2b2lkIFJ1bGVTZXQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgcmVwb3J0QXRvbVJ1bGVNYXAoJmluZm8sIG1fdGFnUnVs
ZXMpOwogICAgIHJlcG9ydEF0b21SdWxlTWFwKCZpbmZvLCBtX3NoYWRvd1BzZXVkb0VsZW1lbnRS
dWxlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9saW5rUHNldWRvQ2xhc3NSdWxlcyk7CisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlUHNldWRvQ2xhc3NS
dWxlcyk7CisjZW5kaWYKICAgICBpbmZvLmFkZE1lbWJlcihtX2ZvY3VzUHNldWRvQ2xhc3NSdWxl
cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV91bml2ZXJzYWxSdWxlcyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9wYWdlUnVsZXMpOwpAQCAtMjI5LDYgKzIzMiwxMiBAQCB2b2lkIFJ1bGVTZXQ6OmFk
ZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCBBZGRSdWxlRmxh
Z3MgYWRkUgogICAgICAgICBhZGRUb1J1bGVTZXQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpLCBt
X2NsYXNzUnVsZXMsIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ3VlKQorICAgICAgICBtX2N1ZVBzZXVkb0NsYXNzUnVsZXMuYXBwZW5k
KHJ1bGVEYXRhKTsKKyNlbmRpZgorCiAgICAgaWYgKHNlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9F
bGVtZW50KCkpIHsKICAgICAgICAgYWRkVG9SdWxlU2V0KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwo
KSwgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMsIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzg2LDYgKzM5NSw5IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQogICAgIHNo
cmlua01hcFZlY3RvcnNUb0ZpdChtX3RhZ1J1bGVzKTsKICAgICBzaHJpbmtNYXBWZWN0b3JzVG9G
aXQobV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOwogICAgIG1fbGlua1BzZXVkb0NsYXNzUnVs
ZXMuc2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgbV9jdWVQc2V1
ZG9DbGFzc1J1bGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKICAgICBtX2ZvY3VzUHNldWRvQ2xh
c3NSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fdW5pdmVyc2FsUnVsZXMuc2hyaW5rVG9GaXQo
KTsKICAgICBtX3BhZ2VSdWxlcy5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKaW5kZXgg
YTJmYmVjYi4uMTQxMjRmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaApAQCAtMTIyLDYgKzEyMiw5IEBA
IHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiB0YWdSdWxlcyhBdG9taWNTdHJp
bmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KICAgICBj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBzaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoQXRvbWljU3Ry
aW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5n
ZXQoa2V5KTsgfQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGxpbmtQc2V1ZG9DbGFzc1J1
bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fbGlua1BzZXVkb0NsYXNzUnVsZXM7IH0KKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogY3VlUHNldWRvQ2xh
c3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2N1ZVBzZXVkb0NsYXNzUnVsZXM7IH0KKyNlbmRp
ZgogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGZvY3VzUHNldWRvQ2xhc3NSdWxlcygpIGNv
bnN0IHsgcmV0dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsgfQogICAgIGNvbnN0IFZlY3Rv
cjxSdWxlRGF0YT4qIHVuaXZlcnNhbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fdW5pdmVyc2Fs
UnVsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiBwYWdlUnVsZXMoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VSdWxlczsgfQpAQCAtMTM2LDYgKzEzOSw5IEBAIHB1YmxpYzoK
ICAgICBBdG9tUnVsZU1hcCBtX3RhZ1J1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fc2hhZG93UHNl
dWRvRWxlbWVudFJ1bGVzOwogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV9saW5rUHNldWRvQ2xhc3NS
dWxlczsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2N1
ZVBzZXVkb0NsYXNzUnVsZXM7CisjZW5kaWYKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fZm9jdXNQ
c2V1ZG9DbGFzc1J1bGVzOwogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV91bml2ZXJzYWxSdWxlczsK
ICAgICBWZWN0b3I8U3R5bGVSdWxlUGFnZSo+IG1fcGFnZVJ1bGVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBiNjYwNTBmLi43NjliYmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDU4LDcgKzQ1OCw3IEBAIFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVjCiAgICAgICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGNv
bnRleHQuZWxlbWVudC0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnNldFVzZXNGaXJzdExldHRlclJ1bGVzKHRydWUpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBzZXVkb0lkICE9IE5PUFNFVURPICYmIG1f
bW9kZSAhPSBTaGFyaW5nUnVsZXMpCisgICAgICAgICAgICBpZiAocHNldWRvSWQgIT0gTk9QU0VV
RE8gJiYgbV9tb2RlICE9IFNoYXJpbmdSdWxlcyAmJiBwc2V1ZG9JZCAhPSBDVUUpCiAgICAgICAg
ICAgICAgICAgZHluYW1pY1BzZXVkbyA9IHBzZXVkb0lkOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTE1Myw2ICsxMTUzLDIxIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
ZWxzZSBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQg
JiYgc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7Cisg
ICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAg
ICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CisgICAgICAgIHN1YkNvbnRleHQu
aXNNYXRjaGluZ0N1ZU5vZGVzID0gdHJ1ZTsKKworICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5h
bWljUHNldWRvID0gTk9QU0VVRE87CisgICAgICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVj
dG9yID0gY29udGV4dC5zZWxlY3RvcjsKKyAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9y
ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9y
OyBzdWJDb250ZXh0LnNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YkNvbnRleHQu
c2VsZWN0b3IpKSB7CisgICAgICAgICAgICBpZiAoY2hlY2tTZWxlY3RvcihzdWJDb250ZXh0LCBp
Z25vcmVEeW5hbWljUHNldWRvKSA9PSBTZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNl
bmRpZgogICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDliZGI2Njku
LjIzNzY2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTY1LDYgKzY1
LDkgQEAgcHVibGljOgogICAgICAgICAgICAgLCBlbGVtZW50U3R5bGUoMCkKICAgICAgICAgICAg
ICwgZWxlbWVudFBhcmVudFN0eWxlKDApCiAgICAgICAgICAgICAsIGlzU3ViU2VsZWN0b3IoZmFs
c2UpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICAgICAgLCBpc01hdGNoaW5nQ3Vl
Tm9kZXMoZmFsc2UpCisjZW5kaWYKICAgICAgICAgICAgICwgaGFzU2Nyb2xsYmFyUHNldWRvKGZh
bHNlKQogICAgICAgICAgICAgLCBoYXNTZWxlY3Rpb25Qc2V1ZG8oZmFsc2UpCiAgICAgICAgIHsg
fQpAQCAtNzcsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclN0eWxlKiBlbGVtZW50
U3R5bGU7CiAgICAgICAgIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGU7CiAgICAgICAg
IGJvb2wgaXNTdWJTZWxlY3RvcjsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGJv
b2wgaXNNYXRjaGluZ0N1ZU5vZGVzOworI2VuZGlmCiAgICAgICAgIGJvb2wgaGFzU2Nyb2xsYmFy
UHNldWRvOwogICAgICAgICBib29sIGhhc1NlbGVjdGlvblBzZXVkbzsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDdjY2RmZmYuLmE2NmYyZjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02NjksNiArNjY5LDEwIEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmly
c3RSdWxlSW5kZXgsIGluCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxl
cy0+c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgaWYgKG1fZWxlbWVudC0+aXNXZWJWVFROb2RlKCkpCisgICAgICAgIGNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+Y3VlUHNldWRvQ2xhc3NSdWxlcygpLCBmaXJz
dFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisjZW5kaWYKICAgICAvLyBDaGVj
ayB3aGV0aGVyIG90aGVyIHR5cGVzIG9mIHJ1bGVzIGFyZSBhcHBsaWNhYmxlIGluIHRoZSBjdXJy
ZW50IHRyZWUgc2NvcGUuIENyaXRlcmlhIGZvciB0aGlzOgogICAgIC8vIGEpIGl0J3MgYSBVQSBy
dWxlCiAgICAgLy8gYikgdGhlIHRyZWUgc2NvcGUgYWxsb3dzIGF1dGhvciBydWxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDRkOTM4MzAuLmJiMWJlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTIwNjMsNyArMjA2MywxOSBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dAogICAgIHJl
dHVybiBOb2RlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CiB9CiAj
ZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKK2Jvb2wgRWxlbWVudDo6aXNX
ZWJWVFROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50
UmFyZURhdGEoKS0+aXNXZWJWVFROb2RlKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0SXNXZWJW
VFROb2RlKGJvb2wgZmxhZykKK3sKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0SXNX
ZWJWVFROb2RlKGZsYWcpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkKIHsKQEAgLTI0NjIsNiAr
MjQ3NCwxMCBAQCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0
IEVsZW1lbnQmIG90aGVyKQogCiB2b2lkIEVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KGNv
bnN0IEVsZW1lbnQmIG90aGVyKQogeworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAo
b3RoZXIuaXNXZWJWVFROb2RlKCkpCisgICAgICAgIHNldElzV2ViVlRUTm9kZSh0cnVlKTsKKyNl
bmRpZgogICAgIGNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KG90aGVyKTsKICAgICBjb3B5Tm9u
QXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KG90aGVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDY3N2IzNDcuLmJjOTFlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzk4LDYgKzM5
OCwxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNWRykKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0Owog
I2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmlydHVhbCBib29sIGlzV2Vi
VlRUTm9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0SXNXZWJWVFROb2RlKGJvb2wgZmxhZyk7Cisj
ZW5kaWYKICAgICAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgZW51bSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggNGIxOWNkNC4uNDIxM2E3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNDksNiArNDksMTAgQEAgcHVibGljOgog
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHk7CiAgICAgdXNp
bmcgTm9kZVJhcmVEYXRhOjppc0luQ2FudmFzU3VidHJlZTsKICAgICB1c2luZyBOb2RlUmFyZURh
dGE6OnNldElzSW5DYW52YXNTdWJ0cmVlOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB1
c2luZyBOb2RlUmFyZURhdGE6OmlzV2ViVlRUTm9kZTsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6
OnNldElzV2ViVlRUTm9kZTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICB1c2luZyBOb2RlUmFyZURhdGE6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CiAgICAgdXNp
bmcgTm9kZVJhcmVEYXRhOjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCmluZGV4IGM1NmQwNmYuLjFhMzI4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmgKQEAgLTE5MCw2ICsxOTAsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZWVk
c0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaChmYWxzZSkKICAgICAgICAgLCBt
X3N0eWxlQWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQogICAgICAgICAsIG1faXNJbkNhbnZhc1N1YnRy
ZWUoZmFsc2UpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICAsIG1faXNXZWJWVFRO
b2RlKGZhbHNlKQorI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAs
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgpAQCAtMzA3LDYgKzMx
MCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eShib29s
IHZhbHVlKSB7IG1fc3R5bGVBZmZlY3RlZEJ5RW1wdHkgPSB2YWx1ZTsgfQogICAgIGJvb2wgaXNJ
bkNhbnZhc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5DYW52YXNTdWJ0cmVlOyB9CiAg
ICAgdm9pZCBzZXRJc0luQ2FudmFzU3VidHJlZShib29sIHZhbHVlKSB7IG1faXNJbkNhbnZhc1N1
YnRyZWUgPSB2YWx1ZTsgfQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29sIGlzV2Vi
VlRUTm9kZSgpIHsgcmV0dXJuIG1faXNXZWJWVFROb2RlOyB9CisgICAgdm9pZCBzZXRJc1dlYlZU
VE5vZGUoYm9vbCB2YWx1ZSkgeyBtX2lzV2ViVlRUTm9kZSA9IHZhbHVlOyB9CisjZW5kaWYKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50OyB9CiAgICAgdm9pZCBz
ZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KQEAgLTMyMiw2ICszMjksOSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCA6IDE7CiAg
ICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKICAgICBib29sIG1faXNJbkNhbnZh
c1N1YnRyZWUgOiAxOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29sIG1faXNXZWJW
VFROb2RlIDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29s
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAyOTdlNTk5Li5mZWQwMzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNjQsNiArMzY0
LDcgQEAgdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQq
IGRvY3VtZW50KQogICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHFUYWcs
IGRvY3VtZW50KTsKIAogICAgICAgICBpZiAoY2hpbGQpIHsKKyAgICAgICAgICAgIGNoaWxkLT5z
ZXRJc1dlYlZUVE5vZGUodHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCku
c2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0
ciwgQXRvbWljU3RyaW5nKG1fdG9rZW4uY2xhc3NlcygpLmRhdGEoKSwgbV90b2tlbi5jbGFzc2Vz
KCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUocVRhZykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oCmluZGV4IGY5ZjMyMDkuLjk0MTYxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC03MSw2ICs3MSw5
IEBAIGVudW0gU3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3BlcnR5IHsKIGVudW0g
UHNldWRvSWQgewogICAgIC8vIFRoZSBvcmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywg
YW5kIHRoZW4gaW50ZXJuYWwgSURzLgogICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9M
RVRURVIsIEJFRk9SRSwgQUZURVIsIFNFTEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFND
Uk9MTEJBUiwKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgQ1VFLAorI2VuZGlmCiAgICAg
Ly8gSW50ZXJuYWwgSURzIGZvbGxvdzoKICAgICBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9C
VVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJf
Q09STkVSLCBSRVNJWkVSLAogICAgIElOUFVUX0xJU1RfQlVUVE9OLAo=
</data>
<flag name="review"
          id="194235"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178723</attachid>
            <date>2012-12-10 22:41:40 -0800</date>
            <delta_ts>2012-12-11 17:14:26 -0800</delta_ts>
            <desc>Proposed fix 0.3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22411</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMjQ1MWUwLi4yZTAwZGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNyAg
RGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgZ2Vu
ZXJhbCA6OmN1ZSBwc2V1ZG8gZWxlbWVudCBmb3IgdGhlIDx2aWRlbz4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dAppbmRleCA3OWZm
ODk5Li5hNzFiY2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9u
cy13ZWJ2dHQvc3R5bGluZy52dHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlv
bnMtd2VidnR0L3N0eWxpbmcudnR0CkBAIC0xLDQgKzEsOSBAQAogV0VCVlRUCiAKLTAwOjAwLjAw
MCAtLT4gMDA6MDQuMDAwCi1Mb3J1bSBpcHN1bQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
KzEKKzAwOjAwLjAwMCAtLT4gMDA6MDEuMDAwCitMb3J1bSBpcHN1bQorCisyCiswMDowMS4wMDAg
LS0+IDAwOjAyLjAwMAorPGMucmVkPmRvbG9yIHNpdCA8L2M+PGMuZ3JlZW4+YW1ldCwgY29uc2Vj
dGV0dXIgPC9jPjxjLnJlZDI+YWRpcGlzY2luZyBlbGl0PC9jPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyMzk1MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw4IEBACitUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0Y2hlZCBwcm9wZXJs
eSBieSB0aGUgY2xhc3MgbmFtZQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFVkVOVChzZWVrZWQp
CitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwg
MCwgMCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0g
J3JnYigwLCAxMjgsIDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUp
LmNvbG9yID09ICdyZ2IoMjU1LCAwLCAwKScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNDIyNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
Lz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KKworICAgICAgICA8c3R5bGU+
CisKKyAgICAgICAgdmlkZW86OmN1ZSgucmVkLCAucmVkMikgeyBjb2xvcjpyZWQgfQorICAgICAg
ICAjdGVzdHZpZGVvOjpjdWUoLmdyZWVuKSB7IGNvbG9yOmdyZWVuIH0KKworICAgICAgICA8L3N0
eWxlPgorCisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgdmFyIGN1ZU5vZGU7CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Vla2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgY3VlTm9kZSA9IHRl
eHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAncGFzdC1ub2RlcycpLmZpcnN0Q2hpbGQ7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3Ii
LCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAgICAgIGN1ZU5vZGUgPSBjdWVOb2RlLm5leHRT
aWJsaW5nOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5v
ZGUpLmNvbG9yIiwgInJnYigwLCAxMjgsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3Vl
Tm9kZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZShjdWVOb2RlKS5jb2xvciIsICJyZ2IoMjU1LCAwLCAwKSIpOworICAgICAgICAgICAgZW5k
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgY3VlcyBhcmUgYmVpbmcgbWF0
Y2hlZCBwcm9wZXJseSBieSB0aGUgY2xhc3MgbmFtZSIpOworICAgICAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgndmlkZW8n
LCAnLi4vY29udGVudC90ZXN0Jyk7CisgICAgICAgICAgICB2aWRlby5pZCA9ICJ0ZXN0dmlkZW8i
OworICAgICAgICAgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQpOworICAgICAgICAg
ICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJy
ZW50VGltZSA9IDEuNTsgfSk7CisgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJsb2FkZWQoKSI+CisgICAgICAgIDx2aWRlbyBjb250
cm9scyA+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52
dHQiIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMDcxYzg1Li41YzU2NGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTItMTItMDggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3
aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgOjpjdWUoKSBwc2V1ZG8tZWxlbWVudCB3
aXRoIGFuIGFyZ3VtZW50IHRoYXQgbWF5IGhvbGQgYSBzaW1wbGUgc2VsZWN0b3IgbGlzdC4KKyAg
ICAgICAgVGhpcyBlbmFibGVzIG1hdGNoaW5nIGN1ZSBvYmplY3RzIGJ5IHRoZSBjbGFzcyBuYW1l
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBzdXBwb3J0IHBhcnNpbmcgdGhlIDo6Y3Vl
KCkgd2l0aCBhbiBhcmd1bWVudC4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25UeXBlVG9rZW4pOiB0b2tlbml6
ZSB0aGUgJ2N1ZScuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUpOiBkbyBub3Qgc2V0IHRoZSB0YWcgZm9yIHRoZSBjdWUgcHNldWRv
LWVsZW1lbnQgYmVjYXVzZQorICAgICAgICB0aGUgOjpjdWUgbWF5IG1hdGNoIGVsZW1lbnRzIHdp
dGggZGlmZmVyZW50IHRhZ3MuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnVwZGF0ZVNw
ZWNpZmllcnMpOiB0aGUgYmVoYXZpb3IgZm9yIHRoZSBQc2V1ZG9DdWUgc2VsZWN0b3Igc2hvdWxk
IGJlIHNhbWUgYXMgZm9yCisgICAgICAgIHVua25vd24gcHNldWRvIGVsZW1lbnRzIC0gdGhlIHBz
ZXVkby1lbGVtZW50IHNob3VsZCBzdGF5IG9uIHRvcCBvZiB0aGUgc2VsZWN0b3IgY2hhaW4uCisg
ICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDogYWRkZWQgdGhlIHR5cGUgZGV0ZWN0aW9uIGZv
ciB0aGUgbmV3IHNlbGVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVk
b0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6IGFkZCBhIG5ldyBsaXN0
IHRvIGhvbGQgYWxsIHRoZSBydWxlc2V0cyBmb3IgdGhlIG5ldyBwc2V1ZG8gZWxlbWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0Lmg6CisgICAgICAgIChSdWxlU2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmN1ZVBzZXVkb1J1bGVzKToKKyAgICAgICAgKiBj
c3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dDo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6IGFuIGFkZGl0aW9uIHRvIHRoZSByYXJl
IGRhdGEgdG8gYmUgYWJsZSB0byBmaW5kIG91dCBpZiB0aGUgbm9kZSBpcyBhIHdlYnZ0dCBub2Rl
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppc1dlYlZU
VE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNXZWJWVFROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsb25lRGF0YUZyb21FbGVtZW50KToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5oOgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1l
bnRSYXJlRGF0YS5oOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20v
Tm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJl
RGF0YSk6CisgICAgICAgIChOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhOjppc1dlYlZUVE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpz
ZXRJc1dlYlZUVE5vZGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6bWFya05vZGVzQXNXZWJWVFROb2Rlcyk6
IG1hcmsgdGhlIGNsb25lZCBub2RlcyBhcyBXZWJWVFQgbm9kZXMuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoVGV4dFRyYWNrQ3VlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorCiAyMDEyLTEyLTA3ICBEaW1hIEdv
cmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBnZW5lcmFsIDo6
Y3VlIHBzZXVkbyBlbGVtZW50IGZvciB0aGUgPHZpZGVvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KaW5kZXggMDNlYjhlOS4uZmExYzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluCkBAIC0xNzMsNiArMTczLDkgQEAgc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lk
KiwgY29uc3QgY2hhciopCiAldG9rZW4gPHN0cmluZz4gVVJJCiAldG9rZW4gPHN0cmluZz4gRlVO
Q1RJT04KICV0b2tlbiA8c3RyaW5nPiBBTllGVU5DVElPTgorI2lmIEVOQUJMRV9WSURFT19UUkFD
SworJXRva2VuIDxzdHJpbmc+IENVRUZVTkNUSU9OCisjZW5kaWYKICV0b2tlbiA8c3RyaW5nPiBO
T1RGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgogJXRva2VuIDxzdHJpbmc+
IE1JTkZVTkNUSU9OCkBAIC0xMzIzLDYgKzEzMjYsMjEgQEAgcHNldWRvOgogICAgICAgICBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKICAgICAgICAgICAgICQkID0gMDsK
ICAgICB9CisjaWYgRU5BQkxFX1ZJREVPX1RSQUNLCisgICAgLy8gdXNlZCBieSA6OmN1ZSg6cGFz
dC86ZnV0dXJlKQorICAgIHwgJzonICc6JyBDVUVGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAoJDUpIHsKKyAgICAg
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAg
ICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgICAgICQk
LT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9y
KCQ1KSk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOworICAgICAgICAgICAgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgICAgICBp
ZiAodHlwZSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKQorICAgICAgICAgICAgICAgICQkID0g
MDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorI2VuZGlmCiAg
ICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBv
cnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/CiAgICAg
Ly8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDgyYWZmZDguLjZiNDllMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCkBAIC05NDU5LDYgKzk0NTksMTAgQEAgaW5saW5lIHZvaWQgQ1NTUGFy
c2VyOjpkZXRlY3RGdW5jdGlvblR5cGVUb2tlbihpbnQgbGVuZ3RoKQogICAgICAgICAgICAgbV90
b2tlbiA9IE5PVEZVTkNUSU9OOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVz
c0VxdWFsKG5hbWVbMF0sICd1JykgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzFd
LCAncicpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVsyXSwgJ2wnKSkKICAgICAg
ICAgICAgIG1fdG9rZW4gPSBVUkk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBl
bHNlIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMF0sICdjJykgJiYgaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzFdLCAndScpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobmFtZVsyXSwgJ2UnKSkKKyAgICAgICAgICAgIG1fdG9rZW4gPSBDVUVGVU5DVElPTjsK
KyNlbmRpZgogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIDk6CkBAIC0xMDU3Niw3ICsxMDU4
MCw4IEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgQXRvbWljU3RyaW5nIGRldGVybWlu
ZWROYW1lc3BhY2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0
ID8gbV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1f
ZGVmYXVsdE5hbWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUo
bmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7CiAgICAg
aWYgKCFzcGVjaWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBzcGVj
aWZpZXJzLT5zZXRUYWcodGFnKTsKKyAgICAgICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpKQorICAgICAgICAgICAgc3BlY2lmaWVycy0+
c2V0VGFnKHRhZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNjAzLDcgKzEwNjA4
LDExIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQ
YXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2VyU2VsZWN0b3IqIHNwZWNpZmllcnMsIENT
U1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpIHx8IG5ld1Nw
ZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpIHsKKyNlbHNl
CiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkpIHsKKyNlbmRp
ZgogICAgICAgICAvLyBVbmtub3duIHBzZXVkbyBlbGVtZW50IGFsd2F5cyBnb2VzIGF0IHRoZSB0
b3Agb2Ygc2VsZWN0b3IgY2hhaW4uCiAgICAgICAgIG5ld1NwZWNpZmllci0+YXBwZW5kVGFnSGlz
dG9yeShDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudCwgc2lua0Zsb2F0aW5nU2VsZWN0b3Io
c3BlY2lmaWVycykpOwogICAgICAgICByZXR1cm4gbmV3U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKaW5kZXggZmRjNjc0Mi4uOTU2ZTQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCkBAIC0yMjAsNiArMjIwLDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBz
ZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICBjYXNlIFBzZXVkb091dE9mUmFuZ2U6CiAgICAg
Y2FzZSBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50OgogICAgIGNhc2UgUHNldWRvV2ViS2l0
Q3VzdG9tRWxlbWVudDoKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9D
dWU6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogICAgIGNhc2UgUHNldWRvTm90
UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMwMiw2ICszMDUsOSBA
QCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuQW5jZXN0b3IsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1hbmNlc3Rv
ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgYW5pbWF0aW5nRnVsbFNjcmVlblRyYW5zaXRpb24sICgi
LXdlYmtpdC1hbmltYXRpbmctZnVsbC1zY3JlZW4tdHJhbnNpdGlvbiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgY3VlLCAoImN1ZSgiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisjZW5kaWYKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5SYW5nZSwgKCJpbi1yYW5nZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgb3V0T2ZSYW5nZSwgKCJvdXQtb2YtcmFuZ2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTM3Nyw2ICszODMsOSBAQCBzdGF0aWMgSGFzaE1hcDxB
dG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9U
eXBlTWFwKAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbkFuY2VzdG9y
LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5BbmNlc3Rvcik7CiAgICAgICAg
IG5hbWVUb1BzZXVkb1R5cGUtPnNldChhbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbi5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbik7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChjdWUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKTsKKyNlbmRpZgogICAgICAg
ICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9JblJhbmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1w
bCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5nZSk7CiAgICAgfQpAQCAtNDIxLDYgKzQz
MCw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBz
d2l0Y2ggKG1fcHNldWRvVHlwZSkgewogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CiAgICAgY2FzZSBQ
c2V1ZG9CZWZvcmU6CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNhc2UgUHNldWRvQ3Vl
OgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9GaXJzdExldHRlcjoKICAgICBjYXNlIFBzZXVkb0Zp
cnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgK
aW5kZXggYWVlNTA3NC4uZGVmZDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE1
Niw2ICsxNTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9PdXRP
ZlJhbmdlLAogICAgICAgICAgICAgUHNldWRvVXNlckFnZW50Q3VzdG9tRWxlbWVudCwKICAgICAg
ICAgICAgIFBzZXVkb1dlYktpdEN1c3RvbUVsZW1lbnQsCisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgICAgICAgICAgUHNldWRvQ3VlLAorI2VuZGlmCiAgICAgICAgIH07CiAKICAgICAgICAg
ZW51bSBNYXJnaW5Cb3hUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCA5YTc4YzBmLi41
ZDNmYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xNDUsNiArMTQ1LDkgQEAgdm9pZCBS
dWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogICAgIHJlcG9ydEF0b21SdWxlTWFwKCZpbmZvLCBtX3RhZ1J1bGVzKTsKICAg
ICByZXBvcnRBdG9tUnVsZU1hcCgmaW5mbywgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fbGlua1BzZXVkb0NsYXNzUnVsZXMpOworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlcihtX2N1ZVBzZXVkb1J1bGVzKTsKKyNlbmRp
ZgogICAgIGluZm8uYWRkTWVtYmVyKG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX3VuaXZlcnNhbFJ1bGVzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BhZ2VS
dWxlcyk7CkBAIC0yMTIsNiArMjE1LDEyIEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1
bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIEFkZFJ1bGVGbGFncyBhZGRSCiAgICAg
ICAgIGFkZFRvUnVsZVNldChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCksIG1fc2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzLCBydWxlRGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CisgICAgICAgIG1fY3VlUHNldWRvUnVsZXMuYXBwZW5k
KHJ1bGVEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAjZW5kaWYKICAgICBpZiAo
U2VsZWN0b3JDaGVja2VyOjppc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKSB7
CiAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewogICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgpAQCAtMzgxLDYgKzM5MCw5IEBAIHZvaWQgUnVsZVNl
dDo6c2hyaW5rVG9GaXQoKQogICAgIHNocmlua01hcFZlY3RvcnNUb0ZpdChtX3RhZ1J1bGVzKTsK
ICAgICBzaHJpbmtNYXBWZWN0b3JzVG9GaXQobV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOwog
ICAgIG1fbGlua1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgbV9jdWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAg
ICAgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNh
bFJ1bGVzLnNocmlua1RvRml0KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5oCmluZGV4IGEyZmJlY2IuLmI1NzQ0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaApA
QCAtMTIyLDYgKzEyMiw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiB0
YWdSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fdGFnUnVsZXMu
Z2V0KGtleSk7IH0KICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBzaGFkb3dQc2V1ZG9FbGVt
ZW50UnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1Bz
ZXVkb0VsZW1lbnRSdWxlcy5nZXQoa2V5KTsgfQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4q
IGxpbmtQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fbGlua1BzZXVkb0NsYXNz
UnVsZXM7IH0KKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY29uc3QgVmVjdG9yPFJ1bGVE
YXRhPiogY3VlUHNldWRvUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV9jdWVQc2V1ZG9SdWxlczsg
fQorI2VuZGlmCiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogZm9jdXNQc2V1ZG9DbGFzc1J1
bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJ1bGVEYXRhPiogdW5pdmVyc2FsUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV91
bml2ZXJzYWxSdWxlczsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VS
dWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJ1bGVzOyB9CkBAIC0xMzYsNiArMTM5LDkgQEAg
cHVibGljOgogICAgIEF0b21SdWxlTWFwIG1fdGFnUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV9z
aGFkb3dQc2V1ZG9FbGVtZW50UnVsZXM7CiAgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2xpbmtQc2V1
ZG9DbGFzc1J1bGVzOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBWZWN0b3I8UnVsZURh
dGE+IG1fY3VlUHNldWRvUnVsZXM7CisjZW5kaWYKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fZm9j
dXNQc2V1ZG9DbGFzc1J1bGVzOwogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV91bml2ZXJzYWxSdWxl
czsKICAgICBWZWN0b3I8U3R5bGVSdWxlUGFnZSo+IG1fcGFnZVJ1bGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBkNDg0MWNhLi5iYjI0OGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMTEzNSw2ICsxMTM1LDIxIEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgZWxzZSBpZiAoc2VsZWN0b3ItPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb1R5cGUo
KSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSB7CisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0IHN1YkNvbnRleHQoY29udGV4dCk7CisgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxl
Y3RvciA9IHRydWU7CisKKyAgICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5P
UFNFVURPOworICAgICAgICBDU1NTZWxlY3RvciogY29uc3QgJiBzZWxlY3RvciA9IGNvbnRleHQu
c2VsZWN0b3I7CisgICAgICAgIGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNlbGVjdG9yLT5z
ZWxlY3Rvckxpc3QoKS0+Zmlyc3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3ViQ29udGV4dC5z
ZWxlY3RvciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJDb250ZXh0LnNlbGVjdG9yKSkgewor
ICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgaWdub3JlRHluYW1pY1Bz
ZXVkbykgPT0gU2VsZWN0b3JNYXRjaGVzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyNlbmRpZgogICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDcyNjMz
MjMuLjdlOWNjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTY0OSw2
ICs2NDksMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhSdWxl
U2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW4KICAgICAgICAgY29sbGVjdE1hdGNo
aW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMocHNldWRvSWQu
aW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIG9wdGlvbnMpOwogICAgIH0K
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9lbGVtZW50LT5pc1dlYlZUVE5v
ZGUoKSkKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KHJ1bGVzLT5jdWVQc2V1
ZG9SdWxlcygpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CisjZW5k
aWYKICAgICAvLyBDaGVjayB3aGV0aGVyIG90aGVyIHR5cGVzIG9mIHJ1bGVzIGFyZSBhcHBsaWNh
YmxlIGluIHRoZSBjdXJyZW50IHRyZWUgc2NvcGUuIENyaXRlcmlhIGZvciB0aGlzOgogICAgIC8v
IGEpIGl0J3MgYSBVQSBydWxlCiAgICAgLy8gYikgdGhlIHRyZWUgc2NvcGUgYWxsb3dzIGF1dGhv
ciBydWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFiMTk5ZjAuLmFmZGJiZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTIyNDgsNyArMjI0OCwxOSBAQCBib29sIEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxk
Q29udGV4dAogICAgIHJldHVybiBDb250YWluZXJOb2RlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNoaWxkQ29udGV4dCk7CiB9CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKK2Jvb2wgRWxlbWVudDo6aXNXZWJWVFROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+aXNXZWJWVFROb2RlKCk7Cit9CisK
K3ZvaWQgRWxlbWVudDo6c2V0SXNXZWJWVFROb2RlKGJvb2wgZmxhZykKK3sKKyAgICBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKS0+c2V0SXNXZWJWVFROb2RlKGZsYWcpOworfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiB2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxs
c2NyZWVuKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGEyMjUzNmEuLjA4N2E5YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNDI3LDYgKzQyNywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNW
RykKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0OwogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgdmlydHVhbCBib29sIGlzV2ViVlRUTm9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
SXNXZWJWVFROb2RlKGJvb2wgZmxhZyk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5k
ZXggNzkwNWNiNS4uYWZjZTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApA
QCAtNTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5DYW52YXNTdWJ0cmVlOyB9CiAgICAgdm9pZCBzZXRJc0luQ2Fu
dmFzU3VidHJlZShib29sIHZhbHVlKSB7IG1faXNJbkNhbnZhc1N1YnRyZWUgPSB2YWx1ZTsgfQog
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6aXNXZWJW
VFROb2RlOworICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNXZWJWVFROb2RlOworI2VuZGlm
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgY29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCgpIHsgcmV0dXJuIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsgfQogICAgIHZv
aWQgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudChib29sIHZhbHVlKSB7IG1fY29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5k
ZXggMjRlZjIzMy4uZTExY2E0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjA5
LDYgKzIwOSw5IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBk
YXRlU29vbkFmdGVyQXR0YWNoKGZhbHNlKQogICAgICAgICAsIG1fc3R5bGVBZmZlY3RlZEJ5RW1w
dHkoZmFsc2UpCiAgICAgICAgICwgbV9pc0luQ2FudmFzU3VidHJlZShmYWxzZSkKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgICAgICwgbV9pc1dlYlZUVE5vZGUoZmFsc2UpCisjZW5kaWYK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgICwgbV9jb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KGZhbHNlKQogI2VuZGlmCkBAIC0zMjcsNiArMzMwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgaXNXZWJW
VFROb2RlKCkgeyByZXR1cm4gbV9pc1dlYlZUVE5vZGU7IH0KKyAgICB2b2lkIHNldElzV2ViVlRU
Tm9kZShib29sIHZhbHVlKSB7IG1faXNXZWJWVFROb2RlID0gdmFsdWU7IH0KKyNlbmRpZgogICAg
IE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAgQ2hpbGROb2RlTGlz
dCogbV9jaGlsZE5vZGVMaXN0OwogICAgIHNob3J0IG1fdGFiSW5kZXg7CkBAIC0zMzYsNiArMzQz
LDkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNv
b25BZnRlckF0dGFjaCA6IDE7CiAgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsK
ICAgICBib29sIG1faXNJbkNhbnZhc1N1YnRyZWUgOiAxOworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICBib29sIG1faXNXZWJWVFROb2RlIDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAy
OGVjOWI3Li4zNmM3YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC00ODcsNiArNDg3LDE0IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjppbnZhbGlkYXRl
Q3VlSW5kZXgoKQogICAgIG1fY3VlSW5kZXggPSBpbnZhbGlkQ3VlSW5kZXg7CiB9CiAKK3ZvaWQg
VGV4dFRyYWNrQ3VlOjptYXJrTm9kZXNBc1dlYlZUVE5vZGVzKE5vZGUgKm9iamVjdCkKK3sKKyAg
ICBmb3IgKE5vZGUgKmNoaWxkID0gb2JqZWN0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICgoRWxlbWVudCAqKSBjaGlsZCktPnNl
dElzV2ViVlRUTm9kZSh0cnVlKTsKKyAgICAgICAgbWFya05vZGVzQXNXZWJWVFROb2RlcyhjaGls
ZCk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1
ZTo6Z2V0Q3VlQXNIVE1MKCkKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVk
RnJhZ21lbnQ7CkBAIC01MDksNiArNTE3LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCiAKICAgICBjbG9uZWRGcmFnbWVudCA9IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbV9kb2N1bWVudEZyYWdtZW50
LT5jbG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOworICAgIG1hcmtOb2Rlc0Fz
V2ViVlRUTm9kZXMoY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIGNsb25lZEZy
YWdtZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCmluZGV4IDhkMGIzNTMuLmE5YzRkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFs
aWRhdGVDdWVJbmRleCgpOwogCiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRD
dWVBc0hUTUwoKTsKKyAgICB2b2lkIG1hcmtOb2Rlc0FzV2ViVlRUTm9kZXMoTm9kZSAqKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBi
b29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAppbmRleCAyOTdlNTk5Li5m
ZWQwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBA
IC0zNjQsNiArMzY0LDcgQEAgdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgY2hpbGQgPSBIVE1MRWxlbWVudDo6
Y3JlYXRlKHFUYWcsIGRvY3VtZW50KTsKIAogICAgICAgICBpZiAoY2hpbGQpIHsKKyAgICAgICAg
ICAgIGNoaWxkLT5zZXRJc1dlYlZUVE5vZGUodHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV90b2tl
bi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkKICAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmli
dXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKG1fdG9rZW4uY2xhc3NlcygpLmRhdGEoKSwgbV90
b2tlbi5jbGFzc2VzKCkuc2l6ZSgpKSk7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05h
bWUocVRhZykpCg==
</data>
<flag name="review"
          id="195329"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178925</attachid>
            <date>2012-12-11 17:14:26 -0800</date>
            <delta_ts>2012-12-11 17:20:43 -0800</delta_ts>
            <desc>Proposed fix 0.4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22628</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmJjNjY2Li4zYjVmOWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MTEgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMSAg
WGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29y
cmVjdCBwb3NpdGlvbiBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4g
cGFnZSBpcyBzY2FsZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggNzlmZjg5OS4u
YTcxYmNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3N0eWxpbmcudnR0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zdHlsaW5nLnZ0dApAQCAtMSw0ICsxLDkgQEAKIFdFQlZUVAogCi0wMDowMC4wMDAgLS0+
IDAwOjA0LjAwMAotTG9ydW0gaXBzdW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisxCisw
MDowMC4wMDAgLS0+IDAwOjAxLjAwMAorTG9ydW0gaXBzdW0KKworMgorMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQsIGNvbnNlY3RldHVy
IDwvYz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkg
dGhlIGNsYXNzIG5hbWUKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQoc2Vla2VkKQorRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDAsIDAp
JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MCwgMTI4LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMDQyMjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisK
KyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHN0eWxlPgorCisg
ICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KKyAgICAgICAgI3Rl
c3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9CisKKyAgICAgICAgPC9zdHlsZT4K
KworICAgICAgICA8c2NyaXB0PgorCisgICAgICAgIHZhciBjdWVOb2RlOworCisgICAgICAgIGZ1
bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1ZU5vZGUgPSB0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3Bhc3Qtbm9kZXMnKS5maXJzdENoaWxkOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yIiwgInJn
YigyNTUsIDAsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3VlTm9kZS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5j
b2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworICAgICAgICAgICAgY3VlTm9kZSA9IGN1ZU5vZGUu
bmV4dFNpYmxpbmc7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IiLCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlIGNsYXNzIG5hbWUiKTsKKyAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4u
L2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgdmlkZW8uaWQgPSAidGVzdHZpZGVvIjsKKyAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkKTsKKyAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRp
bWUgPSAxLjU7IH0pOworICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ibG9hZGVkKCkiPgorICAgICAgICA8dmlkZW8gY29udHJvbHMg
PgorICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0IiBr
aW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTgxZmIzNi4uMTYwZWFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY0IEBACisyMDEyLTEyLTA4ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBtYXRjaGluZyBjdWUgYnkgdGhlIGNsYXNzIG5hbWUgd2l0aCA6
OmN1ZSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0MTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIDo6Y3VlKCkgcHNldWRvLWVsZW1lbnQgd2l0aCBh
biBhcmd1bWVudCB0aGF0IG1heSBob2xkIGEgc2ltcGxlIHNlbGVjdG9yIGxpc3QuCisgICAgICAg
IFRoaXMgZW5hYmxlcyBtYXRjaGluZyBjdWUgb2JqZWN0cyBieSB0aGUgY2xhc3MgbmFtZS4KKwor
ICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorCisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjogc3VwcG9ydCBwYXJzaW5nIHRoZSA6OmN1ZSgpIHdp
dGggYW4gYXJndW1lbnQuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKTogdG9rZW5pemUgdGhl
ICdjdWUnLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKTogZG8gbm90IHNldCB0aGUgdGFnIGZvciB0aGUgY3VlIHBzZXVkby1lbGVt
ZW50IGJlY2F1c2UKKyAgICAgICAgdGhlIDo6Y3VlIG1heSBtYXRjaCBlbGVtZW50cyB3aXRoIGRp
ZmZlcmVudCB0YWdzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZp
ZXJzKTogdGhlIGJlaGF2aW9yIGZvciB0aGUgUHNldWRvQ3VlIHNlbGVjdG9yIHNob3VsZCBiZSBz
YW1lIGFzIGZvcgorICAgICAgICB1bmtub3duIHBzZXVkbyBlbGVtZW50cyAtIHRoZSBwc2V1ZG8t
ZWxlbWVudCBzaG91bGQgc3RheSBvbiB0b3Agb2YgdGhlIHNlbGVjdG9yIGNoYWluLgorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IGFkZGVkIHRoZSB0eXBlIGRldGVjdGlvbiBmb3IgdGhl
IG5ldyBzZWxlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6
CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOiBhZGQgYSBuZXcgbGlzdCB0byBo
b2xkIGFsbCB0aGUgcnVsZXNldHMgZm9yIHRoZSBuZXcgcHNldWRvIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBhbiBhZGRpdGlvbiB0byB0aGUgcmFyZSBkYXRh
IHRvIGJlIGFibGUgdG8gZmluZCBvdXQgaWYgdGhlIG5vZGUgaXMgYSB3ZWJ2dHQgbm9kZS4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNXZWJWVFROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzV2ViVlRUTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05vZGVS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEp
OgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6aXNXZWJWVFROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0SXNX
ZWJWVFROb2RlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtOb2Rlc0FzV2ViVlRUTm9kZXMpOiBtYXJr
IHRoZSBjbG9uZWQgbm9kZXMgYXMgV2ViVlRUIG5vZGVzLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMi0xMi0xMSAgWGlhbnpodSBXYW5n
ICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29ycmVjdCBwb3NpdGlv
biBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4gcGFnZSBpcyBzY2Fs
ZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRl
eCAwM2ViOGU5Li5mYTFjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTE3
Myw2ICsxNzMsOSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBj
aGFyKikKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgogJXRv
a2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCisjaWYgRU5BQkxFX1ZJREVPX1RSQUNLCisldG9rZW4g
PHN0cmluZz4gQ1VFRlVOQ1RJT04KKyNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9O
CiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJ
T04KQEAgLTEzMjMsNiArMTMyNiwyMSBAQCBwc2V1ZG86CiAgICAgICAgIGlmICh0eXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQogICAgICAgICAgICAgJCQgPSAwOwogICAgIH0KKyNp
ZiBFTkFCTEVfVklERU9fVFJBQ0sKKyAgICAvLyB1c2VkIGJ5IDo6Y3VlKDpwYXN0LzpmdXR1cmUp
CisgICAgfCAnOicgJzonIENVRUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9s
aXN0IG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICgkNSkgeworICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2Vs
ZWN0b3JWZWN0b3IoKnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDUpKTsKKyAg
ICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9
IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2Ug
YnkgOi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmlj
IHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2lt
cGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKaW5kZXggZTEyNDFhOC4uZDc3YjYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTk0NzcsNiArOTQ3NywxMCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmRldGVj
dEZ1bmN0aW9uVHlwZVRva2VuKGludCBsZW5ndGgpCiAgICAgICAgICAgICBtX3Rva2VuID0gTk9U
RlVOQ1RJT047CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFt
ZVswXSwgJ3UnKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMV0sICdyJykgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzJdLCAnbCcpKQogICAgICAgICAgICAgbV90
b2tlbiA9IFVSSTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGVsc2UgaWYgKGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVswXSwgJ2MnKSAmJiBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG5hbWVbMV0sICd1JykgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1l
WzJdLCAnZScpKQorICAgICAgICAgICAgbV90b2tlbiA9IENVRUZVTkNUSU9OOworI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgOToKQEAgLTEwNTk0LDcgKzEwNTk4LDggQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFj
ZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxl
U2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0TmFt
ZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQ
cmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKICAgICBpZiAoIXNwZWNp
ZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIHNwZWNpZmllcnMtPnNl
dFRhZyh0YWcpOworICAgICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9UeXBlKCkgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb0N1ZSkpCisgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFn
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2MjEsNyArMTA2MjYsMTEgQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3BlY2lmaWVyLT5w
c2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgeworI2Vsc2UKICAgICBpZiAo
bmV3U3BlY2lmaWVyLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgeworI2VuZGlmCiAgICAgICAg
IC8vIFVua25vd24gcHNldWRvIGVsZW1lbnQgYWx3YXlzIGdvZXMgYXQgdGhlIHRvcCBvZiBzZWxl
Y3RvciBjaGFpbi4KICAgICAgICAgbmV3U3BlY2lmaWVyLT5hcHBlbmRUYWdIaXN0b3J5KENTU1Nl
bGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50LCBzaW5rRmxvYXRpbmdTZWxlY3RvcihzcGVjaWZpZXJz
KSk7CiAgICAgICAgIHJldHVybiBuZXdTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBmZGM2NzQyLi45NTZlNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKQEAgLTIyMCw2ICsyMjAsOSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNl
dWRvVHlwZSB0eXBlKQogICAgIGNhc2UgUHNldWRvT3V0T2ZSYW5nZToKICAgICBjYXNlIFBzZXVk
b1VzZXJBZ2VudEN1c3RvbUVsZW1lbnQ6CiAgICAgY2FzZSBQc2V1ZG9XZWJLaXRDdXN0b21FbGVt
ZW50OgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIFBzZXVkb0N1ZToKKyNlbmRp
ZgogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAgICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzAyLDYgKzMwNSw5IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVU
b1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1
bGxTY3JlZW5BbmNlc3RvciwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbiwgKCItd2Via2l0LWFu
aW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlKCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
dXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKIApAQCAtMzc3LDYgKzM4Myw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuQW5jZXN0b3IuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkFuY2VzdG9yKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uKTsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGN1ZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpOworI2VuZGlmCiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChpblJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0luUmFuZ2Up
OwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob3V0T2ZSYW5nZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9PdXRPZlJhbmdlKTsKICAgICB9CkBAIC00MjEsNiArNDMwLDkgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIHN3aXRjaCAobV9w
c2V1ZG9UeXBlKSB7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKICAgICBjYXNlIFBzZXVkb0JlZm9y
ZToKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisjZW5kaWYK
ICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgog
ICAgICAgICBjb21wYXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhZWU1
MDc0Li5kZWZkMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMTU2LDYgKzE1Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb091dE9mUmFuZ2UsCiAg
ICAgICAgICAgICBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50LAogICAgICAgICAgICAgUHNl
dWRvV2ViS2l0Q3VzdG9tRWxlbWVudCwKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAg
ICAgICBQc2V1ZG9DdWUsCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdp
bkJveFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IDlhNzhjMGYuLjVkM2ZjOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE0NSw2ICsxNDUsOSBAQCB2b2lkIFJ1bGVTZXQ6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgcmVwb3J0QXRvbVJ1bGVNYXAoJmluZm8sIG1fdGFnUnVsZXMpOwogICAgIHJlcG9ydEF0
b21SdWxlTWFwKCZpbmZvLCBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9saW5rUHNldWRvQ2xhc3NSdWxlcyk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlUHNldWRvUnVsZXMpOworI2VuZGlmCiAgICAgaW5m
by5hZGRNZW1iZXIobV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fdW5pdmVyc2FsUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZVJ1bGVzKTsKQEAg
LTIxMiw2ICsyMTUsMTIgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgYWRkVG9S
dWxlU2V0KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVs
ZXMsIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIGlmIChzZWxlY3Rvci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DdWUpIHsKKyAgICAgICAgbV9jdWVQc2V1ZG9SdWxlcy5hcHBlbmQocnVsZURhdGEp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICNlbmRpZgogICAgIGlmIChTZWxlY3RvckNo
ZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpIHsKICAgICAgICAg
c3dpdGNoIChzZWxlY3Rvci0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0xpbms6CkBAIC0zODEsNiArMzkwLDkgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtU
b0ZpdCgpCiAgICAgc2hyaW5rTWFwVmVjdG9yc1RvRml0KG1fdGFnUnVsZXMpOwogICAgIHNocmlu
a01hcFZlY3RvcnNUb0ZpdChtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk7CiAgICAgbV9saW5r
UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyAgICBtX2N1ZVBzZXVkb1J1bGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKICAgICBtX2ZvY3Vz
UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fdW5pdmVyc2FsUnVsZXMuc2hy
aW5rVG9GaXQoKTsKICAgICBtX3BhZ2VSdWxlcy5zaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmgKaW5kZXggYTJmYmVjYi4uYjU3NDQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCkBAIC0xMjIsNiAr
MTIyLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHRhZ1J1bGVzKEF0
b21pY1N0cmluZ0ltcGwqIGtleSkgY29uc3QgeyByZXR1cm4gbV90YWdSdWxlcy5nZXQoa2V5KTsg
fQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhB
dG9taWNTdHJpbmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UHNldWRvRWxlbWVu
dFJ1bGVzLmdldChrZXkpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogbGlua1BzZXVk
b0NsYXNzUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV9saW5rUHNldWRvQ2xhc3NSdWxlczsgfQor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBjdWVQ
c2V1ZG9SdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2N1ZVBzZXVkb1J1bGVzOyB9CisjZW5kaWYK
ICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBmb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSBjb25z
dCB7IHJldHVybiAmbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8
UnVsZURhdGE+KiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1
bGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgcGFnZVJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlUnVsZXM7IH0KQEAgLTEzNiw2ICsxMzksOSBAQCBwdWJsaWM6CiAg
ICAgQXRvbVJ1bGVNYXAgbV90YWdSdWxlczsKICAgICBBdG9tUnVsZU1hcCBtX3NoYWRvd1BzZXVk
b0VsZW1lbnRSdWxlczsKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fbGlua1BzZXVkb0NsYXNzUnVs
ZXM7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIFZlY3RvcjxSdWxlRGF0YT4gbV9jdWVQ
c2V1ZG9SdWxlczsKKyNlbmRpZgogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV9mb2N1c1BzZXVkb0Ns
YXNzUnVsZXM7CiAgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX3VuaXZlcnNhbFJ1bGVzOwogICAgIFZl
Y3RvcjxTdHlsZVJ1bGVQYWdlKj4gbV9wYWdlUnVsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IDBjMTQxOTguLjlmY2IzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMTM2LDYgKzExMzYsMjEgQEAgYm9vbCBTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNv
bnRleHQsIGMKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyAgICBlbHNlIGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBzZWxlY3Rvci0+cHNldWRvVHlwZSgpID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DdWUpIHsKKyAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgc3Vi
Q29udGV4dChjb250ZXh0KTsKKyAgICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1
ZTsKKworICAgICAgICBQc2V1ZG9JZCBpZ25vcmVEeW5hbWljUHNldWRvID0gTk9QU0VVRE87Cisg
ICAgICAgIENTU1NlbGVjdG9yKiBjb25zdCAmIHNlbGVjdG9yID0gY29udGV4dC5zZWxlY3RvcjsK
KyAgICAgICAgZm9yIChzdWJDb250ZXh0LnNlbGVjdG9yID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlz
dCgpLT5maXJzdCgpOyBzdWJDb250ZXh0LnNlbGVjdG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0g
Q1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YkNvbnRleHQuc2VsZWN0b3IpKSB7CisgICAgICAgICAg
ICBpZiAoY2hlY2tTZWxlY3RvcihzdWJDb250ZXh0LCBpZ25vcmVEeW5hbWljUHNldWRvKSA9PSBT
ZWxlY3Rvck1hdGNoZXMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCiAg
ICAgLy8gIyMjIGFkZCB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLi4uCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMzhjNGU3OS4uZjdlZmU2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjQ5LDYgKzY0OSwxMCBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVTZXQqIHJ1bGVz
LCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbgogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QocnVsZXMtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5pbXBsKCkpLCBm
aXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgfQogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChtX2VsZW1lbnQtPmlzV2ViVlRUTm9kZSgpKQorICAg
ICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmN1ZVBzZXVkb1J1bGVzKCks
IGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyNlbmRpZgogICAgIC8v
IENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhl
IGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEgZm9yIHRoaXM6CiAgICAgLy8gYSkgaXQncyBh
IFVBIHJ1bGUKICAgICAvLyBiKSB0aGUgdHJlZSBzY29wZSBhbGxvd3MgYXV0aG9yIHJ1bGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzViYmU1My4uMDYwN2RiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMjI3MCw3ICsyMjcwLDE5IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0CiAg
ICAgcmV0dXJuIENvbnRhaW5lck5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRD
b250ZXh0KTsKIH0KICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorYm9v
bCBFbGVtZW50Ojppc1dlYlZUVE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0
YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5pc1dlYlZUVE5vZGUoKTsKK30KKwordm9pZCBFbGVt
ZW50OjpzZXRJc1dlYlZUVE5vZGUoYm9vbCBmbGFnKQoreworICAgIGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpLT5zZXRJc1dlYlZUVE5vZGUoZmxhZyk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjJlYmI1NS4uYmI4Mzc5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCkBAIC00MzEsNiArNDMxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySGFzUGVuZGlu
Z1Jlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsg
fTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgaXNXZWJWVFRO
b2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJc1dlYlZUVE5vZGUoYm9vbCBmbGFnKTsKKyNlbmRp
ZgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBlbnVtIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAxOTdjMjQwLi5hODRiMzAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01Myw2ICs1MywxMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkNhbnZhc1N1YnRy
ZWU7IH0KICAgICB2b2lkIHNldElzSW5DYW52YXNTdWJ0cmVlKGJvb2wgdmFsdWUpIHsgbV9pc0lu
Q2FudmFzU3VidHJlZSA9IHZhbHVlOyB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
dXNpbmcgTm9kZVJhcmVEYXRhOjppc1dlYlZUVE5vZGU7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRh
OjpzZXRJc1dlYlZUVE5vZGU7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBkMjU5MzcxLi5hNTVmYzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNTQsNiArMjU0LDkgQEAgcHVibGljOgogICAgICAgICAs
IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCiAgICAg
ICAgICwgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAgICAgICAgLCBtX2lzSW5DYW52
YXNTdWJ0cmVlKGZhbHNlKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgLCBtX2lz
V2ViVlRUTm9kZShmYWxzZSkKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICAgICAgLCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKQEAgLTM2
NywxMiArMzcwLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorICAgIGJvb2wgaXNXZWJWVFROb2RlKCkgeyByZXR1cm4gbV9pc1dlYlZUVE5v
ZGU7IH0KKyAgICB2b2lkIHNldElzV2ViVlRUTm9kZShib29sIHZhbHVlKSB7IG1faXNXZWJWVFRO
b2RlID0gdmFsdWU7IH0KKyNlbmRpZgogICAgIHNob3J0IG1fdGFiSW5kZXg7CiAgICAgdW5zaWdu
ZWQgc2hvcnQgbV9jaGlsZEluZGV4OwogICAgIGJvb2wgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0
bHkgOiAxOwogICAgIGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0
dGFjaCA6IDE7CiAgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKICAgICBib29s
IG1faXNJbkNhbnZhc1N1YnRyZWUgOiAxOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBi
b29sIG1faXNXZWJWVFROb2RlIDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAyOGVjOWI3Li5k
OGEwYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgpAQCAtNDg3LDYgKzQ4OCwxMiBAQCB2b2lkIFRl
eHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkKICAgICBtX2N1ZUluZGV4ID0gaW52YWxp
ZEN1ZUluZGV4OwogfQogCit2b2lkIFRleHRUcmFja0N1ZTo6bWFya05vZGVzQXNXZWJWVFROb2Rl
cyhOb2RlKiByb290KQoreworICAgIGZvciAoTm9kZSogY2hpbGQgPSByb290LT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY2hpbGQsIHJvb3QpKQorICAg
ICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY2hpbGQpLT5zZXRJc1dlYlZUVE5vZGUodHJ1ZSk7
Cit9CisKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVB
c0hUTUwoKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsK
QEAgLTUwOSw2ICs1MTYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFj
a0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKIAogICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFn
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2RvY3VtZW50RnJhZ21lbnQtPmNsb25lQ2hp
bGROb2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CisgICAgbWFya05vZGVzQXNXZWJWVFROb2Rl
cyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVs
ZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5kZXgg
OGQwYjM1My4uOGVlZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUN1ZUlu
ZGV4KCk7CiAKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgp
OworICAgIHZvaWQgbWFya05vZGVzQXNXZWJWVFROb2RlcyhOb2RlKik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uZmVkMDM2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzY0LDYgKzM2
NCw3IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxVGFn
LCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBjaGlsZC0+
c2V0SXNXZWJWVFROb2RlKHRydWUpOwogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3Nlcygp
LnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3Nl
cygpLnNpemUoKSkpOwogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHFUYWcpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178927</attachid>
            <date>2012-12-11 17:20:43 -0800</date>
            <delta_ts>2012-12-11 18:06:15 -0800</delta_ts>
            <desc>Proposed fix 0.5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22603</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmJjNjY2Li4zYjVmOWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MTEgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMSAg
WGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29y
cmVjdCBwb3NpdGlvbiBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4g
cGFnZSBpcyBzY2FsZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggNzlmZjg5OS4u
YTcxYmNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3N0eWxpbmcudnR0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zdHlsaW5nLnZ0dApAQCAtMSw0ICsxLDkgQEAKIFdFQlZUVAogCi0wMDowMC4wMDAgLS0+
IDAwOjA0LjAwMAotTG9ydW0gaXBzdW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisxCisw
MDowMC4wMDAgLS0+IDAwOjAxLjAwMAorTG9ydW0gaXBzdW0KKworMgorMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQsIGNvbnNlY3RldHVy
IDwvYz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkg
dGhlIGNsYXNzIG5hbWUKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQoc2Vla2VkKQorRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDAsIDAp
JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MCwgMTI4LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMDQyMjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisK
KyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHN0eWxlPgorCisg
ICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KKyAgICAgICAgI3Rl
c3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9CisKKyAgICAgICAgPC9zdHlsZT4K
KworICAgICAgICA8c2NyaXB0PgorCisgICAgICAgIHZhciBjdWVOb2RlOworCisgICAgICAgIGZ1
bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1ZU5vZGUgPSB0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3Bhc3Qtbm9kZXMnKS5maXJzdENoaWxkOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yIiwgInJn
YigyNTUsIDAsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3VlTm9kZS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5j
b2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworICAgICAgICAgICAgY3VlTm9kZSA9IGN1ZU5vZGUu
bmV4dFNpYmxpbmc7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IiLCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlIGNsYXNzIG5hbWUiKTsKKyAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4u
L2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgdmlkZW8uaWQgPSAidGVzdHZpZGVvIjsKKyAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkKTsKKyAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRp
bWUgPSAxLjU7IH0pOworICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ibG9hZGVkKCkiPgorICAgICAgICA8dmlkZW8gY29udHJvbHMg
PgorICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0IiBr
aW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTgxZmIzNi4uMTYwZWFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY0IEBACisyMDEyLTEyLTA4ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBtYXRjaGluZyBjdWUgYnkgdGhlIGNsYXNzIG5hbWUgd2l0aCA6
OmN1ZSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0MTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIDo6Y3VlKCkgcHNldWRvLWVsZW1lbnQgd2l0aCBh
biBhcmd1bWVudCB0aGF0IG1heSBob2xkIGEgc2ltcGxlIHNlbGVjdG9yIGxpc3QuCisgICAgICAg
IFRoaXMgZW5hYmxlcyBtYXRjaGluZyBjdWUgb2JqZWN0cyBieSB0aGUgY2xhc3MgbmFtZS4KKwor
ICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorCisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjogc3VwcG9ydCBwYXJzaW5nIHRoZSA6OmN1ZSgpIHdp
dGggYW4gYXJndW1lbnQuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKTogdG9rZW5pemUgdGhl
ICdjdWUnLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKTogZG8gbm90IHNldCB0aGUgdGFnIGZvciB0aGUgY3VlIHBzZXVkby1lbGVt
ZW50IGJlY2F1c2UKKyAgICAgICAgdGhlIDo6Y3VlIG1heSBtYXRjaCBlbGVtZW50cyB3aXRoIGRp
ZmZlcmVudCB0YWdzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZp
ZXJzKTogdGhlIGJlaGF2aW9yIGZvciB0aGUgUHNldWRvQ3VlIHNlbGVjdG9yIHNob3VsZCBiZSBz
YW1lIGFzIGZvcgorICAgICAgICB1bmtub3duIHBzZXVkbyBlbGVtZW50cyAtIHRoZSBwc2V1ZG8t
ZWxlbWVudCBzaG91bGQgc3RheSBvbiB0b3Agb2YgdGhlIHNlbGVjdG9yIGNoYWluLgorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IGFkZGVkIHRoZSB0eXBlIGRldGVjdGlvbiBmb3IgdGhl
IG5ldyBzZWxlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6
CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOiBhZGQgYSBuZXcgbGlzdCB0byBo
b2xkIGFsbCB0aGUgcnVsZXNldHMgZm9yIHRoZSBuZXcgcHNldWRvIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBhbiBhZGRpdGlvbiB0byB0aGUgcmFyZSBkYXRh
IHRvIGJlIGFibGUgdG8gZmluZCBvdXQgaWYgdGhlIG5vZGUgaXMgYSB3ZWJ2dHQgbm9kZS4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNXZWJWVFROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzV2ViVlRUTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05vZGVS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEp
OgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6aXNXZWJWVFROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0SXNX
ZWJWVFROb2RlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtOb2Rlc0FzV2ViVlRUTm9kZXMpOiBtYXJr
IHRoZSBjbG9uZWQgbm9kZXMgYXMgV2ViVlRUIG5vZGVzLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMi0xMi0xMSAgWGlhbnpodSBXYW5n
ICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29ycmVjdCBwb3NpdGlv
biBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4gcGFnZSBpcyBzY2Fs
ZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRl
eCAwM2ViOGU5Li5mYTFjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTE3
Myw2ICsxNzMsOSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBj
aGFyKikKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgogJXRv
a2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCisjaWYgRU5BQkxFX1ZJREVPX1RSQUNLCisldG9rZW4g
PHN0cmluZz4gQ1VFRlVOQ1RJT04KKyNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9O
CiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJ
T04KQEAgLTEzMjMsNiArMTMyNiwyMSBAQCBwc2V1ZG86CiAgICAgICAgIGlmICh0eXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQogICAgICAgICAgICAgJCQgPSAwOwogICAgIH0KKyNp
ZiBFTkFCTEVfVklERU9fVFJBQ0sKKyAgICAvLyB1c2VkIGJ5IDo6Y3VlKDpwYXN0LzpmdXR1cmUp
CisgICAgfCAnOicgJzonIENVRUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9s
aXN0IG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICgkNSkgeworICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2Vs
ZWN0b3JWZWN0b3IoKnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDUpKTsKKyAg
ICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9
IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2Ug
YnkgOi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmlj
IHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2lt
cGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKaW5kZXggZTEyNDFhOC4uZDc3YjYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTk0NzcsNiArOTQ3NywxMCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmRldGVj
dEZ1bmN0aW9uVHlwZVRva2VuKGludCBsZW5ndGgpCiAgICAgICAgICAgICBtX3Rva2VuID0gTk9U
RlVOQ1RJT047CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFt
ZVswXSwgJ3UnKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMV0sICdyJykgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzJdLCAnbCcpKQogICAgICAgICAgICAgbV90
b2tlbiA9IFVSSTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGVsc2UgaWYgKGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVswXSwgJ2MnKSAmJiBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG5hbWVbMV0sICd1JykgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1l
WzJdLCAnZScpKQorICAgICAgICAgICAgbV90b2tlbiA9IENVRUZVTkNUSU9OOworI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgOToKQEAgLTEwNTk0LDcgKzEwNTk4LDggQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFj
ZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxl
U2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0TmFt
ZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQ
cmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKICAgICBpZiAoIXNwZWNp
ZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7Ci0gICAgICAgIHNwZWNpZmllcnMtPnNl
dFRhZyh0YWcpOworICAgICAgICBpZiAoIShzcGVjaWZpZXJzLT5wc2V1ZG9UeXBlKCkgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb0N1ZSkpCisgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFn
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2MjEsNyArMTA2MjYsMTEgQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3BlY2lmaWVyLT5w
c2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgeworI2Vsc2UKICAgICBpZiAo
bmV3U3BlY2lmaWVyLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgeworI2VuZGlmCiAgICAgICAg
IC8vIFVua25vd24gcHNldWRvIGVsZW1lbnQgYWx3YXlzIGdvZXMgYXQgdGhlIHRvcCBvZiBzZWxl
Y3RvciBjaGFpbi4KICAgICAgICAgbmV3U3BlY2lmaWVyLT5hcHBlbmRUYWdIaXN0b3J5KENTU1Nl
bGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50LCBzaW5rRmxvYXRpbmdTZWxlY3RvcihzcGVjaWZpZXJz
KSk7CiAgICAgICAgIHJldHVybiBuZXdTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBmZGM2NzQyLi45NTZlNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKQEAgLTIyMCw2ICsyMjAsOSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNl
dWRvVHlwZSB0eXBlKQogICAgIGNhc2UgUHNldWRvT3V0T2ZSYW5nZToKICAgICBjYXNlIFBzZXVk
b1VzZXJBZ2VudEN1c3RvbUVsZW1lbnQ6CiAgICAgY2FzZSBQc2V1ZG9XZWJLaXRDdXN0b21FbGVt
ZW50OgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIFBzZXVkb0N1ZToKKyNlbmRp
ZgogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAgICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzAyLDYgKzMwNSw5IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVU
b1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1
bGxTY3JlZW5BbmNlc3RvciwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbiwgKCItd2Via2l0LWFu
aW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlKCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
dXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKIApAQCAtMzc3LDYgKzM4Myw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuQW5jZXN0b3IuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkFuY2VzdG9yKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uKTsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGN1ZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpOworI2VuZGlmCiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChpblJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0luUmFuZ2Up
OwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob3V0T2ZSYW5nZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9PdXRPZlJhbmdlKTsKICAgICB9CkBAIC00MjEsNiArNDMwLDkgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIHN3aXRjaCAobV9w
c2V1ZG9UeXBlKSB7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKICAgICBjYXNlIFBzZXVkb0JlZm9y
ZToKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisjZW5kaWYK
ICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgog
ICAgICAgICBjb21wYXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhZWU1
MDc0Li5kZWZkMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMTU2LDYgKzE1Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb091dE9mUmFuZ2UsCiAg
ICAgICAgICAgICBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50LAogICAgICAgICAgICAgUHNl
dWRvV2ViS2l0Q3VzdG9tRWxlbWVudCwKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAg
ICAgICBQc2V1ZG9DdWUsCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdp
bkJveFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IDlhNzhjMGYuLjE0MmNlZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE0NSw2ICsxNDUsOSBAQCB2b2lkIFJ1bGVTZXQ6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgcmVwb3J0QXRvbVJ1bGVNYXAoJmluZm8sIG1fdGFnUnVsZXMpOwogICAgIHJlcG9ydEF0
b21SdWxlTWFwKCZpbmZvLCBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9saW5rUHNldWRvQ2xhc3NSdWxlcyk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlUHNldWRvUnVsZXMpOworI2VuZGlmCiAgICAgaW5m
by5hZGRNZW1iZXIobV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fdW5pdmVyc2FsUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZVJ1bGVzKTsKQEAg
LTIxMiw2ICsyMTUsMTIgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgYWRkVG9S
dWxlU2V0KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVs
ZXMsIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgaWYgKHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0N1ZSkgeworICAgICAgICBtX2N1ZVBzZXVkb1J1bGVzLmFwcGVuZChydWxlRGF0YSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjpp
c0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKSB7CiAgICAgICAgIHN3aXRjaCAo
c2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9MaW5rOgpAQCAtMzgxLDYgKzM5MCw5IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQog
ICAgIHNocmlua01hcFZlY3RvcnNUb0ZpdChtX3RhZ1J1bGVzKTsKICAgICBzaHJpbmtNYXBWZWN0
b3JzVG9GaXQobV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOwogICAgIG1fbGlua1BzZXVkb0Ns
YXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgbV9j
dWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1c1BzZXVkb0Ns
YXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNocmlua1RvRml0
KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCmluZGV4
IGEyZmJlY2IuLmI1NzQ0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaApAQCAtMTIyLDYgKzEyMiw5IEBA
IHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiB0YWdSdWxlcyhBdG9taWNTdHJp
bmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KICAgICBj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBzaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoQXRvbWljU3Ry
aW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5n
ZXQoa2V5KTsgfQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGxpbmtQc2V1ZG9DbGFzc1J1
bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fbGlua1BzZXVkb0NsYXNzUnVsZXM7IH0KKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogY3VlUHNldWRvUnVs
ZXMoKSBjb25zdCB7IHJldHVybiAmbV9jdWVQc2V1ZG9SdWxlczsgfQorI2VuZGlmCiAgICAgY29u
c3QgVmVjdG9yPFJ1bGVEYXRhPiogZm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1
cm4gJm1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRh
PiogdW5pdmVyc2FsUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV91bml2ZXJzYWxSdWxlczsgfQog
ICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVJ1bGVzOyB9CkBAIC0xMzYsNiArMTM5LDkgQEAgcHVibGljOgogICAgIEF0b21S
dWxlTWFwIG1fdGFnUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV9zaGFkb3dQc2V1ZG9FbGVtZW50
UnVsZXM7CiAgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2xpbmtQc2V1ZG9DbGFzc1J1bGVzOworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBWZWN0b3I8UnVsZURhdGE+IG1fY3VlUHNldWRvUnVs
ZXM7CisjZW5kaWYKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVz
OwogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV91bml2ZXJzYWxSdWxlczsKICAgICBWZWN0b3I8U3R5
bGVSdWxlUGFnZSo+IG1fcGFnZVJ1bGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAppbmRleCAwYzE0MTk4Li4zNzIwYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcApAQCAtMTEzNiw2ICsxMTM2LDIwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgZWxzZSBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ3VlKSB7CisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQo
Y29udGV4dCk7CisgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CisKKyAg
ICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOworICAgICAgICBD
U1NTZWxlY3RvciogY29uc3QgJiBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7CisgICAgICAg
IGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKS0+Zmly
c3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3ViQ29udGV4dC5zZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzdWJDb250ZXh0LnNlbGVjdG9yKSkgeworICAgICAgICAgICAgaWYgKGNo
ZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbykgPT0gU2VsZWN0b3JN
YXRjaGVzKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKICAgICAvLyAjIyMgYWRkIHRoZSByZXN0IG9m
IHRoZSBjaGVja3MuLi4KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCAzOGM0ZTc5Li5mN2VmZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC02NDksNiArNjQ5LDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGlu
CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+c2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4LCBvcHRpb25zKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KG1fZWxlbWVudC0+aXNXZWJWVFROb2RlKCkpCisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChydWxlcy0+Y3VlUHNldWRvUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxl
SW5kZXgsIG9wdGlvbnMpOworI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBl
cyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0
ZXJpYSBmb3IgdGhpczoKICAgICAvLyBhKSBpdCdzIGEgVUEgcnVsZQogICAgIC8vIGIpIHRoZSB0
cmVlIHNjb3BlIGFsbG93cyBhdXRob3IgcnVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAz
NWJiZTUzLi4wNjA3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMjcwLDcgKzIyNzAs
MTkgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQKICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogI2VuZGlmCi0gICAg
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIEVsZW1lbnQ6OmlzV2ViVlRUTm9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCkt
PmlzV2ViVlRUTm9kZSgpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzV2ViVlRUTm9kZShib29s
IGZsYWcpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldElzV2ViVlRUTm9kZShm
bGFnKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogdm9pZCBFbGVt
ZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2
MmViYjU1Li5iYjgzNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQzMSw2ICs0MzEsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzKCk7CiAgICAgdmlydHVh
bCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9OwogI2VuZGlmCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisgICAgYm9vbCBpc1dlYlZUVE5vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dElzV2ViVlRUTm9kZShib29sIGZsYWcpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmlu
ZGV4IDE5N2MyNDAuLmE4NGIzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
QEAgLTUzLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5DYW52YXNTdWJ0cmVlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luQ2FudmFzU3VidHJlZTsgfQogICAgIHZvaWQgc2V0SXNJbkNh
bnZhc1N1YnRyZWUoYm9vbCB2YWx1ZSkgeyBtX2lzSW5DYW52YXNTdWJ0cmVlID0gdmFsdWU7IH0K
IAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OmlzV2Vi
VlRUTm9kZTsKKyAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldElzV2ViVlRUTm9kZTsKKyNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KICAgICB2
b2lkIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5z
RnVsbFNjcmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmlu
ZGV4IGQyNTkzNzEuLmE1NWZjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI1
NCw2ICsyNTQsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVw
ZGF0ZVNvb25BZnRlckF0dGFjaChmYWxzZSkKICAgICAgICAgLCBtX3N0eWxlQWZmZWN0ZWRCeUVt
cHR5KGZhbHNlKQogICAgICAgICAsIG1faXNJbkNhbnZhc1N1YnRyZWUoZmFsc2UpCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgICAgICAsIG1faXNXZWJWVFROb2RlKGZhbHNlKQorI2VuZGlm
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICAsIG1fY29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudChmYWxzZSkKICNlbmRpZgpAQCAtMzY3LDEyICszNzAsMTkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByb3RlY3RlZDoKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgYm9vbCBpc1dl
YlZUVE5vZGUoKSB7IHJldHVybiBtX2lzV2ViVlRUTm9kZTsgfQorICAgIHZvaWQgc2V0SXNXZWJW
VFROb2RlKGJvb2wgdmFsdWUpIHsgbV9pc1dlYlZUVE5vZGUgPSB2YWx1ZTsgfQorI2VuZGlmCiAg
ICAgc2hvcnQgbV90YWJJbmRleDsKICAgICB1bnNpZ25lZCBzaG9ydCBtX2NoaWxkSW5kZXg7CiAg
ICAgYm9vbCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA6IDE7CiAgICAgYm9vbCBtX25lZWRz
Rm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoIDogMTsKICAgICBib29sIG1fc3R5
bGVBZmZlY3RlZEJ5RW1wdHkgOiAxOwogICAgIGJvb2wgbV9pc0luQ2FudmFzU3VidHJlZSA6IDE7
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgbV9pc1dlYlZUVE5vZGUgOiAxOwor
I2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGJvb2wgbV9jb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50IDogMTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCmluZGV4IDI4ZWM5YjcuLmQ4YTBhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCkBAIC00ODcsNiArNDg4LDEyIEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjppbnZhbGlkYXRlQ3Vl
SW5kZXgoKQogICAgIG1fY3VlSW5kZXggPSBpbnZhbGlkQ3VlSW5kZXg7CiB9CiAKK3ZvaWQgVGV4
dFRyYWNrQ3VlOjptYXJrTm9kZXNBc1dlYlZUVE5vZGVzKE5vZGUqIHJvb3QpCit7CisgICAgZm9y
IChOb2RlKiBjaGlsZCA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gTm9kZVRy
YXZlcnNhbDo6bmV4dChjaGlsZCwgcm9vdCkpCisgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQq
PihjaGlsZCktPnNldElzV2ViVlRUTm9kZSh0cnVlKTsKK30KKwogUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCiB7CiAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50OwpAQCAtNTA5LDYgKzUxNiw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQogCiAg
ICAgY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwog
ICAgIG1fZG9jdW1lbnRGcmFnbWVudC0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50Lmdl
dCgpKTsKKyAgICBtYXJrTm9kZXNBc1dlYlZUVE5vZGVzKGNsb25lZEZyYWdtZW50LmdldCgpKTsK
IAogICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCA4ZDBiMzUzLi44ZWVkZmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTEyNSw2ICsxMjUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ3VlSW5kZXgoKTsKIAogICAgIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisgICAgdm9pZCBtYXJrTm9kZXNBc1dl
YlZUVE5vZGVzKE5vZGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4s
IEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2Vy
LmNwcAppbmRleCAyOTdlNTk5Li5mZWQwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0zNjQsNiArMzY0LDcgQEAgdm9pZCBXZWJWVFRQYXJzZXI6
OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAg
Y2hpbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHFUYWcsIGRvY3VtZW50KTsKIAogICAgICAgICBp
ZiAoY2hpbGQpIHsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRJc1dlYlZUVE5vZGUodHJ1ZSk7CiAg
ICAgICAgICAgICBpZiAobV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpID4gMCkKICAgICAgICAgICAg
ICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKG1fdG9rZW4u
Y2xhc3NlcygpLmRhdGEoKSwgbV90b2tlbi5jbGFzc2VzKCkuc2l6ZSgpKSk7CiAgICAgICAgICAg
ICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUocVRhZykpCg==
</data>
<flag name="commit-queue"
          id="195617"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178938</attachid>
            <date>2012-12-11 18:06:15 -0800</date>
            <delta_ts>2012-12-14 15:18:35 -0800</delta_ts>
            <desc>Proposed fix 0.6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22637</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmJjNjY2Li4zYjVmOWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MTEgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMSAg
WGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29y
cmVjdCBwb3NpdGlvbiBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4g
cGFnZSBpcyBzY2FsZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5kZXggNzlmZjg5OS4u
YTcxYmNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3N0eWxpbmcudnR0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zdHlsaW5nLnZ0dApAQCAtMSw0ICsxLDkgQEAKIFdFQlZUVAogCi0wMDowMC4wMDAgLS0+
IDAwOjA0LjAwMAotTG9ydW0gaXBzdW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisxCisw
MDowMC4wMDAgLS0+IDAwOjAxLjAwMAorTG9ydW0gaXBzdW0KKworMgorMDA6MDEuMDAwIC0tPiAw
MDowMi4wMDAKKzxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQsIGNvbnNlY3RldHVy
IDwvYz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQgcHJvcGVybHkgYnkg
dGhlIGNsYXNzIG5hbWUKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQoc2Vla2VkKQorRVhQ
RUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3JnYigyNTUsIDAsIDAp
JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yID09ICdyZ2Io
MCwgMTI4LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5jb2xv
ciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMDQyMjVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisK
KyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisKKyAgICAgICAgPHN0eWxlPgorCisg
ICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0KKyAgICAgICAgI3Rl
c3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9CisKKyAgICAgICAgPC9zdHlsZT4K
KworICAgICAgICA8c2NyaXB0PgorCisgICAgICAgIHZhciBjdWVOb2RlOworCisgICAgICAgIGZ1
bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1ZU5vZGUgPSB0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3Bhc3Qtbm9kZXMnKS5maXJzdENoaWxkOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNvbG9yIiwgInJn
YigyNTUsIDAsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3VlTm9kZS5uZXh0U2libGlu
ZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdWVOb2RlKS5j
b2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworICAgICAgICAgICAgY3VlTm9kZSA9IGN1ZU5vZGUu
bmV4dFNpYmxpbmc7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUo
Y3VlTm9kZSkuY29sb3IiLCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlIGNsYXNzIG5hbWUiKTsKKyAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4u
L2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgdmlkZW8uaWQgPSAidGVzdHZpZGVvIjsKKyAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkKTsKKyAgICAgICAgICAgIHdh
aXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlkZW8uY3VycmVudFRp
bWUgPSAxLjU7IH0pOworICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ibG9hZGVkKCkiPgorICAgICAgICA8dmlkZW8gY29udHJvbHMg
PgorICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0IiBr
aW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZTgxZmIzNi4uMTYwZWFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY0IEBACisyMDEyLTEyLTA4ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBtYXRjaGluZyBjdWUgYnkgdGhlIGNsYXNzIG5hbWUgd2l0aCA6
OmN1ZSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0MTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIDo6Y3VlKCkgcHNldWRvLWVsZW1lbnQgd2l0aCBh
biBhcmd1bWVudCB0aGF0IG1heSBob2xkIGEgc2ltcGxlIHNlbGVjdG9yIGxpc3QuCisgICAgICAg
IFRoaXMgZW5hYmxlcyBtYXRjaGluZyBjdWUgb2JqZWN0cyBieSB0aGUgY2xhc3MgbmFtZS4KKwor
ICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbAorCisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjogc3VwcG9ydCBwYXJzaW5nIHRoZSA6OmN1ZSgpIHdp
dGggYW4gYXJndW1lbnQuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKTogdG9rZW5pemUgdGhl
ICdjdWUnLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKTogZG8gbm90IHNldCB0aGUgdGFnIGZvciB0aGUgY3VlIHBzZXVkby1lbGVt
ZW50IGJlY2F1c2UKKyAgICAgICAgdGhlIDo6Y3VlIG1heSBtYXRjaCBlbGVtZW50cyB3aXRoIGRp
ZmZlcmVudCB0YWdzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZp
ZXJzKTogdGhlIGJlaGF2aW9yIGZvciB0aGUgUHNldWRvQ3VlIHNlbGVjdG9yIHNob3VsZCBiZSBz
YW1lIGFzIGZvcgorICAgICAgICB1bmtub3duIHBzZXVkbyBlbGVtZW50cyAtIHRoZSBwc2V1ZG8t
ZWxlbWVudCBzaG91bGQgc3RheSBvbiB0b3Agb2YgdGhlIHNlbGVjdG9yIGNoYWluLgorICAgICAg
ICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IGFkZGVkIHRoZSB0eXBlIGRldGVjdGlvbiBmb3IgdGhl
IG5ldyBzZWxlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6
CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgICogY3NzL0NTU1Nl
bGVjdG9yLmg6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOiBhZGQgYSBuZXcgbGlzdCB0byBo
b2xkIGFsbCB0aGUgcnVsZXNldHMgZm9yIHRoZSBuZXcgcHNldWRvIGVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1Rv
Rml0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyk6CisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBhbiBhZGRpdGlvbiB0byB0aGUgcmFyZSBkYXRh
IHRvIGJlIGFibGUgdG8gZmluZCBvdXQgaWYgdGhlIG5vZGUgaXMgYSB3ZWJ2dHQgbm9kZS4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNXZWJWVFROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzV2ViVlRUTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudCk6CisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05vZGVS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEp
OgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0
YTo6aXNXZWJWVFROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6c2V0SXNX
ZWJWVFROb2RlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtOb2Rlc0FzV2ViVlRUTm9kZXMpOiBtYXJr
IHRoZSBjbG9uZWQgbm9kZXMgYXMgV2ViVlRUIG5vZGVzLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMi0xMi0xMSAgWGlhbnpodSBXYW5n
ICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29ycmVjdCBwb3NpdGlv
biBvZiBsYXllcnMgZm9yIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHdoZW4gcGFnZSBpcyBzY2Fs
ZWQgc21hbGxlciB0aGFuIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRl
eCAwM2ViOGU5Li5mYTFjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTE3
Myw2ICsxNzMsOSBAQCBzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBj
aGFyKikKICV0b2tlbiA8c3RyaW5nPiBVUkkKICV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgogJXRv
a2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCisjaWYgRU5BQkxFX1ZJREVPX1RSQUNLCisldG9rZW4g
PHN0cmluZz4gQ1VFRlVOQ1RJT04KKyNlbmRpZgogJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9O
CiAldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJ
T04KQEAgLTEzMjMsNiArMTMyNiwyMSBAQCBwc2V1ZG86CiAgICAgICAgIGlmICh0eXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQogICAgICAgICAgICAgJCQgPSAwOwogICAgIH0KKyNp
ZiBFTkFCTEVfVklERU9fVFJBQ0sKKyAgICAvLyB1c2VkIGJ5IDo6Y3VlKDpwYXN0LzpmdXR1cmUp
CisgICAgfCAnOicgJzonIENVRUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9s
aXN0IG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICgkNSkgeworICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2Vs
ZWN0b3JWZWN0b3IoKnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDUpKTsKKyAg
ICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7CisgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9
IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2Ug
YnkgOi13ZWJraXQtYW55LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmlj
IHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2lt
cGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKaW5kZXggZTEyNDFhOC4uZTU2YTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTk0NzcsNiArOTQ3NywxMCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmRldGVj
dEZ1bmN0aW9uVHlwZVRva2VuKGludCBsZW5ndGgpCiAgICAgICAgICAgICBtX3Rva2VuID0gTk9U
RlVOQ1RJT047CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFt
ZVswXSwgJ3UnKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMV0sICdyJykgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzJdLCAnbCcpKQogICAgICAgICAgICAgbV90
b2tlbiA9IFVSSTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGVsc2UgaWYgKGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVswXSwgJ2MnKSAmJiBpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG5hbWVbMV0sICd1JykgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1l
WzJdLCAnZScpKQorICAgICAgICAgICAgbV90b2tlbiA9IENVRUZVTkNUSU9OOworI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgOToKQEAgLTEwNTk0LDcgKzEwNTk4LDEwIEBAIHZv
aWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlUHJlCiAgICAgQXRvbWljU3RyaW5nIGRldGVybWluZWROYW1lc3Bh
Y2UgPSBuYW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0ID8gbV9zdHls
ZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1fZGVmYXVsdE5h
bWVzcGFjZTsKICAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNl
UHJlZml4LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7CiAgICAgaWYgKCFzcGVj
aWZpZXJzLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBzcGVjaWZpZXJzLT5z
ZXRUYWcodGFnKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAgIGlmICghKHNwZWNp
ZmllcnMtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ3VlKSkKKyNlbmRpZgor
ICAgICAgICAgICAgc3BlY2lmaWVycy0+c2V0VGFnKHRhZyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEwNjIxLDcgKzEwNjI4LDExIEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVj
aWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlCiAK
IENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnMoQ1NTUGFyc2Vy
U2VsZWN0b3IqIHNwZWNpZmllcnMsIENTU1BhcnNlclNlbGVjdG9yKiBuZXdTcGVjaWZpZXIpCiB7
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChuZXdTcGVjaWZpZXItPmlzQ3VzdG9t
UHNldWRvRWxlbWVudCgpIHx8IG5ld1NwZWNpZmllci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9DdWUpIHsKKyNlbHNlCiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Q
c2V1ZG9FbGVtZW50KCkpIHsKKyNlbmRpZgogICAgICAgICAvLyBVbmtub3duIHBzZXVkbyBlbGVt
ZW50IGFsd2F5cyBnb2VzIGF0IHRoZSB0b3Agb2Ygc2VsZWN0b3IgY2hhaW4uCiAgICAgICAgIG5l
d1NwZWNpZmllci0+YXBwZW5kVGFnSGlzdG9yeShDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFu
dCwgc2lua0Zsb2F0aW5nU2VsZWN0b3Ioc3BlY2lmaWVycykpOwogICAgICAgICByZXR1cm4gbmV3
U3BlY2lmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZmRjNjc0Mi4uOTU2
ZTQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC0yMjAsNiArMjIwLDkgQEAg
UHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICBjYXNl
IFBzZXVkb091dE9mUmFuZ2U6CiAgICAgY2FzZSBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50
OgogICAgIGNhc2UgUHNldWRvV2ViS2l0Q3VzdG9tRWxlbWVudDoKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisjZW5kaWYKICAgICAgICAgcmV0dXJuIE5PUFNF
VURPOwogICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTMwMiw2ICszMDUsOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuQW5jZXN0b3IsICgiLXdl
YmtpdC1mdWxsLXNjcmVlbi1hbmNlc3RvciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYW5pbWF0aW5n
RnVsbFNjcmVlblRyYW5zaXRpb24sICgiLXdlYmtpdC1hbmltYXRpbmctZnVsbC1zY3JlZW4tdHJh
bnNpdGlvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICNlbmRpZgor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgY3VlLCAoImN1ZSgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisjZW5kaWYKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5SYW5nZSwg
KCJpbi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3V0T2ZSYW5nZSwgKCJvdXQtb2YtcmFu
Z2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKQEAgLTM3Nyw2ICsz
ODMsOSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBl
LT5zZXQoZnVsbFNjcmVlbkFuY2VzdG9yLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxT
Y3JlZW5BbmNlc3Rvcik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChhbmltYXRpbmdG
dWxsU2NyZWVuVHJhbnNpdGlvbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9BbmltYXRpbmdG
dWxsU2NyZWVuVHJhbnNpdGlvbik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChjdWUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ3VlKTsKKyNlbmRpZgogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoaW5SYW5nZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JblJhbmdlKTsKICAgICAgICAgbmFtZVRvUHNldWRv
VHlwZS0+c2V0KG91dE9mUmFuZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvT3V0T2ZSYW5n
ZSk7CiAgICAgfQpAQCAtNDIxLDYgKzQzMCw5IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQ
c2V1ZG9UeXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKG1fcHNldWRvVHlwZSkgewogICAgIGNhc2Ug
UHNldWRvQWZ0ZXI6CiAgICAgY2FzZSBQc2V1ZG9CZWZvcmU6CisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorICAgIGNhc2UgUHNldWRvQ3VlOgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9GaXJzdExl
dHRlcjoKICAgICBjYXNlIFBzZXVkb0ZpcnN0TGluZToKICAgICAgICAgY29tcGF0ID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYWVlNTA3NC4uZGVmZDM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE1Niw2ICsxNTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBQc2V1ZG9PdXRPZlJhbmdlLAogICAgICAgICAgICAgUHNldWRvVXNlckFn
ZW50Q3VzdG9tRWxlbWVudCwKICAgICAgICAgICAgIFBzZXVkb1dlYktpdEN1c3RvbUVsZW1lbnQs
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICAgICAgUHNldWRvQ3VlLAorI2VuZGlm
CiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBNYXJnaW5Cb3hUeXBlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcAppbmRleCA5YTc4YzBmLi4xNDJjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBA
IC0xNDUsNiArMTQ1LDkgQEAgdm9pZCBSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHJlcG9ydEF0b21SdWxlTWFw
KCZpbmZvLCBtX3RhZ1J1bGVzKTsKICAgICByZXBvcnRBdG9tUnVsZU1hcCgmaW5mbywgbV9zaGFk
b3dQc2V1ZG9FbGVtZW50UnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbGlua1BzZXVkb0Ns
YXNzUnVsZXMpOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpbmZvLmFkZE1lbWJlciht
X2N1ZVBzZXVkb1J1bGVzKTsKKyNlbmRpZgogICAgIGluZm8uYWRkTWVtYmVyKG1fZm9jdXNQc2V1
ZG9DbGFzc1J1bGVzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3VuaXZlcnNhbFJ1bGVzKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3BhZ2VSdWxlcyk7CkBAIC0yMTIsNiArMjE1LDEyIEBAIHZvaWQg
UnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgs
IEFkZFJ1bGVGbGFncyBhZGRSCiAgICAgICAgIGFkZFRvUnVsZVNldChzZWxlY3Rvci0+dmFsdWUo
KS5pbXBsKCksIG1fc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzLCBydWxlRGF0YSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChzZWxlY3Rv
ci0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpIHsKKyAgICAgICAgbV9j
dWVQc2V1ZG9SdWxlcy5hcHBlbmQocnVsZURhdGEpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCiAgICAgaWYgKFNlbGVjdG9yQ2hlY2tlcjo6aXNDb21tb25Qc2V1ZG9DbGFzc1NlbGVj
dG9yKHNlbGVjdG9yKSkgewogICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkp
IHsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKQEAgLTM4MSw2ICszOTAs
OSBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICAgICBzaHJpbmtNYXBWZWN0b3JzVG9G
aXQobV90YWdSdWxlcyk7CiAgICAgc2hyaW5rTWFwVmVjdG9yc1RvRml0KG1fc2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKTsKICAgICBtX2xpbmtQc2V1ZG9DbGFzc1J1bGVzLnNocmlua1RvRml0KCk7
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIG1fY3VlUHNldWRvUnVsZXMuc2hyaW5rVG9G
aXQoKTsKKyNlbmRpZgogICAgIG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzLnNocmlua1RvRml0KCk7
CiAgICAgbV91bml2ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVzLnNo
cmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAppbmRleCBhMmZiZWNiLi5iNTc0NDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SdWxlU2V0LmgKQEAgLTEyMiw2ICsxMjIsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVj
dG9yPFJ1bGVEYXRhPiogdGFnUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSBjb25zdCB7IHJl
dHVybiBtX3RhZ1J1bGVzLmdldChrZXkpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiog
c2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMuZ2V0KGtleSk7IH0KICAgICBjb25zdCBW
ZWN0b3I8UnVsZURhdGE+KiBsaW5rUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZt
X2xpbmtQc2V1ZG9DbGFzc1J1bGVzOyB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGNv
bnN0IFZlY3RvcjxSdWxlRGF0YT4qIGN1ZVBzZXVkb1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1f
Y3VlUHNldWRvUnVsZXM7IH0KKyNlbmRpZgogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGZv
Y3VzUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NS
dWxlczsgfQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHVuaXZlcnNhbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KICAgICBjb25zdCBWZWN0b3I8U3R5bGVS
dWxlUGFnZSo+JiBwYWdlUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSdWxlczsgfQpAQCAt
MTM2LDYgKzEzOSw5IEBAIHB1YmxpYzoKICAgICBBdG9tUnVsZU1hcCBtX3RhZ1J1bGVzOwogICAg
IEF0b21SdWxlTWFwIG1fc2hhZG93UHNldWRvRWxlbWVudFJ1bGVzOwogICAgIFZlY3RvcjxSdWxl
RGF0YT4gbV9saW5rUHNldWRvQ2xhc3NSdWxlczsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2N1ZVBzZXVkb1J1bGVzOworI2VuZGlmCiAgICAgVmVjdG9y
PFJ1bGVEYXRhPiBtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsKICAgICBWZWN0b3I8UnVsZURhdGE+
IG1fdW5pdmVyc2FsUnVsZXM7CiAgICAgVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiBtX3BhZ2VSdWxl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMGMxNDE5OC4uMzcy
MGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTExMzYsNiAr
MTEzNiwyMCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGVsc2UgaWYg
KHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVj
dG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgeworICAgICAgICBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICBzdWJD
b250ZXh0LmlzU3ViU2VsZWN0b3IgPSB0cnVlOworCisgICAgICAgIFBzZXVkb0lkIGlnbm9yZUR5
bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKKyAgICAgICAgQ1NTU2VsZWN0b3IqIGNvbnN0ICYgc2Vs
ZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yOworICAgICAgICBmb3IgKHN1YkNvbnRleHQuc2VsZWN0
b3IgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCktPmZpcnN0KCk7IHN1YkNvbnRleHQuc2VsZWN0
b3I7IHN1YkNvbnRleHQuc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc3ViQ29udGV4
dC5zZWxlY3RvcikpIHsKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHN1YkNvbnRleHQs
IGlnbm9yZUR5bmFtaWNQc2V1ZG8pID09IFNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
I2VuZGlmCiAgICAgLy8gIyMjIGFkZCB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLi4uCiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMzhjNGU3
OS4uZjdlZmU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjQ5LDYg
KzY0OSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKFJ1bGVT
ZXQqIHJ1bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbgogICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0Zvckxpc3QocnVsZXMtPnNoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyhwc2V1ZG9JZC5p
bXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgb3B0aW9ucyk7CiAgICAgfQog
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChtX2VsZW1lbnQtPmlzV2ViVlRUTm9k
ZSgpKQorICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QocnVsZXMtPmN1ZVBzZXVk
b1J1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBvcHRpb25zKTsKKyNlbmRp
ZgogICAgIC8vIENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2Fi
bGUgaW4gdGhlIGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEgZm9yIHRoaXM6CiAgICAgLy8g
YSkgaXQncyBhIFVBIHJ1bGUKICAgICAvLyBiKSB0aGUgdHJlZSBzY29wZSBhbGxvd3MgYXV0aG9y
IHJ1bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzViYmU1My4uMDYwN2RiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMjI3MCw3ICsyMjcwLDE5IEBAIGJvb2wgRWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRD
b250ZXh0CiAgICAgcmV0dXJuIENvbnRhaW5lck5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY2hpbGRDb250ZXh0KTsKIH0KICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQorYm9vbCBFbGVtZW50Ojppc1dlYlZUVE5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBo
YXNSYXJlRGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5pc1dlYlZUVE5vZGUoKTsKK30KKwor
dm9pZCBFbGVtZW50OjpzZXRJc1dlYlZUVE5vZGUoYm9vbCBmbGFnKQoreworICAgIGVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpLT5zZXRJc1dlYlZUVE5vZGUoZmxhZyk7Cit9CisjZW5kaWYKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxz
Y3JlZW4oKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNjJlYmI1NS4uYmI4Mzc5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC00MzEsNiArNDMxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
SGFzUGVuZGluZ1Jlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpIHsgfTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wg
aXNXZWJWVFROb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJc1dlYlZUVE5vZGUoYm9vbCBmbGFn
KTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBlbnVtIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAxOTdjMjQwLi5hODRiMzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC01Myw2ICs1MywxMCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkNh
bnZhc1N1YnRyZWU7IH0KICAgICB2b2lkIHNldElzSW5DYW52YXNTdWJ0cmVlKGJvb2wgdmFsdWUp
IHsgbV9pc0luQ2FudmFzU3VidHJlZSA9IHZhbHVlOyB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjppc1dlYlZUVE5vZGU7CisgICAgdXNpbmcgTm9k
ZVJhcmVEYXRhOjpzZXRJc1dlYlZUVE5vZGU7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9j
b250YWluc0Z1bGxTY3JlZW5FbGVtZW50OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3Jl
ZW5FbGVtZW50KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFs
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBkMjU5MzcxLi5hNTVmYzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNTQsNiArMjU0LDkgQEAgcHVibGljOgog
ICAgICAgICAsIG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFs
c2UpCiAgICAgICAgICwgbV9zdHlsZUFmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAgICAgICAgLCBt
X2lzSW5DYW52YXNTdWJ0cmVlKGZhbHNlKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAg
ICAgLCBtX2lzV2ViVlRUTm9kZShmYWxzZSkKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICAgICAgLCBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5k
aWYKQEAgLTM2NywxMiArMzcwLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgaXNXZWJWVFROb2RlKCkgeyByZXR1cm4gbV9p
c1dlYlZUVE5vZGU7IH0KKyAgICB2b2lkIHNldElzV2ViVlRUTm9kZShib29sIHZhbHVlKSB7IG1f
aXNXZWJWVFROb2RlID0gdmFsdWU7IH0KKyNlbmRpZgogICAgIHNob3J0IG1fdGFiSW5kZXg7CiAg
ICAgdW5zaWduZWQgc2hvcnQgbV9jaGlsZEluZGV4OwogICAgIGJvb2wgbV90YWJJbmRleFdhc1Nl
dEV4cGxpY2l0bHkgOiAxOwogICAgIGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNv
b25BZnRlckF0dGFjaCA6IDE7CiAgICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsK
ICAgICBib29sIG1faXNJbkNhbnZhc1N1YnRyZWUgOiAxOworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICBib29sIG1faXNXZWJWVFROb2RlIDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBib29sIG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAy
OGVjOWI3Li5kOGEwYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgpAQCAtNDg3LDYgKzQ4OCwxMiBA
QCB2b2lkIFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkKICAgICBtX2N1ZUluZGV4
ID0gaW52YWxpZEN1ZUluZGV4OwogfQogCit2b2lkIFRleHRUcmFja0N1ZTo6bWFya05vZGVzQXNX
ZWJWVFROb2RlcyhOb2RlKiByb290KQoreworICAgIGZvciAoTm9kZSogY2hpbGQgPSByb290LT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY2hpbGQsIHJv
b3QpKQorICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY2hpbGQpLT5zZXRJc1dlYlZUVE5v
ZGUodHJ1ZSk7Cit9CisKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3Vl
OjpnZXRDdWVBc0hUTUwoKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRG
cmFnbWVudDsKQEAgLTUwOSw2ICs1MTYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKIAogICAgIGNsb25lZEZyYWdtZW50ID0gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2RvY3VtZW50RnJhZ21lbnQt
PmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CisgICAgbWFya05vZGVzQXNX
ZWJWVFROb2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gY2xvbmVkRnJh
Z21lbnQucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgKaW5kZXggOGQwYjM1My4uOGVlZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxp
ZGF0ZUN1ZUluZGV4KCk7CiAKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1
ZUFzSFRNTCgpOworICAgIHZvaWQgbWFya05vZGVzQXNXZWJWVFROb2RlcyhOb2RlKik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9v
bCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uZmVk
MDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAt
MzY0LDYgKzM2NCw3IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2Vu
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNy
ZWF0ZShxVGFnLCBkb2N1bWVudCk7CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAg
ICBjaGlsZC0+c2V0SXNXZWJWVFROb2RlKHRydWUpOwogICAgICAgICAgICAgaWYgKG1fdG9rZW4u
Y2xhc3NlcygpLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0
ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9r
ZW4uY2xhc3NlcygpLnNpemUoKSkpOwogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1l
KHFUYWcpKQo=
</data>
<flag name="review"
          id="195628"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="195808"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179540</attachid>
            <date>2012-12-14 15:18:35 -0800</date>
            <delta_ts>2012-12-17 16:02:45 -0800</delta_ts>
            <desc>Proposed fix 0.7</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22559</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OTgyYTdkLi5mYzQ3OGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTIt
MTMgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IG1hdGNoaW5nIGN1ZSBieSB0aGUgY2xhc3MgbmFtZSB3aXRoIDo6Y3VlIHBzZXVkbyBlbGVtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQxOTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWZXJpZnkg
dGhhdCA6OmN1ZSBwc2V1ZG8tZWxlbWVudCBhY2NlcHRzIGEgc2ltcGxlLXNlbGVjdG9yIGxpc3Qg
dGhhdCBtYXRjaGVzIGN1ZSBvYmplY3RzIGJ5IHRoZSBhIGNsYXNzLgorCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0OgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0xMyAg
UmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3Qg
ZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLWltYWdlLXNldC5odG1sIGlzIGZsYWt5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52dHQKaW5k
ZXggNzlmZjg5OS4uYTcxYmNhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
Y2FwdGlvbnMtd2VidnR0L3N0eWxpbmcudnR0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L2NhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dApAQCAtMSw0ICsxLDkgQEAKIFdFQlZUVAogCi0w
MDowMC4wMDAgLS0+IDAwOjA0LjAwMAotTG9ydW0gaXBzdW0KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCisxCiswMDowMC4wMDAgLS0+IDAwOjAxLjAwMAorTG9ydW0gaXBzdW0KKworMgorMDA6
MDEuMDAwIC0tPiAwMDowMi4wMDAKKzxjLnJlZD5kb2xvciBzaXQgPC9jPjxjLmdyZWVuPmFtZXQs
IGNvbnNlY3RldHVyIDwvYz48Yy5yZWQyPmFkaXBpc2NpbmcgZWxpdDwvYz4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjM5NTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGVzdCB0aGF0IGN1ZXMgYXJlIGJlaW5nIG1hdGNoZWQg
cHJvcGVybHkgYnkgdGhlIGNsYXNzIG5hbWUKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQo
c2Vla2VkKQorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IgPT0gJ3Jn
YigyNTUsIDAsIDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUpLmNv
bG9yID09ICdyZ2IoMCwgMTI4LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShj
dWVOb2RlKS5jb2xvciA9PSAncmdiKDI1NSwgMCwgMCknKSBPSworRU5EIE9GIFRFU1QKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDQyMjVhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwKQEAgLTAsMCAr
MSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisKKyAgICAgICAg
PHN0eWxlPgorCisgICAgICAgIHZpZGVvOjpjdWUoLnJlZCwgLnJlZDIpIHsgY29sb3I6cmVkIH0K
KyAgICAgICAgI3Rlc3R2aWRlbzo6Y3VlKC5ncmVlbikgeyBjb2xvcjpncmVlbiB9CisKKyAgICAg
ICAgPC9zdHlsZT4KKworICAgICAgICA8c2NyaXB0PgorCisgICAgICAgIHZhciBjdWVOb2RlOwor
CisgICAgICAgIGZ1bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGN1ZU5v
ZGUgPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ3Bhc3Qtbm9kZXMnKS5maXJzdENo
aWxkOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1ZU5vZGUp
LmNvbG9yIiwgInJnYigyNTUsIDAsIDApIik7CisgICAgICAgICAgICBjdWVOb2RlID0gY3VlTm9k
ZS5uZXh0U2libGluZzsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHls
ZShjdWVOb2RlKS5jb2xvciIsICJyZ2IoMCwgMTI4LCAwKSIpOworICAgICAgICAgICAgY3VlTm9k
ZSA9IGN1ZU5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENv
bXB1dGVkU3R5bGUoY3VlTm9kZSkuY29sb3IiLCAicmdiKDI1NSwgMCwgMCkiKTsKKyAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGVzdCB0aGF0IGN1ZXMgYXJlIGJl
aW5nIG1hdGNoZWQgcHJvcGVybHkgYnkgdGhlIGNsYXNzIG5hbWUiKTsKKyAgICAgICAgICAgIGZp
bmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
J3ZpZGVvJywgJy4uL2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgdmlkZW8uaWQgPSAidGVz
dHZpZGVvIjsKKyAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkKTsKKyAg
ICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsgdmlk
ZW8uY3VycmVudFRpbWUgPSAxLjU7IH0pOworICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ibG9hZGVkKCkiPgorICAgICAgICA8dmlk
ZW8gY29udHJvbHMgPgorICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3N0
eWxpbmcudnR0IiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICAgICAgPC92aWRlbz4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWEzMjIxYi4uMzgzYjI2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTEyLTEzICBEaW1hIEdvcmJpayAgPGRnb3JiaWtA
YXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBtYXRjaGluZyBjdWUgYnkgdGhlIGNsYXNz
IG5hbWUgd2l0aCA6OmN1ZSBwc2V1ZG8gZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIDo6Y3VlKCkgcHNldWRvLWVs
ZW1lbnQgd2l0aCBhbiBhcmd1bWVudCB0aGF0IG1heSBob2xkIGEgc2ltcGxlIHNlbGVjdG9yIGxp
c3QuCisgICAgICAgIFRoaXMgZW5hYmxlcyBtYXRjaGluZyBjdWUgb2JqZWN0cyBieSB0aGUgY2xh
c3MgbmFtZS4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcu
aHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjogc3VwcG9ydCBwYXJzaW5nIHRo
ZSA6OmN1ZSgpIHdpdGggYW4gYXJndW1lbnQuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKTog
dG9rZW5pemUgdGhlICdjdWUnLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1cGRhdGVT
cGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKTogZG8gbm90IHNldCB0aGUgdGFnIGZvciB0aGUgY3Vl
IHBzZXVkby1lbGVtZW50IGJlY2F1c2UKKyAgICAgICAgdGhlIDo6Y3VlIG1heSBtYXRjaCBlbGVt
ZW50cyB3aXRoIGRpZmZlcmVudCB0YWdzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp1
cGRhdGVTcGVjaWZpZXJzKTogdGhlIGJlaGF2aW9yIGZvciB0aGUgUHNldWRvQ3VlIHNlbGVjdG9y
IHNob3VsZCBiZSBzYW1lIGFzIGZvcgorICAgICAgICB1bmtub3duIHBzZXVkbyBlbGVtZW50cyAt
IHRoZSBwc2V1ZG8tZWxlbWVudCBzaG91bGQgc3RheSBvbiB0b3Agb2YgdGhlIHNlbGVjdG9yIGNo
YWluLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IGFkZGVkIHRoZSB0eXBlIGRldGVj
dGlvbiBmb3IgdGhlIG5ldyBzZWxlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
Ojpwc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOiBhZGQgYSBu
ZXcgbGlzdCB0byBob2xkIGFsbCB0aGUgcnVsZXNldHMgZm9yIHRoZSBuZXcgcHNldWRvIGVsZW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVT
ZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoUnVs
ZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjpjdWVQc2V1ZG9SdWxlcyk6CisgICAg
ICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNr
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2lu
Z0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKKyAgICAgICAgKiBjc3MvU3R5bGVS
ZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOiBhbiBhZGRpdGlvbiB0byB0
aGUgcmFyZSBkYXRhIHRvIGJlIGFibGUgdG8gZmluZCBvdXQgaWYgdGhlIG5vZGUgaXMgYSB3ZWJ2
dHQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
aXNXZWJWVFROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzV2ViVlRUTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbG9uZURhdGFGcm9tRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRv
bS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAg
ICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpO
b2RlUmFyZURhdGEpOgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSYXJlRGF0YTo6aXNXZWJWVFROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YTo6c2V0SXNXZWJWVFROb2RlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6Om1hcmtOb2Rlc0FzV2ViVlRU
Tm9kZXMpOiBtYXJrIHRoZSBjbG9uZWQgbm9kZXMgYXMgV2ViVlRUIG5vZGVzLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFRleHRUcmFj
a0N1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxMi0xMi0xMyAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhhbmRsaW5n
IGF1dG9zY3JvbGwgaW4gRXZlbnRIYW5kbGVyIHNob3VsZCBiZSByZS1mYWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCmluZGV4IDAzZWI4ZTkuLmZhMWM2ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgpAQCAtMTczLDYgKzE3Myw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGNz
c3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQogJXRva2VuIDxzdHJpbmc+IFVSSQogJXRva2Vu
IDxzdHJpbmc+IEZVTkNUSU9OCiAldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KKyNpZiBFTkFC
TEVfVklERU9fVFJBQ0sKKyV0b2tlbiA8c3RyaW5nPiBDVUVGVU5DVElPTgorI2VuZGlmCiAldG9r
ZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KICV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KICV0
b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgpAQCAtMTMyMyw2ICsxMzI2LDIxIEBAIHBzZXVkbzoK
ICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCiAgICAgICAg
ICAgICAkJCA9IDA7CiAgICAgfQorI2lmIEVOQUJMRV9WSURFT19UUkFDSworICAgIC8vIHVzZWQg
YnkgOjpjdWUoOnBhc3QvOmZ1dHVyZSkKKyAgICB8ICc6JyAnOicgQ1VFRlVOQ1RJT04gbWF5YmVf
c3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYg
KCQ1KSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Cisg
ICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvclZlY3RvcigkNSkpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAg
ICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwor
ICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkKKyAgICAgICAg
ICAgICAgICAkJCA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAg
IH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNo
b3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2Vs
ZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNo
IC1tb3otYW55LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA5OTY3NjViLi42MWIxN2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtOTQ4Myw2ICs5NDgzLDEwIEBAIGlubGlu
ZSB2b2lkIENTU1BhcnNlcjo6ZGV0ZWN0RnVuY3Rpb25UeXBlVG9rZW4oaW50IGxlbmd0aCkKICAg
ICAgICAgICAgIG1fdG9rZW4gPSBOT1RGVU5DVElPTjsKICAgICAgICAgZWxzZSBpZiAoaXNBU0NJ
SUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzBdLCAndScpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobmFtZVsxXSwgJ3InKSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMl0s
ICdsJykpCiAgICAgICAgICAgICBtX3Rva2VuID0gVVJJOworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICAgICAgZWxzZSBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChuYW1lWzBdLCAn
YycpICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobmFtZVsxXSwgJ3UnKSAmJiBpc0FTQ0lJ
QWxwaGFDYXNlbGVzc0VxdWFsKG5hbWVbMl0sICdlJykpCisgICAgICAgICAgICBtX3Rva2VuID0g
Q1VFRlVOQ1RJT047CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSA5OgpAQCAt
MTA2MDAsNyArMTA2MDQsMTAgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRo
RWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VQcmUKICAgICBBdG9taWNT
dHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAm
JiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3Bh
Y2VQcmVmaXgpIDogbV9kZWZhdWx0TmFtZXNwYWNlOwogICAgIFF1YWxpZmllZE5hbWUgdGFnID0g
UXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFt
ZXNwYWNlKTsKICAgICBpZiAoIXNwZWNpZmllcnMtPmlzQ3VzdG9tUHNldWRvRWxlbWVudCgpKSB7
Ci0gICAgICAgIHNwZWNpZmllcnMtPnNldFRhZyh0YWcpOworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICAgICAgaWYgKCEoc3BlY2lmaWVycy0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DdWUpKQorI2VuZGlmCisgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWcodGFn
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2MjcsNyArMTA2MzQsMTEgQEAgdm9p
ZCBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lc3BhY2VQcmUKIAogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlcjo6dXBk
YXRlU3BlY2lmaWVycyhDU1NQYXJzZXJTZWxlY3Rvciogc3BlY2lmaWVycywgQ1NTUGFyc2VyU2Vs
ZWN0b3IqIG5ld1NwZWNpZmllcikKIHsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9FbGVtZW50KCkgfHwgbmV3U3BlY2lmaWVyLT5w
c2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0N1ZSkgeworI2Vsc2UKICAgICBpZiAo
bmV3U3BlY2lmaWVyLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQoKSkgeworI2VuZGlmCiAgICAgICAg
IC8vIFVua25vd24gcHNldWRvIGVsZW1lbnQgYWx3YXlzIGdvZXMgYXQgdGhlIHRvcCBvZiBzZWxl
Y3RvciBjaGFpbi4KICAgICAgICAgbmV3U3BlY2lmaWVyLT5hcHBlbmRUYWdIaXN0b3J5KENTU1Nl
bGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50LCBzaW5rRmxvYXRpbmdTZWxlY3RvcihzcGVjaWZpZXJz
KSk7CiAgICAgICAgIHJldHVybiBuZXdTcGVjaWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBmZGM2NzQyLi45NTZlNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKQEAgLTIyMCw2ICsyMjAsOSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNl
dWRvVHlwZSB0eXBlKQogICAgIGNhc2UgUHNldWRvT3V0T2ZSYW5nZToKICAgICBjYXNlIFBzZXVk
b1VzZXJBZ2VudEN1c3RvbUVsZW1lbnQ6CiAgICAgY2FzZSBQc2V1ZG9XZWJLaXRDdXN0b21FbGVt
ZW50OgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjYXNlIFBzZXVkb0N1ZToKKyNlbmRp
ZgogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAgICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzAyLDYgKzMwNSw5IEBAIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVU
b1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1
bGxTY3JlZW5BbmNlc3RvciwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhbmltYXRpbmdGdWxsU2NyZWVuVHJhbnNpdGlvbiwgKCItd2Via2l0LWFu
aW1hdGluZy1mdWxsLXNjcmVlbi10cmFuc2l0aW9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjdWUsICgiY3VlKCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbmRpZgogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpblJhbmdlLCAoImluLXJhbmdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
dXRPZlJhbmdlLCAoIm91dC1vZi1yYW5nZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKIApAQCAtMzc3LDYgKzM4Myw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuQW5jZXN0b3IuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkFuY2VzdG9yKTsKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGFuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0FuaW1hdGluZ0Z1bGxTY3JlZW5UcmFuc2l0aW9uKTsKICNlbmRpZgorI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGN1ZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9DdWUpOworI2VuZGlmCiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChpblJhbmdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0luUmFuZ2Up
OwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQob3V0T2ZSYW5nZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9PdXRPZlJhbmdlKTsKICAgICB9CkBAIC00MjEsNiArNDMwLDkgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIHN3aXRjaCAobV9w
c2V1ZG9UeXBlKSB7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKICAgICBjYXNlIFBzZXVkb0JlZm9y
ZToKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgY2FzZSBQc2V1ZG9DdWU6CisjZW5kaWYK
ICAgICBjYXNlIFBzZXVkb0ZpcnN0TGV0dGVyOgogICAgIGNhc2UgUHNldWRvRmlyc3RMaW5lOgog
ICAgICAgICBjb21wYXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCBhZWU1
MDc0Li5kZWZkMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMTU2LDYgKzE1Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb091dE9mUmFuZ2UsCiAg
ICAgICAgICAgICBQc2V1ZG9Vc2VyQWdlbnRDdXN0b21FbGVtZW50LAogICAgICAgICAgICAgUHNl
dWRvV2ViS2l0Q3VzdG9tRWxlbWVudCwKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgICAg
ICAgICBQc2V1ZG9DdWUsCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdp
bkJveFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IDlhNzhjMGYuLjE0MmNlZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE0NSw2ICsxNDUsOSBAQCB2b2lkIFJ1bGVTZXQ6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgcmVwb3J0QXRvbVJ1bGVNYXAoJmluZm8sIG1fdGFnUnVsZXMpOwogICAgIHJlcG9ydEF0
b21SdWxlTWFwKCZpbmZvLCBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9saW5rUHNldWRvQ2xhc3NSdWxlcyk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGluZm8uYWRkTWVtYmVyKG1fY3VlUHNldWRvUnVsZXMpOworI2VuZGlmCiAgICAgaW5m
by5hZGRNZW1iZXIobV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fdW5pdmVyc2FsUnVsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFnZVJ1bGVzKTsKQEAg
LTIxMiw2ICsyMTUsMTIgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwg
dW5zaWduZWQgc2VsZWN0b3JJbmRleCwgQWRkUnVsZUZsYWdzIGFkZFIKICAgICAgICAgYWRkVG9S
dWxlU2V0KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSwgbV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVs
ZXMsIHJ1bGVEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgaWYgKHNlbGVjdG9yLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0N1ZSkgeworICAgICAgICBtX2N1ZVBzZXVkb1J1bGVzLmFwcGVuZChydWxlRGF0YSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjpp
c0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3Ioc2VsZWN0b3IpKSB7CiAgICAgICAgIHN3aXRjaCAo
c2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9MaW5rOgpAQCAtMzgxLDYgKzM5MCw5IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQog
ICAgIHNocmlua01hcFZlY3RvcnNUb0ZpdChtX3RhZ1J1bGVzKTsKICAgICBzaHJpbmtNYXBWZWN0
b3JzVG9GaXQobV9zaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMpOwogICAgIG1fbGlua1BzZXVkb0Ns
YXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgbV9j
dWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1c1BzZXVkb0Ns
YXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNocmlua1RvRml0
KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCmluZGV4
IGEyZmJlY2IuLmI1NzQ0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaApAQCAtMTIyLDYgKzEyMiw5IEBA
IHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiB0YWdSdWxlcyhBdG9taWNTdHJp
bmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KICAgICBj
b25zdCBWZWN0b3I8UnVsZURhdGE+KiBzaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoQXRvbWljU3Ry
aW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5n
ZXQoa2V5KTsgfQogICAgIGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIGxpbmtQc2V1ZG9DbGFzc1J1
bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fbGlua1BzZXVkb0NsYXNzUnVsZXM7IH0KKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogY3VlUHNldWRvUnVs
ZXMoKSBjb25zdCB7IHJldHVybiAmbV9jdWVQc2V1ZG9SdWxlczsgfQorI2VuZGlmCiAgICAgY29u
c3QgVmVjdG9yPFJ1bGVEYXRhPiogZm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1
cm4gJm1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRh
PiogdW5pdmVyc2FsUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV91bml2ZXJzYWxSdWxlczsgfQog
ICAgIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIHBhZ2VSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVJ1bGVzOyB9CkBAIC0xMzYsNiArMTM5LDkgQEAgcHVibGljOgogICAgIEF0b21S
dWxlTWFwIG1fdGFnUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV9zaGFkb3dQc2V1ZG9FbGVtZW50
UnVsZXM7CiAgICAgVmVjdG9yPFJ1bGVEYXRhPiBtX2xpbmtQc2V1ZG9DbGFzc1J1bGVzOworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBWZWN0b3I8UnVsZURhdGE+IG1fY3VlUHNldWRvUnVs
ZXM7CisjZW5kaWYKICAgICBWZWN0b3I8UnVsZURhdGE+IG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVz
OwogICAgIFZlY3RvcjxSdWxlRGF0YT4gbV91bml2ZXJzYWxSdWxlczsKICAgICBWZWN0b3I8U3R5
bGVSdWxlUGFnZSo+IG1fcGFnZVJ1bGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAppbmRleCBhNTMwNWUzLi41N2ExZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcApAQCAtMTEzMiw2ICsxMTMyLDIwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBj
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisgICAgZWxzZSBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ3VlKSB7CisgICAgICAgIFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0IHN1YkNvbnRleHQo
Y29udGV4dCk7CisgICAgICAgIHN1YkNvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7CisKKyAg
ICAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOworICAgICAgICBD
U1NTZWxlY3RvciogY29uc3QgJiBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7CisgICAgICAg
IGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKS0+Zmly
c3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3ViQ29udGV4dC5zZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzdWJDb250ZXh0LnNlbGVjdG9yKSkgeworICAgICAgICAgICAgaWYgKGNo
ZWNrU2VsZWN0b3Ioc3ViQ29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVkbykgPT0gU2VsZWN0b3JN
YXRjaGVzKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisjZW5kaWYKICAgICAvLyAjIyMgYWRkIHRoZSByZXN0IG9m
IHRoZSBjaGVja3MuLi4KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCBkYzkxYmU2Li5hN2QxYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC02NDksNiArNjQ5LDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXMoUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxlSW5kZXgsIGlu
CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChydWxlcy0+c2hhZG93UHNldWRv
RWxlbWVudFJ1bGVzKHBzZXVkb0lkLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4LCBvcHRpb25zKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYg
KG1fZWxlbWVudC0+aXNXZWJWVFROb2RlKCkpCisgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChydWxlcy0+Y3VlUHNldWRvUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxl
SW5kZXgsIG9wdGlvbnMpOworI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBl
cyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0
ZXJpYSBmb3IgdGhpczoKICAgICAvLyBhKSBpdCdzIGEgVUEgcnVsZQogICAgIC8vIGIpIHRoZSB0
cmVlIHNjb3BlIGFsbG93cyBhdXRob3IgcnVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0
NDk4ZDMyLi5jOThhYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMjcxLDcgKzIyNzEs
MTkgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQKICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogI2VuZGlmCi0gICAg
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitib29sIEVsZW1lbnQ6OmlzV2ViVlRUTm9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJhcmVEYXRhKCkt
PmlzV2ViVlRUTm9kZSgpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldElzV2ViVlRUTm9kZShib29s
IGZsYWcpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldElzV2ViVlRUTm9kZShm
bGFnKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogdm9pZCBFbGVt
ZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4
NDM1MmMzLi43ZTMzMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQyNyw2ICs0MjcsMTEgQEAg
cHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdDsKICNlbmRpZgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGJvb2wgaXNXZWJWVFROb2RlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRJc1dlYlZUVE5vZGUoYm9vbCBmbGFnKTsKKyNlbmRpZgogICAgIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaAppbmRleCA3OTA1Y2I1Li5hZmNlMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCkBAIC01Myw2ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luQ2Fu
dmFzU3VidHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkNhbnZhc1N1YnRyZWU7IH0KICAgICB2
b2lkIHNldElzSW5DYW52YXNTdWJ0cmVlKGJvb2wgdmFsdWUpIHsgbV9pc0luQ2FudmFzU3VidHJl
ZSA9IHZhbHVlOyB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdXNpbmcgTm9kZVJh
cmVEYXRhOjppc1dlYlZUVE5vZGU7CisgICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJc1dlYlZU
VE5vZGU7CisjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBjb250
YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50OyB9CiAgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgdmFsdWUp
IHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAppbmRleCBkMjU5MzcxLi5hNTVmYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCkBAIC0yNTQsNiArMjU0LDkgQEAgcHVibGljOgogICAgICAgICAsIG1fbmVlZHNGb2N1
c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCiAgICAgICAgICwgbV9zdHls
ZUFmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAgICAgICAgLCBtX2lzSW5DYW52YXNTdWJ0cmVlKGZh
bHNlKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAgICAgLCBtX2lzV2ViVlRUTm9kZShm
YWxzZSkKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgLCBtX2Nv
bnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoZmFsc2UpCiAjZW5kaWYKQEAgLTM2NywxMiArMzcwLDE5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
ICAgIGJvb2wgaXNXZWJWVFROb2RlKCkgeyByZXR1cm4gbV9pc1dlYlZUVE5vZGU7IH0KKyAgICB2
b2lkIHNldElzV2ViVlRUTm9kZShib29sIHZhbHVlKSB7IG1faXNXZWJWVFROb2RlID0gdmFsdWU7
IH0KKyNlbmRpZgogICAgIHNob3J0IG1fdGFiSW5kZXg7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9j
aGlsZEluZGV4OwogICAgIGJvb2wgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkgOiAxOwogICAg
IGJvb2wgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCA6IDE7CiAg
ICAgYm9vbCBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5IDogMTsKICAgICBib29sIG1faXNJbkNhbnZh
c1N1YnRyZWUgOiAxOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBib29sIG1faXNXZWJW
VFROb2RlIDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29s
IG1fY29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCA6IDE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCAyOGVjOWI3Li42OWI4YWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1
ZGUgIlRleHRUcmFjay5oIgpAQCAtNDg3LDYgKzQ4OCwxMiBAQCB2b2lkIFRleHRUcmFja0N1ZTo6
aW52YWxpZGF0ZUN1ZUluZGV4KCkKICAgICBtX2N1ZUluZGV4ID0gaW52YWxpZEN1ZUluZGV4Owog
fQogCit2b2lkIFRleHRUcmFja0N1ZTo6bWFya05vZGVzQXNXZWJWVFROb2RlcyhOb2RlKiByb290
KQoreworICAgIGZvciAoRWxlbWVudCogY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdp
dGhpbihyb290KTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChjaGlsZCwg
cm9vdCkpCisgICAgICAgIGNoaWxkLT5zZXRJc1dlYlZUVE5vZGUodHJ1ZSk7Cit9CisKIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQogewog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKQEAgLTUwOSw2ICs1
MTYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3Vl
QXNIVE1MKCkKIAogICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBtX2RvY3VtZW50RnJhZ21lbnQtPmNsb25lQ2hpbGROb2RlcyhjbG9u
ZWRGcmFnbWVudC5nZXQoKSk7CisgICAgbWFya05vZGVzQXNXZWJWVFROb2RlcyhjbG9uZWRGcmFn
bWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggOGQwYjM1My4uOGVl
ZGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC0xMjUs
NiArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUN1ZUluZGV4KCk7CiAKICAg
ICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRNTCgpOworICAgIHZvaWQg
bWFya05vZGVzQXNXZWJWVFROb2RlcyhOb2RlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0
Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1dlYlZUVFBhcnNlci5jcHAKaW5kZXggMjk3ZTU5OS4uZmVkMDM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAtMzY0LDYgKzM2NCw3IEBAIHZvaWQg
V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICAgICAgICAgIGNoaWxkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxVGFnLCBkb2N1bWVudCk7
CiAKICAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBjaGlsZC0+c2V0SXNXZWJWVFRO
b2RlKHRydWUpOwogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSA+IDAp
CiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0
cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSkp
OwogICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKHFUYWcpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>