<?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>39220</bug_id>
          
          <creation_ts>2010-05-17 08:49:58 -0700</creation_ts>
          <short_desc>CSS3 Media Queries are not serialized according to CSSOM</short_desc>
          <delta_ts>2010-06-11 07:26:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39701</dependson>
          <blocked>37205</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226776</commentid>
    <comment_count>0</comment_count>
      <attachid>56246</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-17 08:49:58 -0700</bug_when>
    <thetext>Created attachment 56246
Layout test showing the error

Spec: http://dev.w3.org/csswg/cssom/#serializing-media-queries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226777</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-17 08:50:47 -0700</bug_when>
    <thetext>The media query:

NOT braille, media and (orientation: &apos;landscape&apos;) AND (min-WIDTH:100px) and (max-width: 200px ), all and and (color) and (color).

is serialized to:

not braille, media and (orientation: landscape) and (min-width: 100px) and (max-width: 200px), all and (color) and (color)

but it should have been serialized to:

not braille, media and (orientation: landscape) and (max-width: 200px) and (min-width: 100px), (color)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228300</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-05-20 03:39:49 -0700</bug_when>
    <thetext>Doubt this is Qt specific, removing the keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228336</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-20 05:29:59 -0700</bug_when>
    <thetext>I dont think the Qt keyword means that it is Qt specific (we normally prepend [Qt] to the title for that), but that it has direct relation to our Qt port, and thus will show up in our filters. Feel free to correct me :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228624</commentid>
    <comment_count>4</comment_count>
      <attachid>56645</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-20 16:34:28 -0700</bug_when>
    <thetext>Created attachment 56645
patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229038</commentid>
    <comment_count>5</comment_count>
      <attachid>56645</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 12:22:11 -0700</bug_when>
    <thetext>Comment on attachment 56645
patch 1

WebCore/css/MediaQuery.cpp:51
 +  static bool stringCompare(const String&amp; a, const String&amp; b)
Really?  This doesn&apos;t exist yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229042</commentid>
    <comment_count>6</comment_count>
      <attachid>56645</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 12:27:24 -0700</bug_when>
    <thetext>Comment on attachment 56645
patch 1

WebCore/css/MediaQuery.cpp:53
 +      return strcmp(a.utf8().data(), b.utf8().data()) &lt; 0;
 This does 2 copies to make one compare.

WebCore/css/MediaQuery.cpp:58
 +      // http://dev.w3.org/csswg/cssom/#serialize-a-media-query
I might have put this before the function.

WebCore/css/MediaQuery.cpp:43
 +          return &quot;only &quot;;
Seems strange that these include the space.

WebCore/css/MediaQuery.cpp:96
 +          delete newExp; // delete duplicated
Huh?  This seems really confusing that we would delete the item passed to us in this fuction.

WebCore/css/MediaQuery.cpp:109
 +      delete exprs;
Huh?  Also confusing.  Why are we taking ownership of this object?  If we are we shoudl be using a PassOwnPtr to clarify that.

WebCore/css/MediaQuery.cpp:114
 +      deleteAllValues(m_expressions);
You removed setting m_expressions in teh constructor.  That seems bad.

WebCore/css/MediaQuery.cpp:120
 +      return serialize() == other.serialize();
This seems very expensive.

WebCore/css/MediaQuery.h:57
 +      iterator begin() { return m_expressions.begin(); }
Exposing iterators here seems strange to me.

r- for the above concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229068</commentid>
    <comment_count>7</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-21 13:17:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 56645 [details])
&gt; WebCore/css/MediaQuery.cpp:53
&gt;  +      return strcmp(a.utf8().data(), b.utf8().data()) &lt; 0;
&gt;  This does 2 copies to make one compare.

indeed. I need a comparison method for String. I need to look for how to proceed.

&gt; 
&gt; WebCore/css/MediaQuery.cpp:58
&gt;  +      // http://dev.w3.org/csswg/cssom/#serialize-a-media-query
&gt; I might have put this before the function.

ok

&gt; 
&gt; WebCore/css/MediaQuery.cpp:43
&gt;  +          return &quot;only &quot;;
&gt; Seems strange that these include the space.

just a helper function. the space is just convenient. I will move the code to the main method.

&gt; 
&gt; WebCore/css/MediaQuery.cpp:96
&gt;  +          delete newExp; // delete duplicated
&gt; Huh?  This seems really confusing that we would delete the item passed to us in this fuction.
&gt; 
&gt; WebCore/css/MediaQuery.cpp:109
&gt;  +      delete exprs;
&gt; Huh?  Also confusing.  Why are we taking ownership of this object?  If we are we shoudl be using a PassOwnPtr to clarify that.

We are taking the ownership.  I understand thate I must use PassOwnPtr in the parameter. Is it needed to use a container of OwnPtr to keep the objects? I mean: if I use a Vector of objects should it be a Vector&lt;OwnPtr&lt;&gt; &gt; or just Vector&lt;&gt;. Is any of them worse or wrong?

&gt; 
&gt; WebCore/css/MediaQuery.cpp:114
&gt;  +      deleteAllValues(m_expressions);
&gt; You removed setting m_expressions in teh constructor.  That seems bad.

m_expressions was a pointer but was changed to be an object. no initialization is needed.

&gt; 
&gt; WebCore/css/MediaQuery.cpp:120
&gt;  +      return serialize() == other.serialize();
&gt; This seems very expensive.

This is what is specified.

&gt; 
&gt; WebCore/css/MediaQuery.h:57
&gt;  +      iterator begin() { return m_expressions.begin(); }
&gt; Exposing iterators here seems strange to me.

In previous implementation a Vector was used and a pointer to the internal vector was returned in method expressions() to be used outside the class.
I made several changes and I am now using a HashMap to keep the expressions. The best way to the class users to iterate over the expressions seems to me to be using an iterator over the values of the HashMap.

&gt; 
&gt; r- for the above concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229128</commentid>
    <comment_count>8</comment_count>
      <attachid>56752</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-21 15:23:48 -0700</bug_when>
    <thetext>Created attachment 56752
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229138</commentid>
    <comment_count>9</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-21 15:35:25 -0700</bug_when>
    <thetext>Is it needed to use a container of OwnPtr to keep the objects? I mean: if I use a Vector of objects should it be a Vector&lt;OwnPtr&lt;&gt; &gt; or just Vector&lt;&gt;. Is any of them worse or wrong?

Really bad question. I should look at the code before asking. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229145</commentid>
    <comment_count>10</comment_count>
      <attachid>56757</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-21 15:43:32 -0700</bug_when>
    <thetext>Created attachment 56757
patch 3

spelling correction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229238</commentid>
    <comment_count>11</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-21 22:14:11 -0700</bug_when>
    <thetext>
&gt; &gt; 
&gt; &gt; WebCore/css/MediaQuery.cpp:120
&gt; &gt;  +      return serialize() == other.serialize();
&gt; &gt; This seems very expensive.
&gt; 
&gt; This is what is specified.

If we think that this operator is hot I could keep a cache of the computed String. It is probably not needed.

&gt; 
&gt; &gt; 
&gt; &gt; WebCore/css/MediaQuery.h:57
&gt; &gt;  +      iterator begin() { return m_expressions.begin(); }
&gt; &gt; Exposing iterators here seems strange to me.
&gt; 
&gt; In previous implementation a Vector was used and a pointer to the internal vector was returned in method expressions() to be used outside the class.
&gt; I made several changes and I am now using a HashMap to keep the expressions. The best way to the class users to iterate over the expressions seems to me to be using an iterator over the values of the HashMap.
&gt; 

I should be using const_iterator anyway. I will wait for further comments before submitting this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229891</commentid>
    <comment_count>12</comment_count>
      <attachid>56757</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-24 13:53:22 -0700</bug_when>
    <thetext>Comment on attachment 56757
patch 3

LayoutTests/fast/media/media-query-serialization.html:21
 +      function shouldBe(desc, a, b)
Why invent your own shouldBe and log() instead of making this a script-test?

WebCore/css/MediaQuery.cpp:43
 +      return strcmp(a.utf8().data(), b.utf8().data()) &lt; 0;
This is very expensive because it copies.  it would be better to walk the characters().  I would write a new asciiOnlyCompare() function which does just that in String.h if I were writing this.

WebCore/css/MediaQuery.cpp:58
 +      default:
Much better to list out all possible enum values than use default: so that the compiler can let you know when you add an enum value and need to update your switch statements.

WebCore/css/MediaQuery.cpp:94
 +      if (m_expressions.add(key, newExp.get()).second)
Why not call .release() instead of .get()?  I&apos;m confused under which conditions we don&apos;t want to release?

WebCore/css/MediaQuery.cpp:95
 +          newExp.release();
Should MediaQueryExp be ref counted?

WebCore/css/MediaQuery.cpp:118
 +      return serialize() == other.serialize();
Probably should add a comment that this expensive compare is done to match the spec.

WebCore/css/MediaQuery.h:58
 +      iterator begin() { return m_expressions.begin(); }
I think it&apos;s cleaner to have a:
const Vector&lt;MediaQueryExp*&gt;&amp; expressions() const; method, no?

Why would these iterators be mutable?

WebCore/css/MediaQueryExp.h:69
 +      String serialize();
Should this be const?

Should we be caching any of these serializations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231866</commentid>
    <comment_count>13</comment_count>
      <attachid>57361</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-28 12:22:55 -0700</bug_when>
    <thetext>Created attachment 57361
patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231868</commentid>
    <comment_count>14</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-28 12:27:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 56757 [details])
&gt; LayoutTests/fast/media/media-query-serialization.html:21
&gt;  +      function shouldBe(desc, a, b)
&gt; Why invent your own shouldBe and log() instead of making this a script-test?

done

&gt; 
&gt; WebCore/css/MediaQuery.cpp:43
&gt;  +      return strcmp(a.utf8().data(), b.utf8().data()) &lt; 0;
&gt; This is very expensive because it copies.  it would be better to walk the characters().  I would write a new asciiOnlyCompare() function which does just that in String.h if I were writing this.

I have been working on it (bug 39701) and it is finally landed.

done

&gt; 
&gt; WebCore/css/MediaQuery.cpp:58
&gt;  +      default:
&gt; Much better to list out all possible enum values than use default: so that the compiler can let you know when you add an enum value and need to update your switch statements.

done

&gt; 
&gt; WebCore/css/MediaQuery.cpp:94
&gt;  +      if (m_expressions.add(key, newExp.get()).second)
&gt; Why not call .release() instead of .get()?  I&apos;m confused under which conditions we don&apos;t want to release?

code is different in this latest patch.

&gt; 
&gt; WebCore/css/MediaQuery.cpp:95
&gt;  +          newExp.release();
&gt; Should MediaQueryExp be ref counted?

No need for that.

&gt; 
&gt; WebCore/css/MediaQuery.cpp:118
&gt;  +      return serialize() == other.serialize();
&gt; Probably should add a comment that this expensive compare is done to match the spec.

serialization is now cached so that just the first call is expensive.

&gt; 
&gt; WebCore/css/MediaQuery.h:58
&gt;  +      iterator begin() { return m_expressions.begin(); }
&gt; I think it&apos;s cleaner to have a:
&gt; const Vector&lt;MediaQueryExp*&gt;&amp; expressions() const; method, no?

ok. if you prefer.

&gt; 
&gt; Why would these iterators be mutable?

they should not. :)

&gt; 
&gt; WebCore/css/MediaQueryExp.h:69
&gt;  +      String serialize();
&gt; Should this be const?

done

&gt; 
&gt; Should we be caching any of these serializations?

all serializations are now cached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231912</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 13:39:55 -0700</bug_when>
    <thetext>Attachment 57361 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2587035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231917</commentid>
    <comment_count>16</comment_count>
      <attachid>57373</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-05-28 13:52:11 -0700</bug_when>
    <thetext>Created attachment 57373
patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235782</commentid>
    <comment_count>17</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-06-09 07:57:14 -0700</bug_when>
    <thetext>ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236364</commentid>
    <comment_count>18</comment_count>
      <attachid>57373</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-06-10 07:46:11 -0700</bug_when>
    <thetext>Comment on attachment 57373
patch 5

r=me, minor comments:

m_serializationCache should be mutable that avoids the const_cast
m_valid bit might be clearer than m_ignored bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236372</commentid>
    <comment_count>19</comment_count>
      <attachid>57373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-10 08:21:00 -0700</bug_when>
    <thetext>Comment on attachment 57373
patch 5

Rejecting patch 57373 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
ORT_DIR /Developer/Library/Xcode
    setenv XCODE_VERSION_ACTUAL 0313
    setenv XCODE_VERSION_MAJOR 0300
    setenv XCODE_VERSION_MINOR 0310
    setenv YACC /Developer/usr/bin/yacc
    /bin/sh -c /Users/eseidel/Projects/CommitQueue/WebKitBuild/WebCore.build/Debug/WebCore.build/Script-5DF50887116F3077005202AB.sh
** BUILD FAILED **

The following build commands failed:
WebCore:
	Ld /Users/eseidel/Projects/CommitQueue/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore normal i386
(1 failure)


Full output: http://webkit-commit-queue.appspot.com/results/3190154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236817</commentid>
    <comment_count>20</comment_count>
      <attachid>57373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 07:25:55 -0700</bug_when>
    <thetext>Comment on attachment 57373
patch 5

Clearing flags on attachment: 57373

Committed r61016: &lt;http://trac.webkit.org/changeset/61016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236818</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-11 07:26:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>56246</attachid>
            <date>2010-05-17 08:49:58 -0700</date>
            <delta_ts>2010-05-17 08:49:58 -0700</delta_ts>
            <desc>Layout test showing the error</desc>
            <filename>mq-js-stylesheet-mediaquery-serialized.html</filename>
            <type>text/html</type>
            <size>1330</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSBzZXJpYWxpemF0aW9uIHRlc3Q6
IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5LjwvdGl0bGU+CjxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRh
eCIgLz4KPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgo8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemluZy1tZWRpYS1xdWVyaWVzIiAv
PgoKPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iTk9UIGJyYWlsbGUsIG1lZGlhIGFuZCAo
b3JpZW50YXRpb246ICdsYW5kc2NhcGUnKSBBTkQgKG1pbi1XSURUSDoxMDBweCkgYW5kIChtYXgt
d2lkdGg6IDIwMHB4ICksIGFsbCBhbmQgKGNvbG9yKSBhbmQgKGNvbG9yKSI+CiNyZXN1bHQgeyBj
b2xvcjogZ3JlZW47IH0KPC9zdHlsZT4KCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgpm
dW5jdGlvbiB0ZXN0KCkgewogICAgcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
Iik7CiAgICByZS5pbm5lckhUTUwgPSAic3RhcnRlZCI7CiAgICByZS5pbm5lckhUTUwgPSBkb2N1
bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQ7Cn0KPC9zY3JpcHQ+Cgo8L2hlYWQ+
Cjxib2R5IG9ubG9hZD0idGVzdCgpIj4KICAgIDxwPiBUZXN0aW5nIHdpdGggbWVkaWEgc2V0IHRv
IHRoZSBmb2xsb3dpbmcgcXVlcnk6PC9wPgogICAgPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiBibHVl
OyI+Tk9UIGJyYWlsbGUsIG1lZGlhIGFuZCAob3JpZW50YXRpb246ICdsYW5kc2NhcGUnKSBBTkQg
KG1pbi1XSURUSDoxMDBweCkgYW5kIChtYXgtd2lkdGg6IDIwMHB4ICksIGFsbCBhbmQgYW5kIChj
b2xvcikgYW5kIChjb2xvcik8L2k+Ljwvc3Bhbj48L3A+CiAgICA8cD4gVGhlIHNlcmlhbGl6ZWQg
bWVkaWEgcXVlcnkgaXMgc2hvd24gYmVsb3cgYW5kIHNob3VsZCBiZSBncmVlbiBhbmQgYmUgZXF1
YWwgdG86PGJyPgogICAgPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+bm90IGJyYWlsbGUs
IG1lZGlhIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgYW5kIChtYXgtd2lkdGg6IDIwMHB4
KSBhbmQgKG1pbi13aWR0aDogMTAwcHgpLCAoY29sb3IpPC9zcGFuPjwvcD4KICAgIDxwPlNlcmlh
bGl6ZWQgbWVkaWEgcXVlcnk6CjxwIGlkPSJyZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1bjwv
cD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56645</attachid>
            <date>2010-05-20 16:34:28 -0700</date>
            <delta_ts>2010-05-21 15:23:48 -0700</delta_ts>
            <desc>patch 1</desc>
            <filename>0001-CSS3-Media-Queries-are-not-serialized-according-to-C.patch</filename>
            <type>text/plain</type>
            <size>18892</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBlYjg4ZTdhYWQ4MDMxMzBlM2I2ZjIwYWMwYWI4OGYwNGJiZjY2YmVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjAgTWF5IDIwMTAgMTk6NDc6MzkgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjIwCgpXZWJD
b3JlOgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRp
b24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCgpNZWRpYVF1ZXJ5IG9iamVjdHMgbm93IGln
bm9yZSBkdXBsaWNhdGVkIGV4cHJlc3Npb25zLiBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKCkK
bm93IGRvZXMgbm90IHByb2NjZXNzIE1lZGlhUXVlcnkgb2JqZWN0cyB0aGF0IGFyZSBrbm93biB0
byBiZSBpbnZhbGlkLgoKVGVzdDogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCiogY3NzL01lZGlhUXVlcnkuY3BwOgooV2ViQ29yZTo6Z2V0UmVzdHJpY3RvclN0cmlu
Zyk6CihXZWJDb3JlOjpzdHJpbmdDb21wYXJlKToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OnNlcmlh
bGl6ZSk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KToKKFdlYkNvcmU6Ok1lZGlh
UXVlcnk6On5NZWRpYVF1ZXJ5KToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6Om9wZXJhdG9yPT0pOgoo
V2ViQ29yZTo6TWVkaWFRdWVyeTo6Y3NzVGV4dCk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjphcHBl
bmQpOgoqIGNzcy9NZWRpYVF1ZXJ5Lmg6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjppZ25vcmVkKToK
KFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmJlZ2luKToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmVuZCk6
CiogY3NzL01lZGlhUXVlcnlFeHAuY3BwOgooV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6c2VyaWFs
aXplKToKKiBjc3MvTWVkaWFRdWVyeUV4cC5oOgoqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwpOgoKTGF5b3V0VGVzdHM6CgpQ
YXRjaCBieSBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPiwgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gPGtlbm5ldGhAd2Via2l0Lm9yZz4gb24gMjAxMC0wNS0y
MApSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFkZGVkIHRlc3QgZm9yIHRlc3RpbmcgdGhl
IHNlcmlhbGl6YXRpb24sIHBsdXMgdXBkYXRlZCBjdXJyZW50CnRlc3RzIHRvIHRha2Ugc2VyaWFs
aXphdGlvbiBpbnRvIGFjY291bnQuCgoqIGZhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0
ZWQudHh0OgoqIGZhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbDoKKiBmYXN0L2Nzcy9yZXNv
dXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5qczoKKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlh
bGl6YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNl
cmlhbGl6YXRpb24uaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKwogTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
aW5zZXJ0UnVsZS1tZWRpYS1leHBlY3RlZC50eHQgfCAgICAyICstCiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0bWwgICAgICAgICB8ICAgIDEgKwogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMgfCAgICAzICstCiAuLi4vbWVk
aWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQgICB8ICAgIDIgKwogLi4u
L2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sICAgICAgfCAgIDQxICsr
KysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAzNSArKysrKysKIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDEyMiArKysrKysrKysrKystLS0tLS0tCiBXZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKystCiBXZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgICAgICAgICAgICB8ICAgMTYgKystCiBXZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrCiBX
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg
KwogMTIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2Vy
aWFsaXphdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYzI5MTEx
Li5mZjRlYmM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDUtMjAgIEx1aXogQWdvc3Rp
bmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+LCBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENTUzMgTWVkaWEgUXVlcmllcyBhcmUgbm90IHNlcmlhbGl6ZWQg
YWNjb3JkaW5nIHRvIENTU09NCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTIyMAorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIHRlc3RpbmcgdGhlIHNl
cmlhbGl6YXRpb24sIHBsdXMgdXBkYXRlZCBjdXJyZW50CisgICAgICAgIHRlc3RzIHRvIHRha2Ug
c2VyaWFsaXphdGlvbiBpbnRvIGFjY291bnQuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9pbnNlcnRS
dWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1l
ZGlhLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEu
anM6CisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxp
emF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTE3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDUxZWFjY2QuLjUzMzYyMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2lu
c2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2lu
c2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURQogCiAKIFBBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShy
dWxlLCAwKSBpcyAwCi1QQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLnJ1bGVzWzBdLmNzc1Rl
eHQgaXMgcnVsZQorUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5ydWxlc1swXS5jc3NUZXh0
IGlzIHNlcmlhbGl6ZWRSdWxlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUt
bWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbApp
bmRleCBkZThmMWQ2Li44M2MyNTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9p
bnNlcnRSdWxlLW1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVs
ZS1tZWRpYS5odG1sCkBAIC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6ZS1hLWxpc3Qtb2YtbWVk
aWEtcXVlcmllcyIgLz4KIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT4KIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
IDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVk
aWEuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5q
cwppbmRleCA5YjZkNDBhLi43ZjUzMmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5qcwpAQCAtMyw3ICszLDggQEAgZGVzY3JpcHRp
b24oCiApOwogCiB2YXIgcnVsZSA9ICJAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAwcHgpIHsg
XG4gICNncmVlbmlkIHsgY29sb3I6IGdyZWVuOyB9XG59IjsKK3ZhciBzZXJpYWxpemVkUnVsZSA9
ICJAbWVkaWEgKG1pbi13aWR0aDogMHB4KSB7IFxuICAjZ3JlZW5pZCB7IGNvbG9yOiBncmVlbjsg
fVxufSI7CiBzaG91bGRCZSgiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShydWxl
LCAwKSIsICIwIik7Ci1zaG91bGRCZSgiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0u
Y3NzVGV4dCIsICJydWxlIik7CitzaG91bGRCZSgiZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVs
ZXNbMF0uY3NzVGV4dCIsICJzZXJpYWxpemVkUnVsZSIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVl
cnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21l
ZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIzNzk1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMiBAQAorUEFTUzogZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEubWVkaWFUZXh0IHNo
b3VsZCBiZSAnbm90IGJyYWlsbGUsIHR2IGFuZCAobWF4LXdpZHRoOiAyMDBweCkgYW5kIChtaW4t
d2lkdGg6IDEwMHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpLCAoY29sb3IpJyBhbmQg
aXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2Vy
aWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJp
YWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0NjY3
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnkt
c2VyaWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+Q1NTMyBtZWRpYSBxdWVyeSBzZXJpYWxpemF0aW9uIHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEu
bWVkaWFUZXh0IHByb3BlcnR5LjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxl
c2hlZXRzLmh0bWwiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2Nzc29tLyNzZXJpYWxpemluZy1tZWRpYS1xdWVyaWVzIiAvPgorCis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJOT1QgYnJhaWxsZSwgdHYgYW5kIChvcmllbnRhdGlvbjogJ2xh
bmRzY2FwZScpIEFORCAobWluLVdJRFRIOjEwMHB4KSBhbmQgKG1heC13aWR0aDogMjAwcHggKSwg
YWxsIGFuZCAoY29sb3IpIGFuZCAoY29sb3IpIj4KKzwvc3R5bGU+CisKKzxzY3JpcHQ+CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gbG9nKG0pCisgICAgeworICAgICAg
ICB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzJyk7CisgICAg
ICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9IG0gKyAnPGJyPic7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2hvdWxkQmUoZGVzYywgYSwgYikKKyAgICB7CisgICAgICAgIGlmIChhID09PSBiKSB7Cisg
ICAgICAgICAgICBsb2coIlBBU1M6ICIgKyBkZXNjICsgIiBzaG91bGQgYmUgJyIgKyBiICsgIicg
YW5kIGlzLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsg
ZGVzYyArICIgc2hvdWxkIGJlICciICsgYiArICInIGJ1dCBpbnN0ZWFkIGlzICciICsgYSArICIn
LiIpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAg
ICAgICB2YXIgZXhwZWN0ZWQgPSAibm90IGJyYWlsbGUsIHR2IGFuZCAobWF4LXdpZHRoOiAyMDBw
eCkgYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpLCAo
Y29sb3IpIjsKKyAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlh
Lm1lZGlhVGV4dCIsIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLm1lZGlhVGV4dCwgZXhw
ZWN0ZWQpOworICAgIH0KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0YmYwNC4u
ZTc1YjE4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wNS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFj
Y29yZGluZyB0byBDU1NPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzkyMjAKKworICAgICAgICBNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRpb24gYWNjb3Jk
aW5nIHRvIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCisKKyAgICAgICAgTWVkaWFRdWVyeSBvYmpl
Y3RzIG5vdyBpZ25vcmUgZHVwbGljYXRlZCBleHByZXNzaW9ucy4gTWVkaWFRdWVyeUV2YWx1YXRv
cjo6ZXZhbCgpCisgICAgICAgIG5vdyBkb2VzIG5vdCBwcm9jY2VzcyBNZWRpYVF1ZXJ5IG9iamVj
dHMgdGhhdCBhcmUga25vd24gdG8gYmUgaW52YWxpZC4KKworICAgICAgICBUZXN0OiBmYXN0L21l
ZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24uaHRtbAorCisgICAgICAgICogY3NzL01lZGlh
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmVzdHJpY3RvclN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdDb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnk6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6On5NZWRpYVF1ZXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjphcHBlbmQp
OgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1
ZXJ5OjppZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmJlZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmVuZCk6CisgICAgICAgICogY3NzL01lZGlhUXVl
cnlFeHAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6c2VyaWFsaXplKToK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5oOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2
YWwpOgorCisKIDIwMTAtMDUtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnkuY3BwIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKaW5kZXggZmY1NzM3
Mi4uOWE0YTU4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEg
UXVlcnkKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtp
bW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDY5ICszMCwxMDAgQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5
LmgiCiAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0
YXRpYyBpbmxpbmUgU3RyaW5nIGdldFJlc3RyaWN0b3JTdHJpbmcoTWVkaWFRdWVyeTo6UmVzdHJp
Y3RvciByKQoreworICAgIHN3aXRjaCAocikgeworICAgIGNhc2UgTWVkaWFRdWVyeTo6T25seToK
KyAgICAgICAgcmV0dXJuICJvbmx5ICI7CisgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6CisgICAg
ICAgIHJldHVybiAibm90ICI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIH0KK30KKworc3RhdGljIGJvb2wgc3RyaW5nQ29tcGFyZShjb25zdCBTdHJpbmcmIGEs
IGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gc3RyY21wKGEudXRmOCgpLmRhdGEoKSwg
Yi51dGY4KCkuZGF0YSgpKSA8IDA7Cit9CisKK1N0cmluZyBNZWRpYVF1ZXJ5OjpzZXJpYWxpemUo
KSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxp
emUtYS1tZWRpYS1xdWVyeQorCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0
LmFwcGVuZChnZXRSZXN0cmljdG9yU3RyaW5nKG1fcmVzdHJpY3RvcikpOworCisgICAgaWYgKG1f
ZXhwcmVzc2lvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVR5
cGUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgaWYg
KG1fbWVkaWFUeXBlICE9ICJhbGwiIHx8IG1fcmVzdHJpY3RvciAhPSBOb25lKSB7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQobV9tZWRpYVR5cGUpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIgYW5k
ICIpOworICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IGxpc3QobV9leHByZXNzaW9ucy5zaXpl
KCkpOworICAgIGNvcHlLZXlzVG9WZWN0b3IobV9leHByZXNzaW9ucywgbGlzdCk7CisgICAgc3Rk
Ojpzb3J0KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgc3RyaW5nQ29tcGFyZSk7CisKKyAgICBy
ZXN1bHQuYXBwZW5kKGxpc3RbMF0pOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC5z
aXplKCk7ICsraSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCIgYW5kICIpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKGxpc3RbaV0pOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5OjphcHBlbmQoTWVkaWFRdWVyeUV4cCogbmV3RXhw
KQoreworICAgIGlmICghbmV3RXhwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faWdu
b3JlZCkKKyAgICAgICAgbV9pZ25vcmVkID0gIW5ld0V4cC0+aXNWYWxpZCgpOworCisgICAgU3Ry
aW5nIGtleSA9IG5ld0V4cC0+c2VyaWFsaXplKCk7CisgICAgaWYgKCFtX2V4cHJlc3Npb25zLmFk
ZChrZXksIG5ld0V4cCkuc2Vjb25kKQorICAgICAgICBkZWxldGUgbmV3RXhwOyAvLyBkZWxldGUg
ZHVwbGljYXRlZAorfQorCiBNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KFJlc3RyaWN0b3IgciwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGV4cHJzKQogICAg
IDogbV9yZXN0cmljdG9yKHIpCi0gICAgLCBtX21lZGlhVHlwZShtZWRpYVR5cGUpCi0gICAgLCBt
X2V4cHJlc3Npb25zKGV4cHJzKQorICAgICwgbV9tZWRpYVR5cGUobWVkaWFUeXBlLmxvd2VyKCkp
CisgICAgLCBtX2lnbm9yZWQoZmFsc2UpCiB7Ci0gICAgaWYgKCFtX2V4cHJlc3Npb25zKQotICAg
ICAgICBtX2V4cHJlc3Npb25zID0gbmV3IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj47CisgICAgaWYg
KCFleHBycykKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
eHBycy0+c2l6ZSgpOyArK2kpCisgICAgICAgIGFwcGVuZChleHBycy0+YXQoaSkpOworICAgIGRl
bGV0ZSBleHByczsKIH0KIAogTWVkaWFRdWVyeTo6fk1lZGlhUXVlcnkoKQogewotICAgIGlmICht
X2V4cHJlc3Npb25zKSB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbV9leHByZXNzaW9ucyk7
Ci0gICAgICAgIGRlbGV0ZSBtX2V4cHJlc3Npb25zOwotICAgIH0KKyAgICBkZWxldGVBbGxWYWx1
ZXMobV9leHByZXNzaW9ucyk7CiB9CiAKIGJvb2wgTWVkaWFRdWVyeTo6b3BlcmF0b3I9PShjb25z
dCBNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9yZXN0cmljdG9yICE9IG90
aGVyLm1fcmVzdHJpY3RvcgotICAgICAgICB8fCBtX21lZGlhVHlwZSAhPSBvdGhlci5tX21lZGlh
VHlwZQotICAgICAgICB8fCBtX2V4cHJlc3Npb25zLT5zaXplKCkgIT0gb3RoZXIubV9leHByZXNz
aW9ucy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlhUXVl
cnlFeHAqIGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOwotICAgICAgICBNZWRpYVF1ZXJ5RXhw
KiBvZXhwID0gb3RoZXIubV9leHByZXNzaW9ucy0+YXQoaSk7Ci0gICAgICAgIGlmICghKCpleHAg
PT0gKm9leHApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOworICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNjb21wYXJlLW1l
ZGlhLXF1ZXJpZXMKKyAgICByZXR1cm4gc2VyaWFsaXplKCkgPT0gb3RoZXIuc2VyaWFsaXplKCk7
CiB9CiAKIFN0cmluZyBNZWRpYVF1ZXJ5Ojpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICBTdHJpbmcg
dGV4dDsKLSAgICBzd2l0Y2ggKG1fcmVzdHJpY3RvcikgewotICAgICAgICBjYXNlIE1lZGlhUXVl
cnk6Ok9ubHk6Ci0gICAgICAgICAgICB0ZXh0ICs9ICJvbmx5ICI7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6Ci0gICAgICAgICAgICB0ZXh0ICs9ICJu
b3QgIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhUXVlcnk6Ok5vbmU6
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgdGV4dCAr
PSBtX21lZGlhVHlwZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbnMt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IG1fZXhwcmVzc2lv
bnMtPmF0KGkpOwotICAgICAgICB0ZXh0ICs9ICIgYW5kICgiOwotICAgICAgICB0ZXh0ICs9IGV4
cC0+bWVkaWFGZWF0dXJlKCk7Ci0gICAgICAgIGlmIChleHAtPnZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIHRleHQgKz0gIjogIjsKLSAgICAgICAgICAgIHRleHQgKz0gZXhwLT52YWx1ZSgpLT5jc3NU
ZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGV4dCArPSAiKSI7Ci0gICAgfQotICAgIHJldHVy
biB0ZXh0OworICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUt
YS1saXN0LW9mLW1lZGlhLXF1ZXJpZXMKKyAgICByZXR1cm4gc2VyaWFsaXplKCk7CiB9CiAKIH0g
Ly9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuaCBiL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnkuaAppbmRleCA3Y2JkM2JmLi4yOTQxMTc5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCkBA
IC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICszMCw5IEBACiAj
ZGVmaW5lIE1lZGlhUXVlcnlfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlh
UXVlcnlFeHA7CkBAIC00NCwxNiArNDcsMjMgQEAgcHVibGljOgogICAgIH5NZWRpYVF1ZXJ5KCk7
CiAKICAgICBSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0
b3I7IH0KLSAgICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHByZXNzaW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7IH0KICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVk
aWFRdWVyeSYgb3RoZXIpIGNvbnN0OwotICAgIHZvaWQgYXBwZW5kKE1lZGlhUXVlcnlFeHAqIG5l
d0V4cCkgeyBtX2V4cHJlc3Npb25zLT5hcHBlbmQobmV3RXhwKTsgfQorICAgIHZvaWQgYXBwZW5k
KE1lZGlhUXVlcnlFeHAqIG5ld0V4cCk7CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAg
ICBib29sIGlnbm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZWQ7IH0KKworICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhUXVlcnlFeHAqPjo6aXRlcmF0b3I6OlZhbHVlcyBpdGVy
YXRvcjsKKyAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnMuYmVnaW4o
KTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnMuZW5kKCk7IH0K
IAogIHByaXZhdGU6CiAgICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CiAgICAgU3RyaW5nIG1f
bWVkaWFUeXBlOwotICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIG1fZXhwcmVzc2lvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIE1lZGlhUXVlcnlFeHAqPiBtX2V4cHJlc3Npb25zOworICAgIGJv
b2wgbV9pZ25vcmVkOworCisgICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
Y3BwIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggMjBjN2JiOS4u
YjlhMzI0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
KysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTIsNiArMiw3IEBA
CiAgKiBDU1MgTWVkaWEgUXVlcnkgRXZhbHVhdG9yCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDMsMjMgKzE0NCwyNCBAQCBi
b29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFMaXN0KiBtZWRpYUxpc3Qs
IENTU1N0eWxlU2VsZWN0b3IqIHN0eQogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWVyaWVzLnNpemUoKSAmJiAhcmVzdWx0OyArK2kpIHsKICAg
ICAgICAgTWVkaWFRdWVyeSogcXVlcnkgPSBxdWVyaWVzLmF0KGkpOworICAgICAgICBpZiAocXVl
cnktPmlnbm9yZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChtZWRp
YVR5cGVNYXRjaChxdWVyeS0+bWVkaWFUeXBlKCkpKSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0
b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBzID0gcXVlcnktPmV4cHJlc3Npb25zKCk7CiAgICAgICAg
ICAgICAvLyBpdGVyYXRlIHRocm91Z2ggZXhwcmVzc2lvbnMsIHN0b3AgaWYgYW55IG9mIHRoZW0g
ZXZhbCB0byBmYWxzZQogICAgICAgICAgICAgLy8gKEFORCBzZW1hbnRpY3MpCi0gICAgICAgICAg
ICBzaXplX3QgaiA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHMtPnNpemUoKTsgKytq
KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbChleHBzLT5hdChqKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0eWxlU2VsZWN0b3IgJiYgZXhwcy0+YXQoaiktPmlzVmll
d3BvcnREZXBlbmRlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+YWRk
Vmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0KGopLCBleHByUmVzdWx0
KTsKKyAgICAgICAgICAgIE1lZGlhUXVlcnk6Oml0ZXJhdG9yIGl0ZXIgPSBxdWVyeS0+YmVnaW4o
KTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IHF1ZXJ5LT5lbmQoKTsgKytpdGVyKSB7Cisg
ICAgICAgICAgICAgICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbCgqaXRlcik7CisgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlU2VsZWN0b3IgJiYgKCppdGVyKS0+aXNWaWV3cG9ydERlcGVuZGVudCgp
KQorICAgICAgICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5hZGRWaWV3cG9ydERlcGVuZGVu
dE1lZGlhUXVlcnlSZXN1bHQoKml0ZXIsIGV4cHJSZXN1bHQpOwogICAgICAgICAgICAgICAgIGlm
ICghZXhwclJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIC8vIGFzc3VtZSB0cnVlIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRo
ZSBsaXN0LAogICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBmYWxzZQotICAgICAgICAg
ICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGV4cHMtPnNp
emUoKSA9PSBqKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3RvcihxdWVyeS0+
cmVzdHJpY3RvcigpLCBpdGVyID09IHF1ZXJ5LT5lbmQoKSk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGZh
bHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBi
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCmluZGV4IDUzYzBiNzMuLmIyMzUyNjkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCisrKyBiL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFeHAuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAg
KgogICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVu
QG5va2lhLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMSw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJT
dHJpbmdCdWlsZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODIsNCArODQsMTcg
QEAgTWVkaWFRdWVyeUV4cDo6fk1lZGlhUXVlcnlFeHAoKQogewogfQogCitTdHJpbmcgTWVkaWFR
dWVyeUV4cDo6c2VyaWFsaXplKCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBy
ZXN1bHQuYXBwZW5kKCIoIik7CisgICAgcmVzdWx0LmFwcGVuZChtX21lZGlhRmVhdHVyZS5sb3dl
cigpKTsKKyAgICBpZiAobV92YWx1ZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCI6ICIpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUtPmNzc1RleHQoKSk7CisgICAgfQorICAgIHJl
c3VsdC5hcHBlbmQoIikiKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggYi9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKaW5kZXggOTI3MjQwMi4uY2I1MmExZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCisrKyBiL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHAuaApAQCAtMiw2ICsyLDcgQEAKICAqIENTUyBNZWRpYSBRdWVyeQogICoKICAqIENv
cHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5j
b20+LgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQs
NiArNjUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFzcGVjdF9yYXRp
b01lZGlhRmVhdHVyZSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5fYXNwZWN0X3Jh
dGlvTWVkaWFGZWF0dXJlIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9tZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heF9hc3BlY3Rf
cmF0aW9NZWRpYUZlYXR1cmU7ICB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXplKCk7CisKIHByaXZh
dGU6CiAgICAgQXRvbWljU3RyaW5nIG1fbWVkaWFGZWF0dXJlOwogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gbV92YWx1ZTsKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="41099"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56752</attachid>
            <date>2010-05-21 15:23:48 -0700</date>
            <delta_ts>2010-05-21 15:43:32 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>0001-CSS3-Media-Queries-are-not-serialized-according-to-C.patch</filename>
            <type>text/plain</type>
            <size>19216</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAyYmU5YjAyMDk3M2U2MTcwNzk4ZGFlZWYzYjcyMzkzNGFiMjU2MzVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMjEgTWF5IDIwMTAgMTk6MjA6NDAgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjIwCgpXZWJD
b3JlOgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRp
b24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCgpNZWRpYVF1ZXJ5IG9iamVjdHMgbm93IGln
bm9yZSBkdXBsaWNhdGVkIGV4cHJlc3Npb25zLiBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKCkK
bm93IGRvZXMgbm90IHByb2NjZXNzIE1lZGlhUXVlcnkgb2JqZWN0cyB0aGF0IGFyZSBrbm93biB0
byBiZSBpbnZhbGlkLgoKVGVzdDogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCiogY3NzL01lZGlhUXVlcnkuY3BwOgooV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUpOgooV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVk
aWFRdWVyeSk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgoo
V2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKiBjc3MvTWVkaWFRdWVyeS5oOgooV2ViQ29y
ZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgoqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKFdlYkNv
cmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CiogY3NzL01lZGlhUXVlcnlFeHAuaDoKKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKCkxheW91dFRlc3RzOgoKUGF0Y2ggYnkgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4sIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuIDxrZW5uZXRo
QHdlYmtpdC5vcmc+IG9uIDIwMTAtMDUtMjAKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGRlZCB0ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3Vy
cmVudAp0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgoKKiBmYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1l
ZGlhLmh0bWw6CiogZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CiogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiog
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgotLS0KIExh
eW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysKIExheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0IHwg
ICAgMiArLQogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sICAgICAg
ICAgfCAgICAxICsKIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxlLW1l
ZGlhLmpzIHwgICAgMyArLQogLi4uL21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0ICAgfCAgICAyICsKIC4uLi9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24uaHRtbCAgICAgIHwgICA0MSArKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrCiBXZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjIgKysrKysrKysrKysrLS0t
LS0tLS0KIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxOSArKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgICAg
ICAgICAgICB8ICAgMTYgKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTUgKysrCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogMTIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2Vy
dGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAxYzI5MTExLi5mZjRlYmM1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTAtMDUtMjAgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5v
cmc+LCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUzMgTWVkaWEg
UXVlcmllcyBhcmUgbm90IHNlcmlhbGl6ZWQgYWNjb3JkaW5nIHRvIENTU09NCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMAorCisgICAgICAgIEFk
ZGVkIHRlc3QgZm9yIHRlc3RpbmcgdGhlIHNlcmlhbGl6YXRpb24sIHBsdXMgdXBkYXRlZCBjdXJy
ZW50CisgICAgICAgIHRlc3RzIHRvIHRha2Ugc2VyaWFsaXphdGlvbiBpbnRvIGFjY291bnQuCisK
KyAgICAgICAgKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0bWw6CisgICAgICAgICogZmFzdC9jc3Mv
cmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CisgICAgICAgICogZmFzdC9tZWRpYS9tZWRp
YS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1
LTE3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9p
bnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2Vy
dFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDUxZWFjY2QuLjUzMzYyMzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CkBA
IC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShydWxlLCAwKSBpcyAwCi1QQVNTIGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLnJ1bGVzWzBdLmNzc1RleHQgaXMgcnVsZQorUEFTUyBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5ydWxlc1swXS5jc3NUZXh0IGlzIHNlcmlhbGl6ZWRSdWxlCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbAppbmRleCBkZThmMWQ2Li44M2MyNTIxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sCkBAIC0xLDYgKzEsNyBAQAog
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8
aGVhZD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6ZS1hLWxpc3Qtb2YtbWVkaWEtcXVlcmllcyIgLz4KIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+PC9zdHlsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5qcwppbmRleCA5YjZkNDBhLi43ZjUzMmMwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5q
cwpAQCAtMyw3ICszLDggQEAgZGVzY3JpcHRpb24oCiApOwogCiB2YXIgcnVsZSA9ICJAbWVkaWEg
YWxsIGFuZCAobWluLXdpZHRoOiAwcHgpIHsgXG4gICNncmVlbmlkIHsgY29sb3I6IGdyZWVuOyB9
XG59IjsKK3ZhciBzZXJpYWxpemVkUnVsZSA9ICJAbWVkaWEgKG1pbi13aWR0aDogMHB4KSB7IFxu
ICAjZ3JlZW5pZCB7IGNvbG9yOiBncmVlbjsgfVxufSI7CiBzaG91bGRCZSgiZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShydWxlLCAwKSIsICIwIik7Ci1zaG91bGRCZSgiZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3NzVGV4dCIsICJydWxlIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3NzVGV4dCIsICJzZXJpYWxpemVkUnVs
ZSIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzk1MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUzogZG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0ubWVkaWEubWVkaWFUZXh0IHNob3VsZCBiZSAnbm90IGJyYWlsbGUsIHR2IGFuZCAo
bWF4LXdpZHRoOiAyMDBweCkgYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQgKG9yaWVudGF0aW9u
OiBsYW5kc2NhcGUpLCAoY29sb3IpJyBhbmQgaXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0NjY3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEs
NDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSBzZXJpYWxpemF0
aW9uIHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5LjwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemluZy1tZWRp
YS1xdWVyaWVzIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJOT1QgYnJhaWxs
ZSwgdHYgYW5kIChvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScpIEFORCAobWluLVdJRFRIOjEwMHB4
KSBhbmQgKG1heC13aWR0aDogMjAwcHggKSwgYWxsIGFuZCAoY29sb3IpIGFuZCAoY29sb3IpIj4K
Kzwvc3R5bGU+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVu
Y3Rpb24gbG9nKG0pCisgICAgeworICAgICAgICB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHRzJyk7CisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9IG0gKyAn
PGJyPic7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2hvdWxkQmUoZGVzYywgYSwgYikKKyAgICB7
CisgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICBsb2coIlBBU1M6ICIgKyBkZXNj
ICsgIiBzaG91bGQgYmUgJyIgKyBiICsgIicgYW5kIGlzLiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgZGVzYyArICIgc2hvdWxkIGJlICciICsgYiArICIn
IGJ1dCBpbnN0ZWFkIGlzICciICsgYSArICInLiIpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAibm90IGJyYWls
bGUsIHR2IGFuZCAobWF4LXdpZHRoOiAyMDBweCkgYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQg
KG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpLCAoY29sb3IpIjsKKyAgICAgICAgc2hvdWxkQmUoImRv
Y3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLm1lZGlhVGV4dCIsIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLm1lZGlhLm1lZGlhVGV4dCwgZXhwZWN0ZWQpOworICAgIH0KKzwvc2NyaXB0PgorCis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYjY0YmYwNC4uNGJiYzUzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0w
NS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MzIE1lZGlhIFF1
ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBDU1NPTQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMjAKKworICAgICAgICBNZWRp
YVF1ZXJ5IHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KKyAgICAgICAg
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMu
CisKKyAgICAgICAgTWVkaWFRdWVyeSBvYmplY3RzIG5vdyBpZ25vcmUgZHVwbGljYXRlZCBleHBy
ZXNzaW9ucy4gTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCgpCisgICAgICAgIG5vdyBkb2VzIG5v
dCBwcm9jY2VzcyBNZWRpYVF1ZXJ5IG9iamVjdHMgdGhhdCBhcmUga25vd24gdG8gYmUgaW52YWxp
ZC4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24u
aHRtbAorCisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVkaWFRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5OjplbmQpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CisgICAgICAgICogY3Nz
L01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKToKKworCiAyMDEw
LTA1LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNw
cCBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCmluZGV4IGZmNTczNzIuLjA1NWRkNjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnkuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVu
QG5va2lhLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2OSArMzAsOTggQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5RXhwLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhUXVlcnk6Ok1lZGlh
UXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlh
UXVlcnlFeHAqPiogZXhwcnMpCitzdGF0aWMgYm9vbCBzdHJpbmdDb21wYXJlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKQoreworICAgIC8vIEZJWE1FOiBpcyB0aGVyZSBhbnkgZ29v
ZCBvcHRpb24gZm9yIGFzY2lpIFN0cmluZyBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbj8KKyAg
ICAvLyBUaGUgYmVsbG93IGlzIGFsc28gdXNlZCBpbiBQbHVnaW5QYWNrYWdlOjpjb21wYXJlCisg
ICAgcmV0dXJuIHN0cmNtcChhLnV0ZjgoKS5kYXRhKCksIGIudXRmOCgpLmRhdGEoKSkgPCAwOwor
fQorCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jc2VyaWFsaXplLWEtbWVkaWEt
cXVlcnkKK1N0cmluZyBNZWRpYVF1ZXJ5OjpzZXJpYWxpemUoKSBjb25zdAoreworICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OworCisgICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsKKyAgICBjYXNl
IE1lZGlhUXVlcnk6Ok9ubHk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIm9ubHkgIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFRdWVyeTo6Tm90OgorICAgICAgICByZXN1bHQuYXBw
ZW5kKCJub3QgIik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmIChtX2V4cHJlc3Npb25zLmlzRW1wdHkoKSkgeworICAgICAgICBy
ZXN1bHQuYXBwZW5kKG1fbWVkaWFUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmlu
ZygpOworICAgIH0KKworICAgIGlmIChtX21lZGlhVHlwZSAhPSAiYWxsIiB8fCBtX3Jlc3RyaWN0
b3IgIT0gTm9uZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKG1fbWVkaWFUeXBlKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5nPiBs
aXN0KG1fZXhwcmVzc2lvbnMuc2l6ZSgpKTsKKyAgICBjb3B5S2V5c1RvVmVjdG9yKG1fZXhwcmVz
c2lvbnMsIGxpc3QpOworICAgIHN0ZDo6c29ydChsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCksIHN0
cmluZ0NvbXBhcmUpOworCisgICAgcmVzdWx0LmFwcGVuZChsaXN0WzBdKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMTsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiIGFuZCAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChsaXN0W2ldKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgTWVkaWFRdWVyeTo6YXBwZW5k
KFBhc3NPd25QdHI8TWVkaWFRdWVyeUV4cD4gbmV3RXhwKQoreworICAgIGlmICghbmV3RXhwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faWdub3JlZCkKKyAgICAgICAgbV9pZ25vcmVk
ID0gIW5ld0V4cC0+aXNWYWxpZCgpOworCisgICAgU3RyaW5nIGtleSA9IG5ld0V4cC0+c2VyaWFs
aXplKCk7CisgICAgaWYgKG1fZXhwcmVzc2lvbnMuYWRkKGtleSwgbmV3RXhwLmdldCgpKS5zZWNv
bmQpCisgICAgICAgIG5ld0V4cC5yZWxlYXNlKCk7Cit9CisKK01lZGlhUXVlcnk6Ok1lZGlhUXVl
cnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0
b3I8TWVkaWFRdWVyeUV4cCo+ID4gZXhwcnMpCiAgICAgOiBtX3Jlc3RyaWN0b3IocikKLSAgICAs
IG1fbWVkaWFUeXBlKG1lZGlhVHlwZSkKLSAgICAsIG1fZXhwcmVzc2lvbnMoZXhwcnMpCisgICAg
LCBtX21lZGlhVHlwZShtZWRpYVR5cGUubG93ZXIoKSkKKyAgICAsIG1faWdub3JlZChmYWxzZSkK
IHsKLSAgICBpZiAoIW1fZXhwcmVzc2lvbnMpCi0gICAgICAgIG1fZXhwcmVzc2lvbnMgPSBuZXcg
VmVjdG9yPE1lZGlhUXVlcnlFeHAqPjsKKyAgICBpZiAoIWV4cHJzKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cHJzLT5zaXplKCk7ICsraSkKKyAgICAg
ICAgYXBwZW5kKGV4cHJzLT5hdChpKSk7CiB9CiAKIE1lZGlhUXVlcnk6On5NZWRpYVF1ZXJ5KCkK
IHsKLSAgICBpZiAobV9leHByZXNzaW9ucykgewotICAgICAgICBkZWxldGVBbGxWYWx1ZXMoKm1f
ZXhwcmVzc2lvbnMpOwotICAgICAgICBkZWxldGUgbV9leHByZXNzaW9uczsKLSAgICB9CisgICAg
ZGVsZXRlQWxsVmFsdWVzKG1fZXhwcmVzc2lvbnMpOwogfQogCisvLyBodHRwOi8vZGV2LnczLm9y
Zy9jc3N3Zy9jc3NvbS8jY29tcGFyZS1tZWRpYS1xdWVyaWVzCiBib29sIE1lZGlhUXVlcnk6Om9w
ZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVz
dHJpY3RvciAhPSBvdGhlci5tX3Jlc3RyaWN0b3IKLSAgICAgICAgfHwgbV9tZWRpYVR5cGUgIT0g
b3RoZXIubV9tZWRpYVR5cGUKLSAgICAgICAgfHwgbV9leHByZXNzaW9ucy0+c2l6ZSgpICE9IG90
aGVyLm1fZXhwcmVzc2lvbnMtPnNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25zLT5zaXplKCk7ICsraSkgewotICAg
ICAgICBNZWRpYVF1ZXJ5RXhwKiBleHAgPSBtX2V4cHJlc3Npb25zLT5hdChpKTsKLSAgICAgICAg
TWVkaWFRdWVyeUV4cCogb2V4cCA9IG90aGVyLm1fZXhwcmVzc2lvbnMtPmF0KGkpOwotICAgICAg
ICBpZiAoISgqZXhwID09ICpvZXhwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gc2VyaWFsaXplKCkgPT0gb3RoZXIuc2Vy
aWFsaXplKCk7CiB9CiAKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxp
emUtYS1saXN0LW9mLW1lZGlhLXF1ZXJpZXMKIFN0cmluZyBNZWRpYVF1ZXJ5Ojpjc3NUZXh0KCkg
Y29uc3QKIHsKLSAgICBTdHJpbmcgdGV4dDsKLSAgICBzd2l0Y2ggKG1fcmVzdHJpY3Rvcikgewot
ICAgICAgICBjYXNlIE1lZGlhUXVlcnk6Ok9ubHk6Ci0gICAgICAgICAgICB0ZXh0ICs9ICJvbmx5
ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6Ci0g
ICAgICAgICAgICB0ZXh0ICs9ICJub3QgIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1lZGlhUXVlcnk6Ok5vbmU6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgdGV4dCArPSBtX21lZGlhVHlwZTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlhUXVlcnlF
eHAqIGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOwotICAgICAgICB0ZXh0ICs9ICIgYW5kICgi
OwotICAgICAgICB0ZXh0ICs9IGV4cC0+bWVkaWFGZWF0dXJlKCk7Ci0gICAgICAgIGlmIChleHAt
PnZhbHVlKCkpIHsKLSAgICAgICAgICAgIHRleHQgKz0gIjogIjsKLSAgICAgICAgICAgIHRleHQg
Kz0gZXhwLT52YWx1ZSgpLT5jc3NUZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGV4dCArPSAi
KSI7Ci0gICAgfQotICAgIHJldHVybiB0ZXh0OworICAgIHJldHVybiBzZXJpYWxpemUoKTsKIH0K
IAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oIGIv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCmluZGV4IDdjYmQzYmYuLjllNTZhNjMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuaAorKysgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
LmgKQEAgLTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEgUXVlcnkKICAqCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzMwLDEw
IEBACiAjZGVmaW5lIE1lZGlhUXVlcnlfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFRdWVyeUV4cDsKQEAgLTQwLDIwICs0
NCwyNyBAQCBwdWJsaWM6CiAgICAgICAgIE9ubHksIE5vdCwgTm9uZQogICAgIH07CiAKLSAgICBN
ZWRpYVF1ZXJ5KFJlc3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFZlY3RvcjxN
ZWRpYVF1ZXJ5RXhwKj4qIGV4cHJzKTsKKyAgICBNZWRpYVF1ZXJ5KFJlc3RyaWN0b3IgciwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUsIFBhc3NPd25QdHI8VmVjdG9yPE1lZGlhUXVlcnlFeHAqPiA+
IGV4cHJzKTsKICAgICB+TWVkaWFRdWVyeSgpOwogCiAgICAgUmVzdHJpY3RvciByZXN0cmljdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdG9yOyB9Ci0gICAgY29uc3QgVmVjdG9yPE1lZGlh
UXVlcnlFeHAqPiogZXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9
CiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFUeXBlOyB9CiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnkmIG90aGVyKSBjb25zdDsKLSAgICB2
b2lkIGFwcGVuZChNZWRpYVF1ZXJ5RXhwKiBuZXdFeHApIHsgbV9leHByZXNzaW9ucy0+YXBwZW5k
KG5ld0V4cCk7IH0KKyAgICB2b2lkIGFwcGVuZChQYXNzT3duUHRyPE1lZGlhUXVlcnlFeHA+IG5l
d0V4cCk7CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIGlnbm9yZWQoKSBj
b25zdCB7IHJldHVybiBtX2lnbm9yZWQ7IH0KKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IE1lZGlhUXVlcnlFeHAqPjo6aXRlcmF0b3I6OlZhbHVlcyBpdGVyYXRvcjsKKyAgICBpdGVyYXRv
ciBiZWdpbigpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnMuYmVnaW4oKTsgfQorICAgIGl0ZXJhdG9y
IGVuZCgpIHsgcmV0dXJuIG1fZXhwcmVzc2lvbnMuZW5kKCk7IH0KIAogIHByaXZhdGU6CiAgICAg
UmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CiAgICAgU3RyaW5nIG1fbWVkaWFUeXBlOwotICAgIFZl
Y3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIG1fZXhwcmVzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IE1lZGlhUXVlcnlFeHAqPiBtX2V4cHJlc3Npb25zOworICAgIGJvb2wgbV9pZ25vcmVkOworCisg
ICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggMjBjN2JiOS4uYjlhMzI0MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEgUXVl
cnkgRXZhbHVhdG9yCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxr
aW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNDMsMjMgKzE0NCwyNCBAQCBib29sIE1lZGlhUXVlcnlFdmFs
dWF0b3I6OmV2YWwoY29uc3QgTWVkaWFMaXN0KiBtZWRpYUxpc3QsIENTU1N0eWxlU2VsZWN0b3Iq
IHN0eQogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBxdWVyaWVzLnNpemUoKSAmJiAhcmVzdWx0OyArK2kpIHsKICAgICAgICAgTWVkaWFRdWVyeSog
cXVlcnkgPSBxdWVyaWVzLmF0KGkpOworICAgICAgICBpZiAocXVlcnktPmlnbm9yZWQoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChtZWRpYVR5cGVNYXRjaChxdWVyeS0+
bWVkaWFUeXBlKCkpKSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+
KiBleHBzID0gcXVlcnktPmV4cHJlc3Npb25zKCk7CiAgICAgICAgICAgICAvLyBpdGVyYXRlIHRo
cm91Z2ggZXhwcmVzc2lvbnMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZQogICAg
ICAgICAgICAgLy8gKEFORCBzZW1hbnRpY3MpCi0gICAgICAgICAgICBzaXplX3QgaiA9IDA7Ci0g
ICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHMtPnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbChleHBzLT5hdChqKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0eWxlU2VsZWN0b3IgJiYgZXhwcy0+YXQoaiktPmlzVmlld3BvcnREZXBlbmRlbnQoKSkK
LSAgICAgICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+YWRkVmlld3BvcnREZXBlbmRlbnRN
ZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0KGopLCBleHByUmVzdWx0KTsKKyAgICAgICAgICAgIE1l
ZGlhUXVlcnk6Oml0ZXJhdG9yIGl0ZXIgPSBxdWVyeS0+YmVnaW4oKTsKKyAgICAgICAgICAgIGZv
ciAoOyBpdGVyICE9IHF1ZXJ5LT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgYm9v
bCBleHByUmVzdWx0ID0gZXZhbCgqaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlU2Vs
ZWN0b3IgJiYgKCppdGVyKS0+aXNWaWV3cG9ydERlcGVuZGVudCgpKQorICAgICAgICAgICAgICAg
ICAgICBzdHlsZVNlbGVjdG9yLT5hZGRWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHQo
Kml0ZXIsIGV4cHJSZXN1bHQpOwogICAgICAgICAgICAgICAgIGlmICghZXhwclJlc3VsdCkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IGFzc3VtZSB0cnVlIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LAogICAgICAgICAg
ICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBmYWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlS
ZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGV4cHMtPnNpemUoKSA9PSBqKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3RvcihxdWVyeS0+cmVzdHJpY3RvcigpLCBpdGVy
ID09IHF1ZXJ5LT5lbmQoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0g
YXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGZhbHNlKTsKICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBiL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHAuY3BwCmluZGV4IDUzYzBiNzMuLmIyMzUyNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHAuY3BwCisrKyBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3Bw
CkBAIC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODIsNCArODQsMTcgQEAgTWVkaWFRdWVyeUV4cDo6
fk1lZGlhUXVlcnlFeHAoKQogewogfQogCitTdHJpbmcgTWVkaWFRdWVyeUV4cDo6c2VyaWFsaXpl
KCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKCIoIik7
CisgICAgcmVzdWx0LmFwcGVuZChtX21lZGlhRmVhdHVyZS5sb3dlcigpKTsKKyAgICBpZiAobV92
YWx1ZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCI6ICIpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKG1fdmFsdWUtPmNzc1RleHQoKSk7CisgICAgfQorICAgIHJlc3VsdC5hcHBlbmQoIikiKTsK
KyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggYi9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwLmgKaW5kZXggOTI3MjQwMi4uY2I1MmExZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV4cC5oCisrKyBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaApAQCAtMiw2
ICsyLDcgQEAKICAqIENTUyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiBL
aW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICogQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsNiArNjUsOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFzcGVjdF9yYXRpb01lZGlhRmVhdHVyZSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWVkaWFGZWF0
dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5fYXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUZl
YXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heF9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmU7
ICB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXplKCk7CisKIHByaXZhdGU6CiAgICAgQXRvbWljU3Ry
aW5nIG1fbWVkaWFGZWF0dXJlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV92YWx1ZTsKLS0gCjEu
Ni4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56757</attachid>
            <date>2010-05-21 15:43:32 -0700</date>
            <delta_ts>2010-05-28 12:22:55 -0700</delta_ts>
            <desc>patch 3</desc>
            <filename>0001-CSS3-Media-Queries-are-not-serialized-according-to-C.patch</filename>
            <type>text/plain</type>
            <size>19215</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA4ZDJkNmQ1ZWNlOWYxYTA0ZTMwMDJjM2ZkNjFmNDU1Y2Y1OGRiM2JiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMjEgTWF5IDIwMTAgMTk6MzY6NTMgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjIwCgpXZWJD
b3JlOgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRp
b24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCgpNZWRpYVF1ZXJ5IG9iamVjdHMgbm93IGln
bm9yZSBkdXBsaWNhdGVkIGV4cHJlc3Npb25zLiBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKCkK
bm93IGRvZXMgbm90IHByb2NjZXNzIE1lZGlhUXVlcnkgb2JqZWN0cyB0aGF0IGFyZSBrbm93biB0
byBiZSBpbnZhbGlkLgoKVGVzdDogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCiogY3NzL01lZGlhUXVlcnkuY3BwOgooV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUpOgooV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVk
aWFRdWVyeSk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgoo
V2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKiBjc3MvTWVkaWFRdWVyeS5oOgooV2ViQ29y
ZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgoqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKFdlYkNv
cmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CiogY3NzL01lZGlhUXVlcnlFeHAuaDoKKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKCkxheW91dFRlc3RzOgoKUGF0Y2ggYnkgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4sIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuIDxrZW5uZXRo
QHdlYmtpdC5vcmc+IG9uIDIwMTAtMDUtMjAKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGRlZCB0ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3Vy
cmVudAp0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgoKKiBmYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1l
ZGlhLmh0bWw6CiogZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CiogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiog
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgotLS0KIExh
eW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysKIExheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0IHwg
ICAgMiArLQogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sICAgICAg
ICAgfCAgICAxICsKIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxlLW1l
ZGlhLmpzIHwgICAgMyArLQogLi4uL21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0ICAgfCAgICAyICsKIC4uLi9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24uaHRtbCAgICAgIHwgICA0MSArKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrCiBXZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMjIgKysrKysrKysrKysrLS0t
LS0tLS0KIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuaCAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxOSArKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgICAg
ICAgICAgICB8ICAgMTYgKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTUgKysrCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogMTIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2Vy
dGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24uaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAxYzI5MTExLi5mZjRlYmM1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTAtMDUtMjAgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5v
cmc+LCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUzMgTWVkaWEg
UXVlcmllcyBhcmUgbm90IHNlcmlhbGl6ZWQgYWNjb3JkaW5nIHRvIENTU09NCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMAorCisgICAgICAgIEFk
ZGVkIHRlc3QgZm9yIHRlc3RpbmcgdGhlIHNlcmlhbGl6YXRpb24sIHBsdXMgdXBkYXRlZCBjdXJy
ZW50CisgICAgICAgIHRlc3RzIHRvIHRha2Ugc2VyaWFsaXphdGlvbiBpbnRvIGFjY291bnQuCisK
KyAgICAgICAgKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0bWw6CisgICAgICAgICogZmFzdC9jc3Mv
cmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CisgICAgICAgICogZmFzdC9tZWRpYS9tZWRp
YS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1
LTE3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9p
bnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2Vy
dFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDUxZWFjY2QuLjUzMzYyMzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0CkBA
IC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShydWxlLCAwKSBpcyAwCi1QQVNTIGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLnJ1bGVzWzBdLmNzc1RleHQgaXMgcnVsZQorUEFTUyBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5ydWxlc1swXS5jc3NUZXh0IGlzIHNlcmlhbGl6ZWRSdWxlCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2luc2VydFJ1bGUtbWVkaWEuaHRtbAppbmRleCBkZThmMWQ2Li44M2MyNTIxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sCkBAIC0xLDYgKzEsNyBAQAog
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8
aGVhZD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6ZS1hLWxpc3Qtb2YtbWVkaWEtcXVlcmllcyIgLz4KIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+PC9zdHlsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9y
ZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5qcwppbmRleCA5YjZkNDBhLi43ZjUzMmMwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvaW5zZXJ0UnVsZS1tZWRpYS5q
cwpAQCAtMyw3ICszLDggQEAgZGVzY3JpcHRpb24oCiApOwogCiB2YXIgcnVsZSA9ICJAbWVkaWEg
YWxsIGFuZCAobWluLXdpZHRoOiAwcHgpIHsgXG4gICNncmVlbmlkIHsgY29sb3I6IGdyZWVuOyB9
XG59IjsKK3ZhciBzZXJpYWxpemVkUnVsZSA9ICJAbWVkaWEgKG1pbi13aWR0aDogMHB4KSB7IFxu
ICAjZ3JlZW5pZCB7IGNvbG9yOiBncmVlbjsgfVxufSI7CiBzaG91bGRCZSgiZG9jdW1lbnQuc3R5
bGVTaGVldHNbMF0uaW5zZXJ0UnVsZShydWxlLCAwKSIsICIwIik7Ci1zaG91bGRCZSgiZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3NzVGV4dCIsICJydWxlIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3NzVGV4dCIsICJzZXJpYWxpemVkUnVs
ZSIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzk1MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6
YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFTUzogZG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0ubWVkaWEubWVkaWFUZXh0IHNob3VsZCBiZSAnbm90IGJyYWlsbGUsIHR2IGFuZCAo
bWF4LXdpZHRoOiAyMDBweCkgYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQgKG9yaWVudGF0aW9u
OiBsYW5kc2NhcGUpLCAoY29sb3IpJyBhbmQgaXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0NjY3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEs
NDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSBzZXJpYWxpemF0
aW9uIHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5LjwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemluZy1tZWRp
YS1xdWVyaWVzIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJOT1QgYnJhaWxs
ZSwgdHYgYW5kIChvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScpIEFORCAobWluLVdJRFRIOjEwMHB4
KSBhbmQgKG1heC13aWR0aDogMjAwcHggKSwgYWxsIGFuZCAoY29sb3IpIGFuZCAoY29sb3IpIj4K
Kzwvc3R5bGU+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVu
Y3Rpb24gbG9nKG0pCisgICAgeworICAgICAgICB2YXIgcmVzdWx0cyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyZXN1bHRzJyk7CisgICAgICAgIHJlc3VsdHMuaW5uZXJIVE1MICs9IG0gKyAn
PGJyPic7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2hvdWxkQmUoZGVzYywgYSwgYikKKyAgICB7
CisgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICBsb2coIlBBU1M6ICIgKyBkZXNj
ICsgIiBzaG91bGQgYmUgJyIgKyBiICsgIicgYW5kIGlzLiIpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbG9nKCJGQUlMOiAiICsgZGVzYyArICIgc2hvdWxkIGJlICciICsgYiArICIn
IGJ1dCBpbnN0ZWFkIGlzICciICsgYSArICInLiIpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdCgpCisgICAgeworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAibm90IGJyYWls
bGUsIHR2IGFuZCAobWF4LXdpZHRoOiAyMDBweCkgYW5kIChtaW4td2lkdGg6IDEwMHB4KSBhbmQg
KG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpLCAoY29sb3IpIjsKKyAgICAgICAgc2hvdWxkQmUoImRv
Y3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLm1lZGlhVGV4dCIsIGRvY3VtZW50LnN0eWxlU2hl
ZXRzWzBdLm1lZGlhLm1lZGlhVGV4dCwgZXhwZWN0ZWQpOworICAgIH0KKzwvc2NyaXB0PgorCis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8ZGl2IGlkPSJyZXN1bHRzIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYjY0YmYwNC4uNGJiYzUzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0w
NS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MzIE1lZGlhIFF1
ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBDU1NPTQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMjAKKworICAgICAgICBNZWRp
YVF1ZXJ5IHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KKyAgICAgICAg
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMu
CisKKyAgICAgICAgTWVkaWFRdWVyeSBvYmplY3RzIG5vdyBpZ25vcmUgZHVwbGljYXRlZCBleHBy
ZXNzaW9ucy4gTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCgpCisgICAgICAgIG5vdyBkb2VzIG5v
dCBwcm9jY2VzcyBNZWRpYVF1ZXJ5IG9iamVjdHMgdGhhdCBhcmUga25vd24gdG8gYmUgaW52YWxp
ZC4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24u
aHRtbAorCisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3RyaW5nQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVkaWFRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5OjplbmQpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CisgICAgICAgICogY3Nz
L01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKToKKworCiAyMDEw
LTA1LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNw
cCBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCmluZGV4IGZmNTczNzIuLjk2OTVhMDUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnkuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVu
QG5va2lhLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2OSArMzAsOTggQEAKICNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5RXhwLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorCisjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhUXVlcnk6Ok1lZGlh
UXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlh
UXVlcnlFeHAqPiogZXhwcnMpCitzdGF0aWMgYm9vbCBzdHJpbmdDb21wYXJlKGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKQoreworICAgIC8vIEZJWE1FOiBpcyB0aGVyZSBhbnkgZ29v
ZCBvcHRpb24gZm9yIGFzY2lpIFN0cmluZyBsZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbj8KKyAg
ICAvLyBUaGUgYmVsb3cgaXMgYWxzbyB1c2VkIGluIFBsdWdpblBhY2thZ2U6OmNvbXBhcmUKKyAg
ICByZXR1cm4gc3RyY21wKGEudXRmOCgpLmRhdGEoKSwgYi51dGY4KCkuZGF0YSgpKSA8IDA7Cit9
CisKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1tZWRpYS1x
dWVyeQorU3RyaW5nIE1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0Cit7CisgICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7CisKKyAgICBzd2l0Y2ggKG1fcmVzdHJpY3RvcikgeworICAgIGNhc2Ug
TWVkaWFRdWVyeTo6T25seToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgib25seSAiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoIm5vdCAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKG1fZXhwcmVzc2lvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQobV9tZWRpYVR5cGUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CisgICAgfQorCisgICAgaWYgKG1fbWVkaWFUeXBlICE9ICJhbGwiIHx8IG1fcmVzdHJpY3Rv
ciAhPSBOb25lKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVR5cGUpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCIgYW5kICIpOworICAgIH0KKworICAgIFZlY3RvcjxTdHJpbmc+IGxp
c3QobV9leHByZXNzaW9ucy5zaXplKCkpOworICAgIGNvcHlLZXlzVG9WZWN0b3IobV9leHByZXNz
aW9ucywgbGlzdCk7CisgICAgc3RkOjpzb3J0KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgc3Ry
aW5nQ29tcGFyZSk7CisKKyAgICByZXN1bHQuYXBwZW5kKGxpc3RbMF0pOworICAgIGZvciAoc2l6
ZV90IGkgPSAxOyBpIDwgbGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICByZXN1bHQuYXBwZW5k
KCIgYW5kICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RbaV0pOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5OjphcHBlbmQo
UGFzc093blB0cjxNZWRpYVF1ZXJ5RXhwPiBuZXdFeHApCit7CisgICAgaWYgKCFuZXdFeHApCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9pZ25vcmVkKQorICAgICAgICBtX2lnbm9yZWQg
PSAhbmV3RXhwLT5pc1ZhbGlkKCk7CisKKyAgICBTdHJpbmcga2V5ID0gbmV3RXhwLT5zZXJpYWxp
emUoKTsKKyAgICBpZiAobV9leHByZXNzaW9ucy5hZGQoa2V5LCBuZXdFeHAuZ2V0KCkpLnNlY29u
ZCkKKyAgICAgICAgbmV3RXhwLnJlbGVhc2UoKTsKK30KKworTWVkaWFRdWVyeTo6TWVkaWFRdWVy
eShSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCBQYXNzT3duUHRyPFZlY3Rv
cjxNZWRpYVF1ZXJ5RXhwKj4gPiBleHBycykKICAgICA6IG1fcmVzdHJpY3RvcihyKQotICAgICwg
bV9tZWRpYVR5cGUobWVkaWFUeXBlKQotICAgICwgbV9leHByZXNzaW9ucyhleHBycykKKyAgICAs
IG1fbWVkaWFUeXBlKG1lZGlhVHlwZS5sb3dlcigpKQorICAgICwgbV9pZ25vcmVkKGZhbHNlKQog
ewotICAgIGlmICghbV9leHByZXNzaW9ucykKLSAgICAgICAgbV9leHByZXNzaW9ucyA9IG5ldyBW
ZWN0b3I8TWVkaWFRdWVyeUV4cCo+OworICAgIGlmICghZXhwcnMpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhwcnMtPnNpemUoKTsgKytpKQorICAgICAg
ICBhcHBlbmQoZXhwcnMtPmF0KGkpKTsKIH0KIAogTWVkaWFRdWVyeTo6fk1lZGlhUXVlcnkoKQog
ewotICAgIGlmIChtX2V4cHJlc3Npb25zKSB7Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbV9l
eHByZXNzaW9ucyk7Ci0gICAgICAgIGRlbGV0ZSBtX2V4cHJlc3Npb25zOwotICAgIH0KKyAgICBk
ZWxldGVBbGxWYWx1ZXMobV9leHByZXNzaW9ucyk7CiB9CiAKKy8vIGh0dHA6Ly9kZXYudzMub3Jn
L2Nzc3dnL2Nzc29tLyNjb21wYXJlLW1lZGlhLXF1ZXJpZXMKIGJvb2wgTWVkaWFRdWVyeTo6b3Bl
cmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAobV9yZXN0
cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3RvcgotICAgICAgICB8fCBtX21lZGlhVHlwZSAhPSBv
dGhlci5tX21lZGlhVHlwZQotICAgICAgICB8fCBtX2V4cHJlc3Npb25zLT5zaXplKCkgIT0gb3Ro
ZXIubV9leHByZXNzaW9ucy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOwotICAgICAgICBN
ZWRpYVF1ZXJ5RXhwKiBvZXhwID0gb3RoZXIubV9leHByZXNzaW9ucy0+YXQoaSk7Ci0gICAgICAg
IGlmICghKCpleHAgPT0gKm9leHApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBzZXJpYWxpemUoKSA9PSBvdGhlci5zZXJp
YWxpemUoKTsKIH0KIAorLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6
ZS1hLWxpc3Qtb2YtbWVkaWEtcXVlcmllcwogU3RyaW5nIE1lZGlhUXVlcnk6OmNzc1RleHQoKSBj
b25zdAogewotICAgIFN0cmluZyB0ZXh0OwotICAgIHN3aXRjaCAobV9yZXN0cmljdG9yKSB7Ci0g
ICAgICAgIGNhc2UgTWVkaWFRdWVyeTo6T25seToKLSAgICAgICAgICAgIHRleHQgKz0gIm9ubHkg
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhUXVlcnk6Ok5vdDoKLSAg
ICAgICAgICAgIHRleHQgKz0gIm5vdCAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTWVkaWFRdWVyeTo6Tm9uZToKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICB0ZXh0ICs9IG1fbWVkaWFUeXBlOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9leHByZXNzaW9ucy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTWVkaWFRdWVyeUV4
cCogZXhwID0gbV9leHByZXNzaW9ucy0+YXQoaSk7Ci0gICAgICAgIHRleHQgKz0gIiBhbmQgKCI7
Ci0gICAgICAgIHRleHQgKz0gZXhwLT5tZWRpYUZlYXR1cmUoKTsKLSAgICAgICAgaWYgKGV4cC0+
dmFsdWUoKSkgewotICAgICAgICAgICAgdGV4dCArPSAiOiAiOwotICAgICAgICAgICAgdGV4dCAr
PSBleHAtPnZhbHVlKCktPmNzc1RleHQoKTsKLSAgICAgICAgfQotICAgICAgICB0ZXh0ICs9ICIp
IjsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHNlcmlhbGl6ZSgpOwogfQog
CiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmggYi9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgKaW5kZXggN2NiZDNiZi4uOWU1NmE2MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCisrKyBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnku
aApAQCAtMiw2ICsyLDcgQEAKICAqIENTUyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAo
QykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNyArMzAsMTAg
QEAKICNkZWZpbmUgTWVkaWFRdWVyeV9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwpAQCAtNDAsMjAgKzQ0
LDI3IEBAIHB1YmxpYzoKICAgICAgICAgT25seSwgTm90LCBOb25lCiAgICAgfTsKIAotICAgIE1l
ZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1l
ZGlhUXVlcnlFeHAqPiogZXhwcnMpOworICAgIE1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4g
ZXhwcnMpOwogICAgIH5NZWRpYVF1ZXJ5KCk7CiAKICAgICBSZXN0cmljdG9yIHJlc3RyaWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLSAgICBjb25zdCBWZWN0b3I8TWVkaWFR
dWVyeUV4cCo+KiBleHByZXNzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7IH0K
ICAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeSYgb3RoZXIpIGNvbnN0OwotICAgIHZv
aWQgYXBwZW5kKE1lZGlhUXVlcnlFeHAqIG5ld0V4cCkgeyBtX2V4cHJlc3Npb25zLT5hcHBlbmQo
bmV3RXhwKTsgfQorICAgIHZvaWQgYXBwZW5kKFBhc3NPd25QdHI8TWVkaWFRdWVyeUV4cD4gbmV3
RXhwKTsKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgaWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWdub3JlZDsgfQorCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
TWVkaWFRdWVyeUV4cCo+OjppdGVyYXRvcjo6VmFsdWVzIGl0ZXJhdG9yOworICAgIGl0ZXJhdG9y
IGJlZ2luKCkgeyByZXR1cm4gbV9leHByZXNzaW9ucy5iZWdpbigpOyB9CisgICAgaXRlcmF0b3Ig
ZW5kKCkgeyByZXR1cm4gbV9leHByZXNzaW9ucy5lbmQoKTsgfQogCiAgcHJpdmF0ZToKICAgICBS
ZXN0cmljdG9yIG1fcmVzdHJpY3RvcjsKICAgICBTdHJpbmcgbV9tZWRpYVR5cGU7Ci0gICAgVmVj
dG9yPE1lZGlhUXVlcnlFeHAqPiogbV9leHByZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywg
TWVkaWFRdWVyeUV4cCo+IG1fZXhwcmVzc2lvbnM7CisgICAgYm9vbCBtX2lnbm9yZWQ7CisKKyAg
ICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCAyMGM3YmI5Li5iOWEzMjQyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENTUyBNZWRpYSBRdWVy
eSBFdmFsdWF0b3IKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtp
bW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE0MywyMyArMTQ0LDI0IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbChjb25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCwgQ1NTU3R5bGVTZWxlY3Rvciog
c3R5CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1ZXJpZXMuc2l6ZSgpICYmICFyZXN1bHQ7ICsraSkgewogICAgICAgICBNZWRpYVF1ZXJ5KiBx
dWVyeSA9IHF1ZXJpZXMuYXQoaSk7CisgICAgICAgIGlmIChxdWVyeS0+aWdub3JlZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKG1lZGlhVHlwZU1hdGNoKHF1ZXJ5LT5t
ZWRpYVR5cGUoKSkpIHsKLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4q
IGV4cHMgPSBxdWVyeS0+ZXhwcmVzc2lvbnMoKTsKICAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhy
b3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlCiAgICAg
ICAgICAgICAvLyAoQU5EIHNlbWFudGljcykKLSAgICAgICAgICAgIHNpemVfdCBqID0gMDsKLSAg
ICAgICAgICAgIGZvciAoOyBqIDwgZXhwcy0+c2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAg
ICBib29sIGV4cHJSZXN1bHQgPSBldmFsKGV4cHMtPmF0KGopKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc3R5bGVTZWxlY3RvciAmJiBleHBzLT5hdChqKS0+aXNWaWV3cG9ydERlcGVuZGVudCgpKQot
ICAgICAgICAgICAgICAgICAgICBzdHlsZVNlbGVjdG9yLT5hZGRWaWV3cG9ydERlcGVuZGVudE1l
ZGlhUXVlcnlSZXN1bHQoZXhwcy0+YXQoaiksIGV4cHJSZXN1bHQpOworICAgICAgICAgICAgTWVk
aWFRdWVyeTo6aXRlcmF0b3IgaXRlciA9IHF1ZXJ5LT5iZWdpbigpOworICAgICAgICAgICAgZm9y
ICg7IGl0ZXIgIT0gcXVlcnktPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBib29s
IGV4cHJSZXN1bHQgPSBldmFsKCppdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGVTZWxl
Y3RvciAmJiAoKml0ZXIpLT5pc1ZpZXdwb3J0RGVwZW5kZW50KCkpCisgICAgICAgICAgICAgICAg
ICAgIHN0eWxlU2VsZWN0b3ItPmFkZFZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdCgq
aXRlciwgZXhwclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCFleHByUmVzdWx0KQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8g
YXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QsCiAgICAgICAgICAg
ICAvLyBvdGhlcndpc2UgYXNzdW1lIGZhbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBhcHBseVJl
c3RyaWN0b3IocXVlcnktPnJlc3RyaWN0b3IoKSwgZXhwcy0+c2l6ZSgpID09IGopOworICAgICAg
ICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGl0ZXIg
PT0gcXVlcnktPmVuZCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBh
cHBseVJlc3RyaWN0b3IocXVlcnktPnJlc3RyaWN0b3IoKSwgZmFsc2UpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwIGIvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV4cC5jcHAKaW5kZXggNTNjMGI3My4uYjIzNTI2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV4cC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAK
QEAgLTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEgUXVlcnkKICAqCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw0ICs4NCwxNyBAQCBNZWRpYVF1ZXJ5RXhwOjp+
TWVkaWFRdWVyeUV4cCgpCiB7CiB9CiAKK1N0cmluZyBNZWRpYVF1ZXJ5RXhwOjpzZXJpYWxpemUo
KQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQoIigiKTsK
KyAgICByZXN1bHQuYXBwZW5kKG1fbWVkaWFGZWF0dXJlLmxvd2VyKCkpOworICAgIGlmIChtX3Zh
bHVlKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIjogIik7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQobV92YWx1ZS0+Y3NzVGV4dCgpKTsKKyAgICB9CisgICAgcmVzdWx0LmFwcGVuZCgiKSIpOwor
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFeHAuaAppbmRleCA5MjcyNDAyLi5jYjUyYTFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXhwLmgKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCkBAIC0yLDYg
KzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEtp
bW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCw2ICs2NSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6YXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUZlYXR1
cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1pbl9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmUgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21lZGlhRmVh
dHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4X2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZTsg
IH0KKworICAgIFN0cmluZyBzZXJpYWxpemUoKTsKKwogcHJpdmF0ZToKICAgICBBdG9taWNTdHJp
bmcgbV9tZWRpYUZlYXR1cmU7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3ZhbHVlOwotLSAKMS42
LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57361</attachid>
            <date>2010-05-28 12:22:55 -0700</date>
            <delta_ts>2010-05-28 13:52:11 -0700</delta_ts>
            <desc>patch 4</desc>
            <filename>0001-CSS3-Media-Queries-are-not-serialized-according-to-C.patch</filename>
            <type>text/plain</type>
            <size>17753</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAwYjA3NTRlYWI5ZGZhYmE0M2E0MjMxODQ0YTMyNTZjMmQ0MzkwZTZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMjggTWF5IDIwMTAgMTY6MTk6NDAgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjIwCgpXZWJD
b3JlOgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRp
b24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCgpNZWRpYVF1ZXJ5IG9iamVjdHMgbm93IGln
bm9yZSBkdXBsaWNhdGVkIGV4cHJlc3Npb25zLiBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKCkK
bm93IGRvZXMgbm90IHByb2NjZXNzIE1lZGlhUXVlcnkgb2JqZWN0cyB0aGF0IGFyZSBrbm93biB0
byBiZSBpbnZhbGlkLgoKVGVzdDogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCiogY3NzL01lZGlhUXVlcnkuY3BwOgooV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUpOgooV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVk
aWFRdWVyeSk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgoo
V2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKiBjc3MvTWVkaWFRdWVyeS5oOgooV2ViQ29y
ZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgoqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKFdlYkNv
cmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CiogY3NzL01lZGlhUXVlcnlFeHAuaDoKKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKCkxheW91dFRlc3RzOgoKUGF0Y2ggYnkgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4sIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuIDxrZW5uZXRo
QHdlYmtpdC5vcmc+IG9uIDIwMTAtMDUtMjAKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGRlZCB0ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3Vy
cmVudAp0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgoKKiBmYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1l
ZGlhLmh0bWw6CiogZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CiogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiog
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgotLS0KIExh
eW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysKIExheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0IHwg
ICAgMiArLQogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sICAgICAg
ICAgfCAgICAxICsKIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxlLW1l
ZGlhLmpzIHwgICAgMyArLQogLi4uL21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0ICAgfCAgIDEwICsrCiAuLi4vZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxp
emF0aW9uLmh0bWwgICAgICB8ICAgMzEgKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysKIFdlYkNvcmUvY3NzL01lZGlh
UXVlcnkuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyMyArKysrKysrKysrKystLS0t
LS0tCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTEgKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgICAgICAg
ICAgICB8ICAgIDMgKwogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDIwICsrKwogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA1ICsKIDEyIGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25z
KCspLCA0OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYjY2ZTE5Ny4uMzlkODI0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEwLTA1LTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPiwg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MzIE1lZGlhIFF1ZXJp
ZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBDU1NPTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMjAKKworICAgICAgICBBZGRlZCB0
ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3VycmVudAor
ICAgICAgICB0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgorCisgICAg
ICAgICogZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL3Jlc291
cmNlcy9pbnNlcnRSdWxlLW1lZGlhLmpzOgorICAgICAgICAqIGZhc3QvbWVkaWEvbWVkaWEtcXVl
cnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0wNS0yOCAg
U2h1IENoYW5nICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4
dAppbmRleCA1MWVhY2NkLi41MzM2MjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmluc2VydFJ1
bGUocnVsZSwgMCkgaXMgMAotUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5ydWxlc1swXS5j
c3NUZXh0IGlzIHJ1bGUKK1BBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3Nz
VGV4dCBpcyBzZXJpYWxpemVkUnVsZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRS
dWxlLW1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0
bWwKaW5kZXggZGU4ZjFkNi4uODNjMjUyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2Vy
dFJ1bGUtbWVkaWEuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1saXN0LW9m
LW1lZGlhLXF1ZXJpZXMiIC8+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+CiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxl
LW1lZGlhLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVk
aWEuanMKaW5kZXggOWI2ZDQwYS4uN2Y1MzJjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMKQEAgLTMsNyArMyw4IEBAIGRlc2Ny
aXB0aW9uKAogKTsKIAogdmFyIHJ1bGUgPSAiQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMHB4
KSB7IFxuICAjZ3JlZW5pZCB7IGNvbG9yOiBncmVlbjsgfVxufSI7Cit2YXIgc2VyaWFsaXplZFJ1
bGUgPSAiQG1lZGlhIChtaW4td2lkdGg6IDBweCkgeyBcbiAgI2dyZWVuaWQgeyBjb2xvcjogZ3Jl
ZW47IH1cbn0iOwogc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmluc2VydFJ1bGUo
cnVsZSwgMCkiLCAiMCIpOwotc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLnJ1bGVz
WzBdLmNzc1RleHQiLCAicnVsZSIpOworc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LnJ1bGVzWzBdLmNzc1RleHQiLCAic2VyaWFsaXplZFJ1bGUiKTsKIAogdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlh
LXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZjMwZjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0IG1lZGlhIHF1ZXJ5IHNlcmlhbGl6YXRpb24uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQg
aXMgZXhwZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNl
cmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2Vy
aWFsaXphdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYmFl
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5
LXNlcmlhbGl6YXRpb24uaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8iIC8+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJOT1QgYnJhaWxsZSwgdHYgYW5kIChvcmllbnRhdGlvbjogJ2xh
bmRzY2FwZScpIEFORCAobWluLVdJRFRIOjEwMHB4KSBhbmQgKG1heC13aWR0aDogMjAwcHggKSwg
YWxsIGFuZCAoY29sb3IpIGFuZCAoY29sb3IpIj4KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigKKydUZXN0IG1lZGlhIHF1ZXJ5IHNlcmlh
bGl6YXRpb24uICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzkyMjAiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMDwv
YT4nCispOworCisKK3ZhciBleHBlY3RlZCA9ICJub3QgYnJhaWxsZSwgdHYgYW5kIChtYXgtd2lk
dGg6IDIwMHB4KSBhbmQgKG1pbi13aWR0aDogMTAwcHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRz
Y2FwZSksIChjb2xvcikiOworc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlh
Lm1lZGlhVGV4dCIsICJleHBlY3RlZCIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0MjM5ZC4uMWZjYzMyNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMC0wNS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzky
MjAKKworICAgICAgICBNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6
aW5nLW1lZGlhLXF1ZXJpZXMuCisKKyAgICAgICAgTWVkaWFRdWVyeSBvYmplY3RzIG5vdyBpZ25v
cmUgZHVwbGljYXRlZCBleHByZXNzaW9ucy4gTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCgpCisg
ICAgICAgIG5vdyBkb2VzIG5vdCBwcm9jY2VzcyBNZWRpYVF1ZXJ5IG9iamVjdHMgdGhhdCBhcmUg
a25vd24gdG8gYmUgaW52YWxpZC4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhL21lZGlhLXF1
ZXJ5LXNlcmlhbGl6YXRpb24uaHRtbAorCisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5OjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVkaWFR
dWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBw
ZW5kKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeTo6aWdub3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgorICAgICAgICAqIGNzcy9NZWRp
YVF1ZXJ5RXhwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6
ZSk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKKworCiAyMDEwLTA1LTI3ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAppbmRl
eCBmZjU3MzcyLi40ZmVkODhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNw
cAorKysgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENT
UyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBLaW1tbyBLaW5u
dW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNzAgKzI5LDEwMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKIAorI2luY2x1ZGUgIkNvbGxhdG9yLmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIK
KworI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRpYVF1
ZXJ5OjpNZWRpYVF1ZXJ5KFJlc3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFZl
Y3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGV4cHJzKQorLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cv
Y3Nzb20vI3NlcmlhbGl6ZS1hLW1lZGlhLXF1ZXJ5CitTdHJpbmcgTWVkaWFRdWVyeTo6c2VyaWFs
aXplKCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKworICAgIHN3aXRjaCAo
bV9yZXN0cmljdG9yKSB7CisgICAgY2FzZSBNZWRpYVF1ZXJ5OjpPbmx5OgorICAgICAgICByZXN1
bHQuYXBwZW5kKCJvbmx5ICIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhUXVlcnk6
Ok5vdDoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgibm90ICIpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lZGlhUXVlcnk6Ok5vbmU6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
IChtX2V4cHJlc3Npb25zLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtX21l
ZGlhVHlwZSk7CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAg
ICBpZiAobV9tZWRpYVR5cGUgIT0gImFsbCIgfHwgbV9yZXN0cmljdG9yICE9IE5vbmUpIHsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChtX21lZGlhVHlwZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
IiBhbmQgIik7CisgICAgfQorCisgICAgcmVzdWx0LmFwcGVuZChtX2V4cHJlc3Npb25zLT5hdCgw
KS0+c2VyaWFsaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV9leHByZXNzaW9u
cy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiIGFuZCAiKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX2V4cHJlc3Npb25zLT5hdChpKS0+c2VyaWFsaXplKCkpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBib29sIGV4cHJl
c3Npb25Db21wYXJlKGNvbnN0IE1lZGlhUXVlcnlFeHAqIGEsIGNvbnN0IE1lZGlhUXVlcnlFeHAq
IGIpCit7CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS0+c2VyaWFsaXplKCksIGItPnNl
cmlhbGl6ZSgpKSA8IDA7Cit9CisKK01lZGlhUXVlcnk6Ok1lZGlhUXVlcnkoUmVzdHJpY3RvciBy
LCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4
cCo+ID4gZXhwcnMpCiAgICAgOiBtX3Jlc3RyaWN0b3IocikKLSAgICAsIG1fbWVkaWFUeXBlKG1l
ZGlhVHlwZSkKLSAgICAsIG1fZXhwcmVzc2lvbnMoZXhwcnMpCisgICAgLCBtX21lZGlhVHlwZSht
ZWRpYVR5cGUubG93ZXIoKSkKKyAgICAsIG1fZXhwcmVzc2lvbnMoZXhwcnMucmVsZWFzZSgpKQor
ICAgICwgbV9pZ25vcmVkKGZhbHNlKQogewotICAgIGlmICghbV9leHByZXNzaW9ucykKKyAgICBp
ZiAoIW1fZXhwcmVzc2lvbnMpIHsKICAgICAgICAgbV9leHByZXNzaW9ucyA9IG5ldyBWZWN0b3I8
TWVkaWFRdWVyeUV4cCo+OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjpzb3J0
KG1fZXhwcmVzc2lvbnMtPmJlZ2luKCksIG1fZXhwcmVzc2lvbnMtPmVuZCgpLCBleHByZXNzaW9u
Q29tcGFyZSk7CisKKyAgICAvLyByZW1vdmUgYWxsIGR1cGxpY2F0ZWQgZXhwcmVzc2lvbnMKKyAg
ICBTdHJpbmcga2V5OworICAgIGZvciAoaW50IGkgPSBtX2V4cHJlc3Npb25zLT5zaXplKCkgLSAx
OyBpID49IDA7IC0taSkgeworCisgICAgICAgIC8vIGlmIG5vdCBhbGwgb2YgdGhlIGV4cHJlc3Np
b25zIGlzIHZhbGlkIHRoZSBtZWRpYSBxdWVyeSBtdXN0IGJlIGlnbm9yZWQuCisgICAgICAgIGlm
ICghbV9pZ25vcmVkKQorICAgICAgICAgICAgbV9pZ25vcmVkID0gIW1fZXhwcmVzc2lvbnMtPmF0
KGkpLT5pc1ZhbGlkKCk7CisKKyAgICAgICAgaWYgKG1fZXhwcmVzc2lvbnMtPmF0KGkpLT5zZXJp
YWxpemUoKSA9PSBrZXkpIHsKKyAgICAgICAgICAgIE1lZGlhUXVlcnlFeHAqIGl0ZW0gPSBtX2V4
cHJlc3Npb25zLT5hdChpKTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvbnMtPnJlbW92ZShpKTsK
KyAgICAgICAgICAgIGRlbGV0ZSBpdGVtOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGtl
eSA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpLT5zZXJpYWxpemUoKTsKKyAgICB9CiB9CiAKIE1lZGlh
UXVlcnk6On5NZWRpYVF1ZXJ5KCkKIHsKLSAgICBpZiAobV9leHByZXNzaW9ucykgewotICAgICAg
ICBkZWxldGVBbGxWYWx1ZXMoKm1fZXhwcmVzc2lvbnMpOwotICAgICAgICBkZWxldGUgbV9leHBy
ZXNzaW9uczsKLSAgICB9CisgICAgZGVsZXRlQWxsVmFsdWVzKCptX2V4cHJlc3Npb25zKTsKKyAg
ICBkZWxldGUgbV9leHByZXNzaW9uczsKIH0KIAorLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cv
Y3Nzb20vI2NvbXBhcmUtbWVkaWEtcXVlcmllcwogYm9vbCBNZWRpYVF1ZXJ5OjpvcGVyYXRvcj09
KGNvbnN0IE1lZGlhUXVlcnkmIG90aGVyKSBjb25zdAogewotICAgIGlmIChtX3Jlc3RyaWN0b3Ig
IT0gb3RoZXIubV9yZXN0cmljdG9yCi0gICAgICAgIHx8IG1fbWVkaWFUeXBlICE9IG90aGVyLm1f
bWVkaWFUeXBlCi0gICAgICAgIHx8IG1fZXhwcmVzc2lvbnMtPnNpemUoKSAhPSBvdGhlci5tX2V4
cHJlc3Npb25zLT5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9ucy0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTWVk
aWFRdWVyeUV4cCogZXhwID0gbV9leHByZXNzaW9ucy0+YXQoaSk7Ci0gICAgICAgIE1lZGlhUXVl
cnlFeHAqIG9leHAgPSBvdGhlci5tX2V4cHJlc3Npb25zLT5hdChpKTsKLSAgICAgICAgaWYgKCEo
KmV4cCA9PSAqb2V4cCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNzc1RleHQoKSA9PSBvdGhlci5jc3NUZXh0KCk7CiB9
CiAKKy8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1saXN0LW9m
LW1lZGlhLXF1ZXJpZXMKIFN0cmluZyBNZWRpYVF1ZXJ5Ojpjc3NUZXh0KCkgY29uc3QKIHsKLSAg
ICBTdHJpbmcgdGV4dDsKLSAgICBzd2l0Y2ggKG1fcmVzdHJpY3RvcikgewotICAgICAgICBjYXNl
IE1lZGlhUXVlcnk6Ok9ubHk6Ci0gICAgICAgICAgICB0ZXh0ICs9ICJvbmx5ICI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6Ci0gICAgICAgICAgICB0
ZXh0ICs9ICJub3QgIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhUXVl
cnk6Ok5vbmU6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgdGV4dCArPSBtX21lZGlhVHlwZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhw
cmVzc2lvbnMtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IG1f
ZXhwcmVzc2lvbnMtPmF0KGkpOwotICAgICAgICB0ZXh0ICs9ICIgYW5kICgiOwotICAgICAgICB0
ZXh0ICs9IGV4cC0+bWVkaWFGZWF0dXJlKCk7Ci0gICAgICAgIGlmIChleHAtPnZhbHVlKCkpIHsK
LSAgICAgICAgICAgIHRleHQgKz0gIjogIjsKLSAgICAgICAgICAgIHRleHQgKz0gZXhwLT52YWx1
ZSgpLT5jc3NUZXh0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGV4dCArPSAiKSI7Ci0gICAgfQot
ICAgIHJldHVybiB0ZXh0OworICAgIGlmIChtX3NlcmlhbGl6YXRpb25DYWNoZS5pc051bGwoKSkK
KyAgICAgICAgY29uc3RfY2FzdDxNZWRpYVF1ZXJ5Kj4odGhpcyktPm1fc2VyaWFsaXphdGlvbkNh
Y2hlID0gc2VyaWFsaXplKCk7CisKKyAgICByZXR1cm4gbV9zZXJpYWxpemF0aW9uQ2FjaGU7CiB9
CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuaCBi
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuaAppbmRleCA3Y2JkM2JmLi5jY2M1OWFjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eS5oCkBAIC0yLDYgKzIsNyBAQAogICogQ1NTIE1lZGlhIFF1ZXJ5CiAgKgogICogQ29weXJpZ2h0
IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICszMCw5
IEBACiAjZGVmaW5lIE1lZGlhUXVlcnlfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE1lZGlhUXVlcnlFeHA7CkBAIC00MCwyMCArNDMsMjQgQEAgcHVibGljOgogICAgICAgICBP
bmx5LCBOb3QsIE5vbmUKICAgICB9OwogCi0gICAgTWVkaWFRdWVyeShSZXN0cmljdG9yIHIsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlLCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBycyk7Cisg
ICAgTWVkaWFRdWVyeShSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCBQYXNz
T3duUHRyPFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4gPiBleHBycyk7CiAgICAgfk1lZGlhUXVlcnko
KTsKIAogICAgIFJlc3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJp
Y3RvcjsgfQogICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGV4cHJlc3Npb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uczsgfQogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhVHlwZTsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBN
ZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3Q7Ci0gICAgdm9pZCBhcHBlbmQoTWVkaWFRdWVyeUV4cCog
bmV3RXhwKSB7IG1fZXhwcmVzc2lvbnMtPmFwcGVuZChuZXdFeHApOyB9CiAgICAgU3RyaW5nIGNz
c1RleHQoKSBjb25zdDsKKyAgICBib29sIGlnbm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2lnbm9y
ZWQ7IH0KIAogIHByaXZhdGU6CiAgICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CiAgICAgU3Ry
aW5nIG1fbWVkaWFUeXBlOwogICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIG1fZXhwcmVzc2lv
bnM7CisgICAgYm9vbCBtX2lnbm9yZWQ7CisgICAgU3RyaW5nIG1fc2VyaWFsaXphdGlvbkNhY2hl
OworCisgICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggMjBjN2JiOS4uOWQ1ODIyZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTE0NCw2ICsxNDQsOSBAQCBib29sIE1l
ZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFMaXN0KiBtZWRpYUxpc3QsIENTU1N0
eWxlU2VsZWN0b3IqIHN0eQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVlcmllcy5zaXpl
KCkgJiYgIXJlc3VsdDsgKytpKSB7CiAgICAgICAgIE1lZGlhUXVlcnkqIHF1ZXJ5ID0gcXVlcmll
cy5hdChpKTsKIAorICAgICAgICBpZiAocXVlcnktPmlnbm9yZWQoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCiAgICAgICAgIGlmIChtZWRpYVR5cGVNYXRjaChxdWVyeS0+bWVkaWFUeXBlKCkp
KSB7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBzID0gcXVl
cnktPmV4cHJlc3Npb25zKCk7CiAgICAgICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggZXhwcmVz
c2lvbnMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNw
cAppbmRleCA1M2MwYjczLi5hOTNkZGNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcApAQCAtMiw2ICsy
LDcgQEAKICAqIENTUyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1t
byBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTgyLDQgKzg0LDIyIEBAIE1lZGlhUXVlcnlFeHA6On5NZWRpYVF1ZXJ5
RXhwKCkKIHsKIH0KIAorU3RyaW5nIE1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3NlcmlhbGl6YXRpb25DYWNoZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IG1fc2VyaWFsaXphdGlvbkNhY2hlOworCisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAg
cmVzdWx0LmFwcGVuZCgiKCIpOworICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYUZlYXR1cmUubG93
ZXIoKSk7CisgICAgaWYgKG1fdmFsdWUpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiOiAiKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLT5jc3NUZXh0KCkpOworICAgIH0KKyAgICBy
ZXN1bHQuYXBwZW5kKCIpIik7CisKKyAgICBjb25zdF9jYXN0PE1lZGlhUXVlcnlFeHAqPih0aGlz
KS0+bV9zZXJpYWxpemF0aW9uQ2FjaGUgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICByZXR1cm4g
bV9zZXJpYWxpemF0aW9uQ2FjaGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmggYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgK
aW5kZXggOTI3MjQwMi4uMjRmMjIwNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCisrKyBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaApAQCAtMiw2ICsyLDcgQEAK
ICAqIENTUyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5u
dW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTAgKzY1LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6YXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tZWRpYUZlYXR1cmUgPT0g
TWVkaWFGZWF0dXJlTmFtZXM6Om1pbl9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmUgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21lZGlhRmVhdHVyZSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWF4X2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZTsgIH0KKwor
ICAgIFN0cmluZyBzZXJpYWxpemUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBBdG9taWNTdHJp
bmcgbV9tZWRpYUZlYXR1cmU7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3ZhbHVlOwogICAgIGJv
b2wgbV9pc1ZhbGlkOworICAgIFN0cmluZyBtX3NlcmlhbGl6YXRpb25DYWNoZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57373</attachid>
            <date>2010-05-28 13:52:11 -0700</date>
            <delta_ts>2010-06-11 07:25:54 -0700</delta_ts>
            <desc>patch 5</desc>
            <filename>0001-CSS3-Media-Queries-are-not-serialized-according-to-C.patch</filename>
            <type>text/plain</type>
            <size>17709</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA3MThlZmE2MTgxOWRlNDVhNTI3M2NlZWQxMTIzZjM5MTdlY2ZhMDE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMjggTWF5IDIwMTAgMTc6NDg6NDQgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MjIwCgpXZWJD
b3JlOgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRp
b24gYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb24KaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nz
b20vI3NlcmlhbGl6aW5nLW1lZGlhLXF1ZXJpZXMuCgpNZWRpYVF1ZXJ5IG9iamVjdHMgbm93IGln
bm9yZSBkdXBsaWNhdGVkIGV4cHJlc3Npb25zLiBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKCkK
bm93IGRvZXMgbm90IHByb2NjZXNzIE1lZGlhUXVlcnkgb2JqZWN0cyB0aGF0IGFyZSBrbm93biB0
byBiZSBpbnZhbGlkLgoKVGVzdDogZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCiogY3NzL01lZGlhUXVlcnkuY3BwOgooV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjpzZXJpYWxpemUpOgooV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVk
aWFRdWVyeSk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CihXZWJDb3JlOjpN
ZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgoo
V2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKiBjc3MvTWVkaWFRdWVyeS5oOgooV2ViQ29y
ZTo6TWVkaWFRdWVyeTo6aWdub3JlZCk6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6CihX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgoqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKFdlYkNv
cmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6ZSk6CiogY3NzL01lZGlhUXVlcnlFeHAuaDoKKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CihXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKCkxheW91dFRlc3RzOgoKUGF0Y2ggYnkgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4sIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuIDxrZW5uZXRo
QHdlYmtpdC5vcmc+IG9uIDIwMTAtMDUtMjAKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpB
ZGRlZCB0ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3Vy
cmVudAp0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgoKKiBmYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dDoKKiBmYXN0L2Nzcy9pbnNlcnRSdWxlLW1l
ZGlhLmh0bWw6CiogZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanM6CiogZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiog
ZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLmh0bWw6IEFkZGVkLgotLS0KIExh
eW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNiAr
KysKIExheW91dFRlc3RzL2Zhc3QvY3NzL2luc2VydFJ1bGUtbWVkaWEtZXhwZWN0ZWQudHh0IHwg
ICAgMiArLQogTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sICAgICAg
ICAgfCAgICAxICsKIExheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxlLW1l
ZGlhLmpzIHwgICAgMyArLQogLi4uL21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0ICAgfCAgIDEwICsrCiAuLi4vZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxp
emF0aW9uLmh0bWwgICAgICB8ICAgMzEgKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzNCArKysrKysKIFdlYkNvcmUvY3NzL01lZGlh
UXVlcnkuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyMiArKysrKysrKysrKystLS0t
LS0tCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTEgKystCiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAgICAgICAgICAg
ICAgICB8ICAgIDMgKwogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDIwICsrKwogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA1ICsKIDEyIGZpbGVzIGNoYW5nZWQsIDIwOSBpbnNlcnRpb25z
KCspLCA0OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21lZGlhLXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9u
Lmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYjY2ZTE5Ny4uMzlkODI0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEwLTA1LTIwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPiwg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MzIE1lZGlhIFF1ZXJp
ZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBDU1NPTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyMjAKKworICAgICAgICBBZGRlZCB0
ZXN0IGZvciB0ZXN0aW5nIHRoZSBzZXJpYWxpemF0aW9uLCBwbHVzIHVwZGF0ZWQgY3VycmVudAor
ICAgICAgICB0ZXN0cyB0byB0YWtlIHNlcmlhbGl6YXRpb24gaW50byBhY2NvdW50LgorCisgICAg
ICAgICogZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL3Jlc291
cmNlcy9pbnNlcnRSdWxlLW1lZGlhLmpzOgorICAgICAgICAqIGZhc3QvbWVkaWEvbWVkaWEtcXVl
cnktc2VyaWFsaXphdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvbWVkaWEtcXVlcnktc2VyaWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0wNS0yOCAg
U2h1IENoYW5nICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5zZXJ0UnVsZS1tZWRpYS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4
dAppbmRleCA1MWVhY2NkLi41MzM2MjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbnNlcnRSdWxlLW1lZGlhLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmluc2VydFJ1
bGUocnVsZSwgMCkgaXMgMAotUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5ydWxlc1swXS5j
c3NUZXh0IGlzIHJ1bGUKK1BBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ucnVsZXNbMF0uY3Nz
VGV4dCBpcyBzZXJpYWxpemVkUnVsZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRS
dWxlLW1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbnNlcnRSdWxlLW1lZGlhLmh0
bWwKaW5kZXggZGU4ZjFkNi4uODNjMjUyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvaW5zZXJ0UnVsZS1tZWRpYS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luc2Vy
dFJ1bGUtbWVkaWEuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1saXN0LW9m
LW1lZGlhLXF1ZXJpZXMiIC8+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+CiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9pbnNlcnRSdWxl
LW1lZGlhLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVk
aWEuanMKaW5kZXggOWI2ZDQwYS4uN2Y1MzJjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcmVzb3VyY2VzL2luc2VydFJ1bGUtbWVkaWEuanMKQEAgLTMsNyArMyw4IEBAIGRlc2Ny
aXB0aW9uKAogKTsKIAogdmFyIHJ1bGUgPSAiQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMHB4
KSB7IFxuICAjZ3JlZW5pZCB7IGNvbG9yOiBncmVlbjsgfVxufSI7Cit2YXIgc2VyaWFsaXplZFJ1
bGUgPSAiQG1lZGlhIChtaW4td2lkdGg6IDBweCkgeyBcbiAgI2dyZWVuaWQgeyBjb2xvcjogZ3Jl
ZW47IH1cbn0iOwogc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmluc2VydFJ1bGUo
cnVsZSwgMCkiLCAiMCIpOwotc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLnJ1bGVz
WzBdLmNzc1RleHQiLCAicnVsZSIpOworc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LnJ1bGVzWzBdLmNzc1RleHQiLCAic2VyaWFsaXplZFJ1bGUiKTsKIAogdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlh
LXF1ZXJ5LXNlcmlhbGl6YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZjMwZjYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1zZXJpYWxpemF0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0IG1lZGlhIHF1ZXJ5IHNlcmlhbGl6YXRpb24uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQg
aXMgZXhwZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5LXNl
cmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtcXVlcnktc2Vy
aWFsaXphdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYmFl
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXF1ZXJ5
LXNlcmlhbGl6YXRpb24uaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8iIC8+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJOT1QgYnJhaWxsZSwgdHYgYW5kIChvcmllbnRhdGlvbjogJ2xh
bmRzY2FwZScpIEFORCAobWluLVdJRFRIOjEwMHB4KSBhbmQgKG1heC13aWR0aDogMjAwcHggKSwg
YWxsIGFuZCAoY29sb3IpIGFuZCAoY29sb3IpIj4KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigKKydUZXN0IG1lZGlhIHF1ZXJ5IHNlcmlh
bGl6YXRpb24uICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzkyMjAiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTIyMDwv
YT4nCispOworCisKK3ZhciBleHBlY3RlZCA9ICJub3QgYnJhaWxsZSwgdHYgYW5kIChtYXgtd2lk
dGg6IDIwMHB4KSBhbmQgKG1pbi13aWR0aDogMTAwcHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRz
Y2FwZSksIChjb2xvcikiOworc2hvdWxkQmUoImRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlh
Lm1lZGlhVGV4dCIsICJleHBlY3RlZCIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0MjM5ZC4uMWZjYzMyNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMC0wNS0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDU1MzIE1lZGlhIFF1ZXJpZXMgYXJlIG5vdCBzZXJpYWxpemVkIGFjY29yZGluZyB0byBD
U1NPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzky
MjAKKworICAgICAgICBNZWRpYVF1ZXJ5IHNlcmlhbGl6YXRpb24gYWNjb3JkaW5nIHRvIHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3Nzb20vI3NlcmlhbGl6
aW5nLW1lZGlhLXF1ZXJpZXMuCisKKyAgICAgICAgTWVkaWFRdWVyeSBvYmplY3RzIG5vdyBpZ25v
cmUgZHVwbGljYXRlZCBleHByZXNzaW9ucy4gTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCgpCisg
ICAgICAgIG5vdyBkb2VzIG5vdCBwcm9jY2VzcyBNZWRpYVF1ZXJ5IG9iamVjdHMgdGhhdCBhcmUg
a25vd24gdG8gYmUgaW52YWxpZC4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhL21lZGlhLXF1
ZXJ5LXNlcmlhbGl6YXRpb24uaHRtbAorCisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c3RyaW5nQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVF1ZXJ5OjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVkaWFR
dWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnk6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6YXBw
ZW5kKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeTo6aWdub3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjplbmQpOgorICAgICAgICAqIGNzcy9NZWRp
YVF1ZXJ5RXhwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnNlcmlhbGl6
ZSk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKToKKworCiAyMDEwLTA1LTI3ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAppbmRl
eCBmZjU3MzcyLi4xODdhMzNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNw
cAorKysgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENT
UyBNZWRpYSBRdWVyeQogICoKICAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBLaW1tbyBLaW5u
dW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNjkgKzMwLDEwMCBAQAogI2luY2x1ZGUgIk1l
ZGlhUXVlcnkuaCIKIAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKKyNpbmNsdWRlICJTdHJp
bmdCdWlsZGVyLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotTWVkaWFRdWVyeTo6TWVkaWFRdWVyeShSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlLCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBycykKKy8vIGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2Nzc29tLyNzZXJpYWxpemUtYS1tZWRpYS1xdWVyeQorU3RyaW5nIE1lZGlh
UXVlcnk6OnNlcmlhbGl6ZSgpIGNvbnN0Cit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisK
KyAgICBzd2l0Y2ggKG1fcmVzdHJpY3RvcikgeworICAgIGNhc2UgTWVkaWFRdWVyeTo6T25seToK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgib25seSAiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNZWRpYVF1ZXJ5OjpOb3Q6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIm5vdCAiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb25lOgorICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBpZiAobV9leHByZXNzaW9ucy0+aXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQobV9tZWRpYVR5cGUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgfQorCisgICAgaWYgKG1fbWVkaWFUeXBlICE9ICJhbGwiIHx8IG1fcmVzdHJpY3RvciAh
PSBOb25lKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9tZWRpYVR5cGUpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKCIgYW5kICIpOworICAgIH0KKworICAgIHJlc3VsdC5hcHBlbmQobV9leHBy
ZXNzaW9ucy0+YXQoMCktPnNlcmlhbGl6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8
IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIiBh
bmQgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9leHByZXNzaW9ucy0+YXQoaSktPnNlcmlh
bGl6ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitzdGF0
aWMgYm9vbCBleHByZXNzaW9uQ29tcGFyZShjb25zdCBNZWRpYVF1ZXJ5RXhwKiBhLCBjb25zdCBN
ZWRpYVF1ZXJ5RXhwKiBiKQoreworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGEtPnNlcmlh
bGl6ZSgpLCBiLT5zZXJpYWxpemUoKSkgPCAwOworfQorCitNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5
KFJlc3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFBhc3NPd25QdHI8VmVjdG9y
PE1lZGlhUXVlcnlFeHAqPiA+IGV4cHJzKQogICAgIDogbV9yZXN0cmljdG9yKHIpCi0gICAgLCBt
X21lZGlhVHlwZShtZWRpYVR5cGUpCi0gICAgLCBtX2V4cHJlc3Npb25zKGV4cHJzKQorICAgICwg
bV9tZWRpYVR5cGUobWVkaWFUeXBlLmxvd2VyKCkpCisgICAgLCBtX2V4cHJlc3Npb25zKGV4cHJz
LnJlbGVhc2UoKSkKKyAgICAsIG1faWdub3JlZChmYWxzZSkKIHsKLSAgICBpZiAoIW1fZXhwcmVz
c2lvbnMpCisgICAgaWYgKCFtX2V4cHJlc3Npb25zKSB7CiAgICAgICAgIG1fZXhwcmVzc2lvbnMg
PSBuZXcgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHN0ZDo6c29ydChtX2V4cHJlc3Npb25zLT5iZWdpbigpLCBtX2V4cHJlc3Npb25zLT5lbmQo
KSwgZXhwcmVzc2lvbkNvbXBhcmUpOworCisgICAgLy8gcmVtb3ZlIGFsbCBkdXBsaWNhdGVkIGV4
cHJlc3Npb25zCisgICAgU3RyaW5nIGtleTsKKyAgICBmb3IgKGludCBpID0gbV9leHByZXNzaW9u
cy0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKworICAgICAgICAvLyBpZiBub3QgYWxsIG9m
IHRoZSBleHByZXNzaW9ucyBpcyB2YWxpZCB0aGUgbWVkaWEgcXVlcnkgbXVzdCBiZSBpZ25vcmVk
LgorICAgICAgICBpZiAoIW1faWdub3JlZCkKKyAgICAgICAgICAgIG1faWdub3JlZCA9ICFtX2V4
cHJlc3Npb25zLT5hdChpKS0+aXNWYWxpZCgpOworCisgICAgICAgIGlmIChtX2V4cHJlc3Npb25z
LT5hdChpKS0+c2VyaWFsaXplKCkgPT0ga2V5KSB7CisgICAgICAgICAgICBNZWRpYVF1ZXJ5RXhw
KiBpdGVtID0gbV9leHByZXNzaW9ucy0+YXQoaSk7CisgICAgICAgICAgICBtX2V4cHJlc3Npb25z
LT5yZW1vdmUoaSk7CisgICAgICAgICAgICBkZWxldGUgaXRlbTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBrZXkgPSBtX2V4cHJlc3Npb25zLT5hdChpKS0+c2VyaWFsaXplKCk7CisgICAg
fQogfQogCiBNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSgpCiB7Ci0gICAgaWYgKG1fZXhwcmVzc2lv
bnMpIHsKLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptX2V4cHJlc3Npb25zKTsKLSAgICAgICAg
ZGVsZXRlIG1fZXhwcmVzc2lvbnM7Ci0gICAgfQorICAgIGRlbGV0ZUFsbFZhbHVlcygqbV9leHBy
ZXNzaW9ucyk7CisgICAgZGVsZXRlIG1fZXhwcmVzc2lvbnM7CiB9CiAKKy8vIGh0dHA6Ly9kZXYu
dzMub3JnL2Nzc3dnL2Nzc29tLyNjb21wYXJlLW1lZGlhLXF1ZXJpZXMKIGJvb2wgTWVkaWFRdWVy
eTo6b3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAo
bV9yZXN0cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3RvcgotICAgICAgICB8fCBtX21lZGlhVHlw
ZSAhPSBvdGhlci5tX21lZGlhVHlwZQotICAgICAgICB8fCBtX2V4cHJlc3Npb25zLT5zaXplKCkg
IT0gb3RoZXIubV9leHByZXNzaW9ucy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOwotICAg
ICAgICBNZWRpYVF1ZXJ5RXhwKiBvZXhwID0gb3RoZXIubV9leHByZXNzaW9ucy0+YXQoaSk7Ci0g
ICAgICAgIGlmICghKCpleHAgPT0gKm9leHApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjc3NUZXh0KCkgPT0gb3RoZXIu
Y3NzVGV4dCgpOwogfQogCisvLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3NvbS8jc2VyaWFs
aXplLWEtbGlzdC1vZi1tZWRpYS1xdWVyaWVzCiBTdHJpbmcgTWVkaWFRdWVyeTo6Y3NzVGV4dCgp
IGNvbnN0CiB7Ci0gICAgU3RyaW5nIHRleHQ7Ci0gICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsK
LSAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpPbmx5OgotICAgICAgICAgICAgdGV4dCArPSAib25s
eSAiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFRdWVyeTo6Tm90Ogot
ICAgICAgICAgICAgdGV4dCArPSAibm90ICI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBNZWRpYVF1ZXJ5OjpOb25lOgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHRleHQgKz0gbV9tZWRpYVR5cGU7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2V4cHJlc3Npb25zLT5zaXplKCk7ICsraSkgewotICAgICAgICBNZWRpYVF1ZXJ5
RXhwKiBleHAgPSBtX2V4cHJlc3Npb25zLT5hdChpKTsKLSAgICAgICAgdGV4dCArPSAiIGFuZCAo
IjsKLSAgICAgICAgdGV4dCArPSBleHAtPm1lZGlhRmVhdHVyZSgpOwotICAgICAgICBpZiAoZXhw
LT52YWx1ZSgpKSB7Ci0gICAgICAgICAgICB0ZXh0ICs9ICI6ICI7Ci0gICAgICAgICAgICB0ZXh0
ICs9IGV4cC0+dmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgICAgICB9Ci0gICAgICAgIHRleHQgKz0g
IikiOwotICAgIH0KLSAgICByZXR1cm4gdGV4dDsKKyAgICBpZiAobV9zZXJpYWxpemF0aW9uQ2Fj
aGUuaXNOdWxsKCkpCisgICAgICAgIGNvbnN0X2Nhc3Q8TWVkaWFRdWVyeSo+KHRoaXMpLT5tX3Nl
cmlhbGl6YXRpb25DYWNoZSA9IHNlcmlhbGl6ZSgpOworCisgICAgcmV0dXJuIG1fc2VyaWFsaXph
dGlvbkNhY2hlOwogfQogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5LmggYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgKaW5kZXggN2NiZDNiZi4uY2Nj
NTlhYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCisrKyBiL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnkuaApAQCAtMiw2ICsyLDcgQEAKICAqIENTUyBNZWRpYSBRdWVyeQogICoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBu
b2tpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNyArMzAsOSBAQAogI2RlZmluZSBNZWRpYVF1ZXJ5X2gKIAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwpAQCAtNDAsMjAgKzQzLDI0IEBAIHB1Ymxp
YzoKICAgICAgICAgT25seSwgTm90LCBOb25lCiAgICAgfTsKIAotICAgIE1lZGlhUXVlcnkoUmVz
dHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHAq
PiogZXhwcnMpOworICAgIE1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gZXhwcnMpOwogICAg
IH5NZWRpYVF1ZXJ5KCk7CiAKICAgICBSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3RyaWN0b3I7IH0KICAgICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBl
eHByZXNzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbnM7IH0KICAgICBTdHJpbmcg
bWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVR5cGU7IH0KICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWVkaWFRdWVyeSYgb3RoZXIpIGNvbnN0OwotICAgIHZvaWQgYXBwZW5kKE1l
ZGlhUXVlcnlFeHAqIG5ld0V4cCkgeyBtX2V4cHJlc3Npb25zLT5hcHBlbmQobmV3RXhwKTsgfQog
ICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgYm9vbCBpZ25vcmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZ25vcmVkOyB9CiAKICBwcml2YXRlOgogICAgIFJlc3RyaWN0b3IgbV9yZXN0cmlj
dG9yOwogICAgIFN0cmluZyBtX21lZGlhVHlwZTsKICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+
KiBtX2V4cHJlc3Npb25zOworICAgIGJvb2wgbV9pZ25vcmVkOworICAgIFN0cmluZyBtX3Nlcmlh
bGl6YXRpb25DYWNoZTsKKworICAgIFN0cmluZyBzZXJpYWxpemUoKSBjb25zdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDIwYzdiYjku
LjlkNTgyMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0xNDQsNiArMTQ0
LDkgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKGNvbnN0IE1lZGlhTGlzdCogbWVk
aWFMaXN0LCBDU1NTdHlsZVNlbGVjdG9yKiBzdHkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1ZXJpZXMuc2l6ZSgpICYmICFyZXN1bHQ7ICsraSkgewogICAgICAgICBNZWRpYVF1ZXJ5KiBx
dWVyeSA9IHF1ZXJpZXMuYXQoaSk7CiAKKyAgICAgICAgaWYgKHF1ZXJ5LT5pZ25vcmVkKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2gocXVlcnkt
Pm1lZGlhVHlwZSgpKSkgewogICAgICAgICAgICAgY29uc3QgVmVjdG9yPE1lZGlhUXVlcnlFeHAq
PiogZXhwcyA9IHF1ZXJ5LT5leHByZXNzaW9ucygpOwogICAgICAgICAgICAgLy8gaXRlcmF0ZSB0
aHJvdWdoIGV4cHJlc3Npb25zLCBzdG9wIGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gZmFsc2UKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwIGIvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5jcHAKaW5kZXggNTNjMGI3My4uYTkzZGRjYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5j
cHAKQEAgLTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEgUXVlcnkKICAqCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Miw0ICs4NCwyMiBAQCBNZWRpYVF1ZXJ5RXhw
Ojp+TWVkaWFRdWVyeUV4cCgpCiB7CiB9CiAKK1N0cmluZyBNZWRpYVF1ZXJ5RXhwOjpzZXJpYWxp
emUoKSBjb25zdAoreworICAgIGlmICghbV9zZXJpYWxpemF0aW9uQ2FjaGUuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25DYWNoZTsKKworICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQoIigiKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fbWVk
aWFGZWF0dXJlLmxvd2VyKCkpOworICAgIGlmIChtX3ZhbHVlKSB7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIjogIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZS0+Y3NzVGV4dCgpKTsK
KyAgICB9CisgICAgcmVzdWx0LmFwcGVuZCgiKSIpOworCisgICAgY29uc3RfY2FzdDxNZWRpYVF1
ZXJ5RXhwKj4odGhpcyktPm1fc2VyaWFsaXphdGlvbkNhY2hlID0gcmVzdWx0LnRvU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1fc2VyaWFsaXphdGlvbkNhY2hlOworfQorCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oIGIvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5oCmluZGV4IDkyNzI0MDIuLjI0ZjIyMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHAuaAorKysgYi9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKQEAg
LTIsNiArMiw3IEBACiAgKiBDU1MgTWVkaWEgUXVlcnkKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDEwICs2NSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9t
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmFzcGVjdF9yYXRpb01lZGlhRmVhdHVy
ZSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWVk
aWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjptaW5fYXNwZWN0X3JhdGlvTWVkaWFGZWF0
dXJlIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9t
ZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6Om1heF9hc3BlY3RfcmF0aW9NZWRpYUZl
YXR1cmU7ICB9CisKKyAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgQXRvbWljU3RyaW5nIG1fbWVkaWFGZWF0dXJlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gbV92
YWx1ZTsKICAgICBib29sIG1faXNWYWxpZDsKKyAgICBTdHJpbmcgbV9zZXJpYWxpemF0aW9uQ2Fj
aGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>