<?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>22876</bug_id>
          
          <creation_ts>2008-12-15 22:39:12 -0800</creation_ts>
          <short_desc>Should centralize random number handling for JavaScriptCore &amp; WebCore</short_desc>
          <delta_ts>2008-12-16 13:16:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102637</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-15 22:39:12 -0800</bug_when>
    <thetext>Random number handling functionality is duplicated, once in wtf/MathExtras.h (wtf_random / wtf_random_init) and once in HTMLFormElement::randomNumber().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102638</commentid>
    <comment_count>1</comment_count>
      <attachid>26045</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-15 22:39:44 -0800</bug_when>
    <thetext>Created attachment 26045
Patch for JavaScriptCore/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102639</commentid>
    <comment_count>2</comment_count>
      <attachid>26046</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-15 22:40:13 -0800</bug_when>
    <thetext>Created attachment 26046
Patch for WebCore/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102640</commentid>
    <comment_count>3</comment_count>
      <attachid>26047</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-15 22:42:45 -0800</bug_when>
    <thetext>Created attachment 26047
Updated patch for JavaScriptCore

Fixed some stray tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102641</commentid>
    <comment_count>4</comment_count>
      <attachid>26048</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-15 22:43:27 -0800</bug_when>
    <thetext>Created attachment 26048
Updated patch for WebCore

Accidently included some unwanted bits in the patch, remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102666</commentid>
    <comment_count>5</comment_count>
      <attachid>26047</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-16 09:12:21 -0800</bug_when>
    <thetext>Comment on attachment 26047
Updated patch for JavaScriptCore

A single patch for both JavaScriptCore and WebCore would be better.

There are two changes here. One is that the random number generator gets initialized differently. The other is that the functions have new names and a new header. I would have preferred to see those changes done independently so we could separately discuss the merits of each.

I think it&apos;s a slightly tricky to initialize this correctly. As I understand it, it&apos;s an error to call initializeRandomNumberGenerator at all when JSC_MULTIPLE_THREADS  is off and also an error for anyone besides initializeThreads to call it. I think it would be good to make it harder to use wrong. For example, the definition in the header could be inside #if ENABLE(JSC_MULTIPLE_THREADS), or the initialization function should be in its own header -- people who are using the random number generator don&apos;t need to know how the initialization works. And we could have some debugging code to assert that it&apos;s called correctly. Generally we want functions that are hard to &quot;use wrong&quot;, and I think any calls to initializeRandomNumberGenerator are likely to be wrong.

I&apos;m not overjoyed with this, but I&apos;ll still say r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102668</commentid>
    <comment_count>6</comment_count>
      <attachid>26048</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-16 09:19:26 -0800</bug_when>
    <thetext>Comment on attachment 26048
Updated patch for WebCore

&gt; -#if PLATFORM(QT)
&gt; -#include &lt;QtCore/QFileInfo&gt;
&gt; -#endif

This change isn&apos;t mentioned anywhere. You should mention it in the header if there&apos;s a good reason for it.

&gt; -#if PLATFORM(DARWIN)
&gt; -    if (!randomSeeded) {
&gt; -        srandomdev();
&gt; -        randomSeeded = true;
&gt; -    }
&gt; -    return random();
&gt; -#else

The srandomdev() technique for initializing the random number generator is stronger than the srand(time(0)) technique, and random() is better than rand(), so the version in JavaScriptCore should be changed to use that under DARWIN. We may want to improve the random number generator further soon due to some feedback I got from some other folks at Apple.

&gt; -        int randomness = randomNumber();
&gt; +        int randomness = static_cast&lt;int&gt;(WTF::randomNumber() * INT_MAX);

This won&apos;t work quite as well as the old code. It doesn&apos;t cover the entire integer range. We want numbers in the range [INT_MIN, INT_MAX], but this gives numbers in the range [0, INT_MAX). So we&apos;ll never get INT_MAX or any negative number. On the other hand, we only really use 24 of the 32 bits of randomness, so it&apos;s probably OK to take this basic approach. But it should be INT_MAX + 1, not INT_MAX, that we multiply by. Of course INT_MAX + 1 won&apos;t fit into an int, so it&apos;s a little tricky to write the code correctly. Something like this is what I&apos;d suggest:

    unsigned randomness = static_cast&lt;unsigned&gt;(randomNumber() * (numeric_limits&lt;unsigned&gt;::max() + 1.0));

I&apos;m going to say review- because I think it&apos;s important not to downgrade from random() to rand() on DARWIN.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102671</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-16 09:30:45 -0800</bug_when>
    <thetext>Hey Darin,

thanks for the quick review.
 
&gt; There are two changes here. One is that the random number generator gets
&gt; initialized differently. The other is that the functions have new names and a
&gt; new header. I would have preferred to see those changes done independently so
&gt; we could separately discuss the merits of each.
Oh, okay - I&apos;ll take that in mind in future.
 
&gt; I think it&apos;s a slightly tricky to initialize this correctly. As I understand
&gt; it, it&apos;s an error to call initializeRandomNumberGenerator at all when
&gt; JSC_MULTIPLE_THREADS  is off and also an error for anyone besides
&gt; initializeThreads to call it. I think it would be good to make it harder to use
&gt; wrong.
It&apos;s indeed a bit tricky: the idea is that if we&apos;re building with ENABLE(JSC_MULTIPLTE_THREADS) that the Threading*.cpp functions call &quot;initializeRandomNumberGenerator&quot; once on thread initialization.

If we&apos;re not building with JSC_MULTIPLE_THREADS, then randomNumber() need to track wheter it already seeded the random number generator or not.

So wrapping the initializeRandomNumberGenerator() function in ENABLE(JSC_MULTIPLE_THREADS) is not going to work. What I could do is _restore_ wtf_random_init() in MathExtras.h and use that from randomNumber() and from Threading*...

This way RandomNumber.h would only need to contain the &apos;randomNumber()&apos; function - which is slightly less confusing than the current solution.

&gt; For example, the definition in the header could be inside #if
&gt; ENABLE(JSC_MULTIPLE_THREADS), or the initialization function should be in its
&gt; own header -- people who are using the random number generator don&apos;t need to
&gt; know how the initialization works. And we could have some debugging code to
&gt; assert that it&apos;s called correctly. Generally we want functions that are hard to
&gt; &quot;use wrong&quot;, and I think any calls to initializeRandomNumberGenerator are
&gt; likely to be wrong.
Okay, do you think my approach above would solve it?

Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102672</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-16 09:33:00 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 26048 [review])
&gt; &gt; -#if PLATFORM(QT)
&gt; &gt; -#include &lt;QtCore/QFileInfo&gt;
&gt; &gt; -#endif
&gt; 
&gt; This change isn&apos;t mentioned anywhere. You should mention it in the header if
&gt; there&apos;s a good reason for it.
Oh there was no Qt usage at all in this file, so I just killed this include.
 
&gt; &gt; -#if PLATFORM(DARWIN)
&gt; &gt; -    if (!randomSeeded) {
&gt; &gt; -        srandomdev();
&gt; &gt; -        randomSeeded = true;
&gt; &gt; -    }
&gt; &gt; -    return random();
&gt; &gt; -#else
&gt; 
&gt; The srandomdev() technique for initializing the random number generator is
&gt; stronger than the srand(time(0)) technique, and random() is better than rand(),
&gt; so the version in JavaScriptCore should be changed to use that under DARWIN. We
&gt; may want to improve the random number generator further soon due to some
&gt; feedback I got from some other folks at Apple.
Okay, I can add another special case in the JSC patch.
 
&gt; &gt; -        int randomness = randomNumber();
&gt; &gt; +        int randomness = static_cast&lt;int&gt;(WTF::randomNumber() * INT_MAX);
&gt; 
&gt; This won&apos;t work quite as well as the old code. It doesn&apos;t cover the entire
&gt; integer range. We want numbers in the range [INT_MIN, INT_MAX], but this gives
&gt; numbers in the range [0, INT_MAX). So we&apos;ll never get INT_MAX or any negative
&gt; number. On the other hand, we only really use 24 of the 32 bits of randomness,
&gt; so it&apos;s probably OK to take this basic approach. But it should be INT_MAX + 1,
&gt; not INT_MAX, that we multiply by. Of course INT_MAX + 1 won&apos;t fit into an int,
&gt; so it&apos;s a little tricky to write the code correctly. Something like this is
&gt; what I&apos;d suggest:
&gt; 
&gt;     unsigned randomness = static_cast&lt;unsigned&gt;(randomNumber() *
&gt; (numeric_limits&lt;unsigned&gt;::max() + 1.0));

Oops, I shouldn&apos;t post patches at 7am. Good catch!
 
&gt; I&apos;m going to say review- because I think it&apos;s important not to downgrade from
&gt; random() to rand() on DARWIN.

Ok, I&apos;ll wait for your final comments, and come up with a new combined WebCore/JSC patch.
Thanks for the review.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102689</commentid>
    <comment_count>9</comment_count>
      <attachid>26062</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-16 12:00:56 -0800</bug_when>
    <thetext>Created attachment 26062
Updated combined patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102690</commentid>
    <comment_count>10</comment_count>
      <attachid>26062</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-16 12:44:07 -0800</bug_when>
    <thetext>Comment on attachment 26062
Updated combined patch v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102695</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-16 13:16:16 -0800</bug_when>
    <thetext>Landed in r39337.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26045</attachid>
            <date>2008-12-15 22:39:44 -0800</date>
            <delta_ts>2008-12-15 22:42:45 -0800</delta_ts>
            <desc>Patch for JavaScriptCore/</desc>
            <filename>RandomJSC.diff</filename>
            <type>text/plain</type>
            <size>20335</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5MzI3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDgtMTItMTUgIE5pa29sYXMg
WmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgcmFuZG9tIG51
bWJlciBnZW5lcmF0aW9uIGluIEphdmFTY3JpcHRDb3JlICYgV2ViQ29yZSwgYnkgaW50cm9kdWNp
bmcKKyAgICAgICAgd3RmL1JhbmRvbU51bWJlci5oIGFuZCBtb3Zpbmcgd3RmX3JhbmRvbS93dGZf
cmFuZG9tX2luaXQgb3V0IG9mIE1hdGhFeHRyYXMuaC4KKworICAgICAgICBUaGVyZSdzIGEgY2Vu
dHJhbCBmdW5jdGlvbiwgcmFuZG9tTnVtYmVyKCksIHdoaWNoIHRha2VzIGNhcmUgb2Ygc2VlZGlu
ZyB0aGUKKyAgICAgICAgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIG9uIHRoZSBmaXJzdCBpbnZv
Y2F0aW9uIC0gYnV0IG9ubHkgaWYgSlNDIGlzIGJ1aWx0CisgICAgICAgIHdpdGhvdXQgRU5BQkxF
KEpTQ19NVUxUSVBMRV9USFJFQURTKS4gSWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgYWN0aXZhdGVk
LAorICAgICAgICByYW5kb21OdW1iZXIoKSBkb2VzIHRoZSBzYW1lIGFzIHd0Zl9yYW5kb20oKSBk
b2VzIG5vdywgYXMgdGhlIHJhbmRvbSBudW1iZXIKKyAgICAgICAgZ2VuZXJhdG9yIGhhcyBhbHJl
YWR5IGJlZW4gc2VlZWRlZCBieSB0aGUgVGhyZWFkaW5nOjppbml0aWFsaXplVGhyZWFkaW5nKCkg
Y29kZS4KKworCQkqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4
cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUuc2NvbnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBydW50aW1lL01h
dGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUmFuZG9tKToKKyAgICAg
ICAgKiB3dGYvTWF0aEV4dHJhcy5oOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcik6Cisg
ICAgICAgIChXVEY6OnJhbmRvbU51bWJlcik6CisgICAgICAgICogd3RmL1JhbmRvbU51bWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nR3RrLmNwcDoKKyAgICAgICAgKFdURjo6
aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNw
cDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICogd3RmL1Ro
cmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAg
ICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVUaHJl
YWRpbmcpOgorCiAyMDA4LTEyLTE1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5hbQkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3Rm
L1Bhc3NSZWZQdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggXAorCUphdmFT
Y3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmggXAogCUphdmFT
Y3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAlKYXZhU2NyaXB0Q29y
ZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmggXApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw2ICsyNzAsNyBAQCBfX1pOM1dURjEyY3JlYXRl
VGhyZWFkRVBGUHZTMF9FUzBfCiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtj
CiBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgorX19a
TjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pOM1dURjEzY3VycmVudFRocmVhZEV2CiBfX1pOM1dU
RjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjR3YWl0RVJOU181
TXV0ZXhFCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCShyZXZpc2lvbiAzOTMyNSkK
KysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvQXNzZXJ0aW9ucy5jcHAgXAogICAg
IHd0Zi9IYXNoVGFibGUuY3BwIFwKICAgICB3dGYvTWFpblRocmVhZC5jcHAgXAorICAgIHd0Zi9S
YW5kb21OdW1iZXIuY3BwIFwKICAgICB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCiAg
ICAgd3RmL3VuaWNvZGUvQ29sbGF0b3JEZWZhdWx0LmNwcCBcCiAgICAgd3RmL3VuaWNvZGUvaWN1
L0NvbGxhdG9ySUNVLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5z
Y29ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwko
cmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIHNvdXJjZXNbJ3d0ZiddID0gWwogICAg
ICd3dGYvQXNzZXJ0aW9ucy5jcHAnLAogICAgICd3dGYvRmFzdE1hbGxvYy5jcHAnLAogICAgICd3
dGYvSGFzaFRhYmxlLmNwcCcsCisgICAgJ3d0Zi9SYW5kb21OdW1iZXIuY3BwJywKICAgICAnd3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAnLAogICAgICd3dGYvZHRvYS5jcHAnLAogXQpJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAzOTMy
NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MCw2ICsxNjAsNyBAQCBTb3VyY2UgZmlsZXMgZm9yIEpTQ29yZS4KICAgICAg
ICAgd3RmL0Zhc3RNYWxsb2MuY3BwCiAgICAgICAgIHd0Zi9IYXNoVGFibGUuY3BwCiAgICAgICAg
IHd0Zi9NYWluVGhyZWFkLmNwcAorICAgICAgICB3dGYvUmFuZG9tTnVtYmVyLmNwcAogICAgICAg
ICB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgICAgICB3dGYvVENTeXN0ZW1BbGxv
Yy5jcHAKICAgICAgICAgd3RmL1RocmVhZGluZ05vbmUuY3BwCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCShyZXZpc2lv
biAzOTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU5LDYgKzM1OSwxNCBAQAogCQkJPg0KIAkJPC9G
aWxlPg0KIAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxSYW5kb21OdW1iZXIu
Y3BwIg0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llx3dGZcUmFuZG9tTnVtYmVyLmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZpbGUNCiAJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxSZWZDb3VudGVkLmgiDQogCQkJPg0KIAkJPC9GaWxlPg0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw4IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkwNkQz
NThCMzBEQUFEQUE0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNkQzNThBMjBEQUFEOUM0MDAzQjE3NEUgLyog
TWFpblRocmVhZC5jcHAgKi87IH07CiAJCTA2RDM1OEI0MERBQURBQUEwMDNCMTc0RSAvKiBNYWlu
VGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDZEMzU4QTEwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi87IH07CisJ
CTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4RkE1QjkwRUY3NkQ0MzAwNTc4
RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi87IH07CisJCTA4OEZBNUJDMEVGNzZENDMwMDU3OEU2
RiAvKiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4OEZBNUJBMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDBCN0QxRDBE
QzY5QUY3MDA5QzQyQjggLyogSlNBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0Fj
dGl2YXRpb24uY3BwICovOyB9OwogCQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNl
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDEyMTEzMTBBNDg3OTREMDA0
ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKQEAgLTQwOCw2ICs0MTAsOCBAQAogCQkwNkQz
NThBMTBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1haW5UaHJlYWRNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA2RDM1OEEyMERBQUQ5QzQwMDNCMTc0RSAvKiBNYWluVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1haW5UaHJlYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNkQzNThBMzBEQUFEOUM0MDAzQjE3NEUgLyog
TWFpblRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2
RiAvKiBSYW5kb21OdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmFuZG9tTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg4RkE1
QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCYXNlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDEyMTEwMjBBNDg3ODA5MDA0ODAyNTUgLyogbWluaWRvbS5jICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBtaW5pZG9tLmM7IHBhdGggPSB0ZXN0cy9taW5p
ZG9tLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTIxMTBEMEE0ODc4ODcwMDQ4
MDI1NSAvKiBtaW5pZG9tLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1l
ID0gbWluaWRvbS5qczsgcGF0aCA9IHRlc3RzL21pbmlkb20uanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDg5LDYgKzEwOTMsOCBAQAogCQkJCTkzMDNGNTY3MDk5MTE4RkEwMEFE
NzFCOCAvKiBPd25QdHIuaCAqLywKIAkJCQk2NTgwRjc5NTA5NDA3MDU2MDA4MkMyMTkgLyogUGFz
c1JlZlB0ci5oICovLAogCQkJCTY1RDZEODdFMDlCNUEzMkUwMDAyRTRENyAvKiBQbGF0Zm9ybS5o
ICovLAorCQkJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwICov
LAorCQkJCTA4OEZBNUJBMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuaCAqLywKIAkJ
CQkxNDE5RDMyQzBDRUE3Q0RFMDBGRjUwN0EgLyogUmVmQ291bnRlZC5oICovLAogCQkJCTkwNUIw
MkFEMEUyODY0MEYwMDZERjg4MiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwICovLAogCQkJ
CTkwRDM0NjlCMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywK
QEAgLTE1OTgsNiArMTYwNCw3IEBACiAJCQkJQkMyNTdERjQwRTFGNTM3NDAwMTZCNkM5IC8qIFBy
b3RvdHlwZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0
Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5REE0QTBF
RDI0NUVDMDBCODk2MTkgLyogUXVhbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDg4RkE1
QkMwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NTcwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkwRDM0NjlDMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDU4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQdHIuaCBp
biBIZWFkZXJzICovLApAQCAtMTYyOCw2ICsxNjM1LDcgQEAKIAkJCQlCQzE4QzUyNjBFMTZGQ0E3
MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
RTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQ0NGMEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NkMwRTE2RjVD
RDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTY2MCw3ICsx
NjY4LDYgQEAKIAkJCQlCQzE4QzQ0RDBFMTZGNUNEMDBCMzQ0NjAgLyogcGNyZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NEUwRTE2RjVDRDAwQjM0NDYwIC8qIHBjcmVfaW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDcyMEUxNkY1Q0QwMEIzNDQ2MCAvKiB1Y3BpbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8qIFN0cnVj
dHVyZVN0dWJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5ODksMTEgKzE5OTYsMTMgQEAKIAkJ
CQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDNjE1MTZDMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNlcnZlci5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21O
dW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTA1QjAyQUUwRTI4NjQwRjAwNkRGODgyIC8q
IFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDg4NTBF
RDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVy
ZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU3OTNEMEQ2QzlCOTIwMEZFQTNC
QSAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUNENDFCMzBF
MUJGNjU2MDA4NTM1OEUgLyogVHJlZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFF
Rjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDA2
LDcgKzIwMTUsNiBAQAogCQkJCTkzMDc1NEQwMDhCMEY3NDYwMEFCMzA1NiAvKiBwY3JlX3RhYmxl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzcwMTM0ODBDQTk3RTBFMDBGQTE0RDMgLyogcGNy
ZV91Y3Bfc2VhcmNoZnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjZCRDQwOEIxNTE0
MTAwRjg1MjI2IC8qIHBjcmVfeGNsYXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQ0YwRDBD
MEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24gMzkzMjUp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUmFu
ZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMTAsMTUgKzIxMSw3IEBAIEpT
VmFsdWUqIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0YXRlKiBleGUKIAogSlNWYWx1ZSogbWF0aFBy
b3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0
IEFyZ0xpc3QmKQogewotI2lmICFFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0gICAgc3Rh
dGljIGJvb2wgZGlkSW5pdFJhbmRvbTsKLSAgICBpZiAoIWRpZEluaXRSYW5kb20pIHsKLSAgICAg
ICAgd3RmX3JhbmRvbV9pbml0KCk7Ci0gICAgICAgIGRpZEluaXRSYW5kb20gPSB0cnVlOwotICAg
IH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHd0Zl9yYW5kb20oKSk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHJhbmRvbU51bWJlcigpKTsKIH0KIAogSlNWYWx1ZSog
bWF0aFByb3RvRnVuY1JvdW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiwg
Y29uc3QgQXJnTGlzdCYgYXJncykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaAkocmV2aXNp
b24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTgsNDEgKzE1OCw4IEBAIGlubGluZSBkb3VibGUgd3RmX3Bvdyhkb3VibGUgeCwg
ZG91YmxlIHkKICNkZWZpbmUgZm1vZCh4LCB5KSB3dGZfZm1vZCh4LCB5KQogI2RlZmluZSBwb3co
eCwgeSkgd3RmX3Bvdyh4LCB5KQogCi0jaWYgZGVmaW5lZChfQ1JUX1JBTkRfUykKLS8vIEluaXRp
YWxpemVzIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KLWlubGluZSB2b2lkIHd0Zl9yYW5k
b21faW5pdCgpCi17Ci0gICAgLy8gTm8gbmVlZCB0byBpbml0aWFsaXplIGZvciByYW5kX3MuCi19
Ci0KLS8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEp
LgotaW5saW5lIGRvdWJsZSB3dGZfcmFuZG9tKCkKLXsKLSAgICB1bnNpZ25lZCB1OwotICAgIHJh
bmRfcygmdSk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih1KSAvIChzdGF0aWNf
Y2FzdDxkb3VibGU+KFVJTlRfTUFYKSArIDEuMCk7Ci19Ci0jZW5kaWYgLy8gX0NSVF9SQU5EX1MK
LQogI2VuZGlmIC8vIENPTVBJTEVSKE1TVkMpCiAKLSNpZiAhQ09NUElMRVIoTVNWQykgfHwgIWRl
ZmluZWQoX0NSVF9SQU5EX1MpCi0KLS8vIEluaXRpYWxpemVzIHRoZSByYW5kb20gbnVtYmVyIGdl
bmVyYXRvci4KLWlubGluZSB2b2lkIHd0Zl9yYW5kb21faW5pdCgpCi17Ci0gICAgc3JhbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHRpbWUoMCkpKTsKLX0KLQotLy8gUmV0dXJucyBhIHBzZXVkby1y
YW5kb20gbnVtYmVyIGluIHRoZSByYW5nZSBbMCwgMSkuCi1pbmxpbmUgZG91YmxlIHd0Zl9yYW5k
b20oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHJhbmQoKSkgLyAoc3RhdGlj
X2Nhc3Q8ZG91YmxlPihSQU5EX01BWCkgKyAxLjApOwotfQotCi0jZW5kaWYgLy8gI2lmIENPTVBJ
TEVSKE1TVkMpCi0KIGlubGluZSBkb3VibGUgZGVnMnJhZChkb3VibGUgZCkgIHsgcmV0dXJuIGQg
KiBwaURvdWJsZSAvIDE4MC4wOyB9CiBpbmxpbmUgZG91YmxlIHJhZDJkZWcoZG91YmxlIHIpICB7
IHJldHVybiByICogMTgwLjAgLyBwaURvdWJsZTsgfQogaW5saW5lIGRvdWJsZSBkZWcyZ3JhZChk
b3VibGUgZCkgeyByZXR1cm4gZCAqIDQwMC4wIC8gMzYwLjA7IH0KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9SYW5kb21OdW1iZXIuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1Jh
bmRvbU51bWJlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogICAgICAgICAgIChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8bmlrb2xhcy56aW1t
ZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJhbmRvbU51bWJlci5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGluaXRpYWxpemVSYW5kb21OdW1i
ZXJHZW5lcmF0b3IoKQoreworI2lmICFDT01QSUxFUihNU1ZDKSB8fCAhZGVmaW5lZChfQ1JUX1JB
TkRfUykKKyAgICBzcmFuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGltZSgwKSkpOworI2VuZGlm
Cit9CisKK2RvdWJsZSByYW5kb21OdW1iZXIoKQoreworI2lmICFFTkFCTEUoSlNDX01VTFRJUExF
X1RIUkVBRFMpCisgICAgc3RhdGljIGJvb2wgc19pbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlm
ICghc19pbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJh
dG9yKCk7CisgICAgICAgIHNfaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCisj
aWYgQ09NUElMRVIoTVNWQykgJiYgZGVmaW5lZChfQ1JUX1JBTkRfUykKKyAgICB1bnNpZ25lZCB1
OworICAgIHJhbmRfcygmdSk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih1KSAv
IChzdGF0aWNfY2FzdDxkb3VibGU+KFVJTlRfTUFYKSArIDEuMCk7CisjZWxzZQorICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KHJhbmQoKSkgLyAoc3RhdGljX2Nhc3Q8ZG91YmxlPihSQU5E
X01BWCkgKyAxLjApOworI2VuZGlmCit9CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9S
YW5kb21OdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVt
YmVyLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFdURl9SYW5kb21OdW1iZXJfaAorI2RlZmluZSBXVEZfUmFuZG9tTnVt
YmVyX2gKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB2b2lkIGluaXRpYWxpemVSYW5kb21OdW1i
ZXJHZW5lcmF0b3IoKTsKKworICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBp
biB0aGUgcmFuZ2UgWzAsIDEpCisgICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworCit9CisKKyNl
bmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAJKHJldmlzaW9uIDM5MzI1
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJNYWlu
VGhyZWFkLmgiCi0jaW5jbHVkZSAiTWF0aEV4dHJhcy5oIgorI2luY2x1ZGUgIlJhbmRvbU51bWJl
ci5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpCiAgICAgaWYgKCFhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRl
eCkgewogICAgICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRl
eDsKICAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAgICAgd3RmX3JhbmRvbV9pbml0KCk7
CisgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKICAgICAgICAgbWFp
blRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7CiAgICAgICAgIGluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwCShyZXZpc2lvbiAzOTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmdQdGhyZWFkcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1
ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCi0jaW5jbHVkZSAiTWF0aEV4
dHJhcy5oIgorI2luY2x1ZGUgIlJhbmRvbU51bWJlci5oIgogCiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIGluaXRpYWxpemVU
aHJlYWRpbmcoKQogICAgIGlmICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsK
ICAgICAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7CiAg
ICAgICAgIHRocmVhZE1hcE11dGV4KCk7Ci0gICAgICAgIHd0Zl9yYW5kb21faW5pdCgpOworICAg
ICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAjaWYgIVBMQVRGT1JNKERB
UldJTikKICAgICAgICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7CiAj
ZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1F0LmNwcAkocmV2aXNpb24gMzkzMjUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiTWFpblRo
cmVhZC5oIgotI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKKyNpbmNsdWRlICJSYW5kb21OdW1iZXIu
aCIKIAogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UU11dGV4PgpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgaWYgKCFhdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCkgewogICAgICAgICBhdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRleDsKICAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsK
LSAgICAgICAgd3RmX3JhbmRvbV9pbml0KCk7CisgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1i
ZXJHZW5lcmF0b3IoKTsKICAgICAgICAgUVRocmVhZCogbWFpblRocmVhZCA9IFFDb3JlQXBwbGlj
YXRpb246Omluc3RhbmNlKCktPnRocmVhZCgpOwogICAgICAgICBtYWluVGhyZWFkSWRlbnRpZmll
ciA9IGlkZW50aWZpZXJCeVF0aHJlYWRIYW5kbGUobWFpblRocmVhZCk7CiAgICAgICAgIGlmICgh
bWFpblRocmVhZElkZW50aWZpZXIpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNw
cAkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
UFRIUkVBRFMpCiAvLyBDdXJyZW50bHksIEFwcGxlJ3MgV2luZG93cyBwb3J0IHVzZXMgYSBtaXh0
dXJlIG9mIG5hdGl2ZSBhbmQgcHRocmVhZHMgZnVuY3Rpb25zIGluIEZhc3RNYWxsb2MuCkBAIC0x
MzMsNyArMTM0LDcgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICBpZiAoIWF0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7CiAgICAgICAgIGF0b21pY2FsbHlJbml0aWFs
aXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4OwogICAgICAgICB0aHJlYWRNYXBNdXRleCgpOwot
ICAgICAgICB3dGZfcmFuZG9tX2luaXQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJl
ckdlbmVyYXRvcigpOwogICAgICAgICBpbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICBt
YWluVGhyZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKICAgICAgICAgc2V0VGhyZWFk
TmFtZShtYWluVGhyZWFkSWRlbnRpZmllciwgIk1haW4gVGhyZWFkIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26046</attachid>
            <date>2008-12-15 22:40:13 -0800</date>
            <delta_ts>2008-12-15 22:43:27 -0800</delta_ts>
            <desc>Patch for WebCore/</desc>
            <filename>RandomWebCore.diff</filename>
            <type>text/plain</type>
            <size>10128</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDgtMTItMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGxlZ2FjeSByYW5kb21OdW1iZXIoKSBmdW5jdGlv
bmFsaXR5IGZyb20gSFRNTEZvcm1FbGVtZW50LCBhbmQgdXNlIHRoZSBuZXcgd3RmL1JhbmRvbU51
bWJlci5oLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbmlxdWVCb3VuZGFyeVN0cmluZyk6CisKIDIwMDgtMTItMTUgIEFkZWxlIFBl
dGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVy
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SYW5kb21O
dW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JhbmRvbU51bWJlci5oPgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlz
aW9uIDM5MzI1KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDEwICs0NCw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgotCi0jaWYg
UExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KLSNlbmRpZgorI2luY2x1
ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAogI2lmIFBMQVRGT1JNKFdYKQogI2luY2x1ZGUgPHd4
L2RlZnMuaD4KQEAgLTE5NSwyNiArMTkyLDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kRW5jb2RlZFN0
cmluZyhWZWN0b3I8YwogICAgIH0KIH0KIAotLy8gRklYTUU6IE1vdmUgdG8gcGxhdGZvcm0gZGly
ZWN0b3J5Pwotc3RhdGljIGludCByYW5kb21OdW1iZXIoKQotewotICAgIHN0YXRpYyBib29sIHJh
bmRvbVNlZWRlZCA9IGZhbHNlOwotCi0jaWYgUExBVEZPUk0oREFSV0lOKQotICAgIGlmICghcmFu
ZG9tU2VlZGVkKSB7Ci0gICAgICAgIHNyYW5kb21kZXYoKTsKLSAgICAgICAgcmFuZG9tU2VlZGVk
ID0gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJhbmRvbSgpOwotI2Vsc2UKLSAgICBpZiAoIXJh
bmRvbVNlZWRlZCkgewotICAgICAgICBzcmFuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGltZSgw
KSkpOwotICAgICAgICByYW5kb21TZWVkZWQgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gcmFu
ZCgpOwotI2VuZGlmCi19Ci0KIFRleHRFbmNvZGluZyBIVE1MRm9ybUVsZW1lbnQ6OmRhdGFFbmNv
ZGluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzTWFpbHRvRm9ybSgpKQpAQCAtNDE4LDcgKzM5NSw3
IEBAIHN0YXRpYyB2b2lkIGdldFVuaXF1ZUJvdW5kYXJ5U3RyaW5nKFZlY3QKICAgICBWZWN0b3I8
Y2hhcj4gcmFuZG9tQnl0ZXM7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewot
ICAgICAgICBpbnQgcmFuZG9tbmVzcyA9IHJhbmRvbU51bWJlcigpOworICAgICAgICBpbnQgcmFu
ZG9tbmVzcyA9IHN0YXRpY19jYXN0PGludD4oV1RGOjpyYW5kb21OdW1iZXIoKSAqIElOVF9NQVgp
OwogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoQWxwaGFOdW1lcmljRW5jTWFwWyhyYW5kb21u
ZXNzID4+IDI0KSAmIDB4M0ZdKTsKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5kKEFscGhhTnVt
ZXJpY0VuY01hcFsocmFuZG9tbmVzcyA+PiAxNikgJiAweDNGXSk7CiAgICAgICAgIHJhbmRvbUJ5
dGVzLmFwcGVuZChBbHBoYU51bWVyaWNFbmNNYXBbKHJhbmRvbW5lc3MgPj4gOCkgJiAweDNGXSk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHJldmlzaW9uIDM5MzI1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
UmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTY0LDQgKzE2NSwx
NDUgQEAgdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZQogICAgIG1faGFz
R2VuZXJhdGVkRmlsZXMgPSBmYWxzZTsKIH0KIAorLy8gSGVscGVyIGZ1bmN0aW9ucworc3RhdGlj
IGlubGluZSB2b2lkIGFwcGVuZFN0cmluZyhWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgY2hh
ciBzdHJpbmcpCit7CisgICAgYnVmZmVyLmFwcGVuZChzdHJpbmcpOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgYXBwZW5kU3RyaW5nKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBjaGFyKiBz
dHJpbmcpCit7CisgICAgYnVmZmVyLmFwcGVuZChzdHJpbmcsIHN0cmxlbihzdHJpbmcpKTsKK30K
Kworc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFN0cmluZyhWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwg
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQoreworICAgIGJ1ZmZlci5hcHBlbmQoc3RyaW5nLmRhdGEo
KSwgc3RyaW5nLmxlbmd0aCgpKTsKK30KKwordm9pZCBGb3JtRGF0YTo6YmVnaW5NdWx0aVBhcnRI
ZWFkZXIoVmVjdG9yPGNoYXI+JiBoZWFkZXIsIGNvbnN0IENTdHJpbmcmIGJvdW5kYXJ5LCBjb25z
dCBDU3RyaW5nJiBuYW1lKQoreworICAgIGFkZEJvdW5kYXJ5VG9NdWx0aVBhcnRIZWFkZXIoaGVh
ZGVyLCBib3VuZGFyeSk7CisgICAgYXBwZW5kU3RyaW5nKGhlYWRlciwgIkNvbnRlbnQtRGlzcG9z
aXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiIpOworICAgIGFwcGVuZFN0cmluZyhoZWFkZXIsIG5h
bWUpOworICAgIGFwcGVuZFN0cmluZyhoZWFkZXIsICciJyk7Cit9CisKK3ZvaWQgRm9ybURhdGE6
OmFkZEJvdW5kYXJ5VG9NdWx0aVBhcnRIZWFkZXIoVmVjdG9yPGNoYXI+JiBoZWFkZXIsIGNvbnN0
IENTdHJpbmcmIGJvdW5kYXJ5LCBib29sIGlzTGFzdEJvdW5kYXJ5KQoreworICAgIGFwcGVuZFN0
cmluZyhoZWFkZXIsICItLSIpOworICAgIGFwcGVuZFN0cmluZyhoZWFkZXIsIGJvdW5kYXJ5KTsK
KworICAgIGlmIChpc0xhc3RCb3VuZGFyeSkKKyAgICAgICAgYXBwZW5kU3RyaW5nKGhlYWRlciwg
Ii0tIik7CisKKyAgICBhcHBlbmRTdHJpbmcoaGVhZGVyLCAiXHJcbiIpOworfQorCit2b2lkIEZv
cm1EYXRhOjphZGRGaWxlTmFtZVRvTXVsdGlQYXJ0SGVhZGVyKFZlY3RvcjxjaGFyPiYgaGVhZGVy
LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQor
eworICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgdGhlIGZpbGVuYW1lIGluY2x1ZGVz
IGEgIiBtYXJrLAorICAgIC8vIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBsaWtlIENSIG9yIExGLiBU
aGlzIGFsc28gZG9lcyBzdHJhbmdlCisgICAgLy8gdGhpbmdzIGlmIHRoZSBmaWxlbmFtZSBpbmNs
dWRlcyBjaGFyYWN0ZXJzIHlvdSBjYW4ndCBlbmNvZGUKKyAgICAvLyBpbiB0aGUgd2Vic2l0ZSdz
IGNoYXJhY3RlciBzZXQuCisgICAgYXBwZW5kU3RyaW5nKGhlYWRlciwgIjsgZmlsZW5hbWU9XCIi
KTsKKyAgICBhcHBlbmRTdHJpbmcoaGVhZGVyLCBlbmNvZGluZy5lbmNvZGUoZmlsZU5hbWUuY2hh
cmFjdGVycygpLCBmaWxlTmFtZS5sZW5ndGgoKSwgUXVlc3Rpb25NYXJrc0ZvclVuZW5jb2RhYmxl
cykpOworICAgIGFwcGVuZFN0cmluZyhoZWFkZXIsICciJyk7Cit9CisKK3ZvaWQgRm9ybURhdGE6
OmFkZENvbnRlbnRUeXBlVG9NdWx0aVBhcnRIZWFkZXIoVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25z
dCBDU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBhcHBlbmRTdHJpbmcoZGF0YSwgIlxyXG5Db250
ZW50LVR5cGU6ICIpOworICAgIGFwcGVuZFN0cmluZyhkYXRhLCBtaW1lVHlwZSk7Cit9CisKK3Zv
aWQgRm9ybURhdGE6OmZpbmlzaE11bHRpUGFydEhlYWRlcihWZWN0b3I8Y2hhcj4mIGhlYWRlcikK
K3sKKyAgICBhcHBlbmRTdHJpbmcoaGVhZGVyLCAiXHJcblxyXG4iKTsKK30KKwordm9pZCBGb3Jt
RGF0YTo6YWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0
IENTdHJpbmcmIGtleSwgY29uc3QgQ1N0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKCFkYXRhLmlz
RW1wdHkoKSkKKyAgICAgICAgYXBwZW5kU3RyaW5nKGRhdGEsICcmJyk7CisKKyAgICBlbmNvZGVB
c0Zvcm1EYXRhKGRhdGEsIGtleSk7CisgICAgYXBwZW5kU3RyaW5nKGRhdGEsICc9Jyk7CisgICAg
ZW5jb2RlQXNGb3JtRGF0YShkYXRhLCB2YWx1ZSk7Cit9CisKK3ZvaWQgRm9ybURhdGE6OmVuY29k
ZUFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc19oZXhEaWdpdHNbMTddID0gIjAxMjM0NTY3ODlBQkNE
RUYiOworCisgICAgLy8gU2FtZSBzYWZlIGNoYXJhY3RlcnMgYXMgTmV0c2NhcGUgZm9yIGNvbXBh
dGliaWxpdHkuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgc19zYWZlQ2hhcmFjdGVyc1tdID0gIi0u
XyoiOworCisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvaW50ZXJhY3QvZm9ybXMu
aHRtbCNoLTE3LjEzLjQuMQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdW5z
aWduZWQgY2hhciBjID0gc3RyaW5nLmRhdGEoKVtpXTsKKworICAgICAgICBpZiAoKGMgPj0gJ0En
ICYmIGMgPD0gJ1onKSB8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICcwJyAmJiBj
IDw9ICc5JykgfHwgc3RyY2hyKHNfc2FmZUNoYXJhY3RlcnMsIGMpKQorICAgICAgICAgICAgYXBw
ZW5kU3RyaW5nKGRhdGEsIGMpOworICAgICAgICBlbHNlIGlmIChjID09ICcgJykKKyAgICAgICAg
ICAgIGFwcGVuZFN0cmluZyhkYXRhLCAnKycpOworICAgICAgICBlbHNlIGlmIChjID09ICdcbicg
fHwgKGMgPT0gJ1xyJyAmJiAoaSArIDEgPj0gbGVuZ3RoIHx8IHN0cmluZy5kYXRhKClbaSArIDFd
ICE9ICdcbicpKSkKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZyhkYXRhLCAiJTBEJTBBIik7Cisg
ICAgICAgIGVsc2UgaWYgKGMgIT0gJ1xyJykgeworICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGRh
dGEsICclJyk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZGF0YSwgc19oZXhEaWdpdHNbYyA+
PiA0XSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmcoZGF0YSwgc19oZXhEaWdpdHNbYyAmIDB4
Rl0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEZvcm1EYXRhOjpnZW5lcmF0ZVVuaXF1
ZUJvdW5kYXJ5U3RyaW5nKFZlY3RvcjxjaGFyPiYgYm91bmRhcnkpCit7CisgICAgLy8gVGhlIFJG
QyAyMDQ2IHNwZWMgc2F5cyB0aGUgQWxwaGFOdW1lcmljIGNoYXJhY3RlcnMgcGx1cyB0aGUgZm9s
bG93aW5nIGNoYXJhY3RlcnMKKyAgICAvLyBhcmUgbGVnYWwgZm9yIGJvdW5kYXJpZXM6ICAnKCkr
XywtLi86PT8KKyAgICAvLyBIb3dldmVyIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycywgdGhvdWdo
IGxlZ2FsLCBjYXVzZSBzb21lIHNpdGVzIHRvIGZhaWw6CisgICAgLy8gKCksLi86PQorICAgIC8v
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzUyCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIgc19hbHBoYU51bWVyaWNFbmNvZGluZ01hcFs2NF0gPQorICAgIHsKKyAgICAg
IDB4NDEsIDB4NDIsIDB4NDMsIDB4NDQsIDB4NDUsIDB4NDYsIDB4NDcsIDB4NDgsCisgICAgICAw
eDQ5LCAweDRBLCAweDRCLCAweDRDLCAweDRELCAweDRFLCAweDRGLCAweDUwLAorICAgICAgMHg1
MSwgMHg1MiwgMHg1MywgMHg1NCwgMHg1NSwgMHg1NiwgMHg1NywgMHg1OCwKKyAgICAgIDB4NTks
IDB4NUEsIDB4NjEsIDB4NjIsIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjYsCisgICAgICAweDY3LCAw
eDY4LCAweDY5LCAweDZBLCAweDZCLCAweDZDLCAweDZELCAweDZFLAorICAgICAgMHg2RiwgMHg3
MCwgMHg3MSwgMHg3MiwgMHg3MywgMHg3NCwgMHg3NSwgMHg3NiwKKyAgICAgIDB4NzcsIDB4Nzgs
IDB4NzksIDB4N0EsIDB4MzAsIDB4MzEsIDB4MzIsIDB4MzMsCisgICAgICAweDM0LCAweDM1LCAw
eDM2LCAweDM3LCAweDM4LCAweDM5LCAweDJCLCAweDQxCisgICAgICAvLyBGSVhNRSA8cmRhcjov
L3Byb2JsZW0vNTI1MjU3Nz4gZ21haWwgZG9lcyBub3QgYWNjZXB0IGxlZ2FsIGNoYXJhY3RlcnMg
aW4gdGhlIGZvcm0gYm91bmRhcnkKKyAgICAgIC8vIEFzIHN0YXRlZCBhYm92ZSwgc29tZSBsZWdh
bCBjaGFyYWN0ZXJzIGNhdXNlLCBzaXRlcyB0byBmYWlsLiBTcGVjaWZpY2FsbHkKKyAgICAgIC8v
IHRoZSAvIGNoYXJhY3RlciB3aGljaCB3YXMgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBhYm92
ZSBhcnJheS4gSSBoYXZlCisgICAgICAvLyByZXBsYWNlZCB0aGUgbGFzdCBjaGFyYWN0ZXIgd2l0
aCBhbm90aGVyIGNoYXJhY3RlciBhbHJlYWR5IGluIHRoZSBhcnJheQorICAgICAgLy8gKG5vdGlj
ZSB0aGUgZmlyc3QgYW5kIGxhc3QgdmFsdWVzIGFyZSBib3RoIDB4NDEsIEEpLiBJbnN0ZWFkIG9m
IHBpY2tpbmcKKyAgICAgIC8vIGFub3RoZXIgdW5pcXVlIGxlZ2FsIGNoYXJhY3RlciBmb3IgYm91
bmRhcnkgc3RyaW5ncyB0aGF0LCBiZWNhdXNlIGl0IGhhcworICAgICAgLy8gbmV2ZXIgYmVlbiB0
ZXN0ZWQsIG1heSBvciBtYXkgbm90IGJyZWFrIG90aGVyIHNpdGVzLCBJIHNpbXBseQorICAgICAg
Ly8gcmVwbGFjZWQgLyB3aXRoIEEuICBUaGlzIG1lYW5zIEEgaXMgdHdpY2UgYXMgbGlrZWx5IHRv
IG9jY3VyIGluIG91ciBib3VuZGFyeQorICAgICAgLy8gc3RyaW5ncyB0aGFuIGFueSBvdGhlciBj
aGFyYWN0ZXIgYnV0IEkgdGhpbmsgdGhpcyBpcyBmaW5lIGZvciB0aGUgdGltZSBiZWluZy4KKyAg
ICAgIC8vIFRoZSBGSVhNRSBoZXJlIGlzIGFib3V0IHJlc3RvcmluZyB0aGUgLyBjaGFyYWN0ZXIg
b25jZSB0aGUgYWZvcmVtZW50aW9uZWQKKyAgICAgIC8vIHJhZGFyIGhhcyBiZWVuIHJlc29sdmVk
LgorICAgIH07CisKKyAgICAvLyBTdGFydCB3aXRoIGFuIGluZm9ybWF0aXZlIHByZWZpeC4KKyAg
ICBhcHBlbmRTdHJpbmcoYm91bmRhcnksICItLS0tV2ViS2l0Rm9ybUJvdW5kYXJ5Iik7CisKKyAg
ICAvLyBBcHBlbmQgMTYgcmFuZG9tIDdiaXQgYXNjaWkgQWxwaGFOdW1lcmljIGNoYXJhY3RlcnMu
CisgICAgVmVjdG9yPGNoYXI+IHJhbmRvbUJ5dGVzOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDQ7ICsraSkgeworICAgICAgICBpbnQgcmFuZG9tbmVzcyA9IHN0YXRpY19jYXN0PGlu
dD4oV1RGOjpyYW5kb21OdW1iZXIoKSAqIElOVF9NQVgpOworICAgICAgICByYW5kb21CeXRlcy5h
cHBlbmQoc19hbHBoYU51bWVyaWNFbmNvZGluZ01hcFsocmFuZG9tbmVzcyA+PiAyNCkgJiAweDNG
XSk7CisgICAgICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChzX2FscGhhTnVtZXJpY0VuY29kaW5nTWFw
WyhyYW5kb21uZXNzID4+IDE2KSAmIDB4M0ZdKTsKKyAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5k
KHNfYWxwaGFOdW1lcmljRW5jb2RpbmdNYXBbKHJhbmRvbW5lc3MgPj4gOCkgJiAweDNGXSk7Cisg
ICAgICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChzX2FscGhhTnVtZXJpY0VuY29kaW5nTWFwW3JhbmRv
bW5lc3MgJiAweDNGXSk7CisgICAgfQorCisgICAgYm91bmRhcnkuYXBwZW5kKHJhbmRvbUJ5dGVz
KTsKKyAgICBib3VuZGFyeS5hcHBlbmQoMCk7IC8vIEFkZCBhIDAgYXQgdGhlIGVuZCBzbyB3ZSBj
YW4gdXNlIHRoaXMgYXMgYSBDLXN0eWxlIHN0cmluZy4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHJldmlzaW9uIDM5MzI1
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hyb21lQ2xp
ZW50OworY2xhc3MgVGV4dEVuY29kaW5nOwogCiBjbGFzcyBGb3JtRGF0YUVsZW1lbnQgewogcHVi
bGljOgpAQCAtODUsNiArODYsMjIgQEAgcHVibGljOgogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVh
bShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQog
CisgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IEhUTUxGb3JtRWxlbWVudC9XTUxHb0Vs
ZW1lbnQgZm9yIE11bHRpUGFydCBmb3JtIGRhdGEKKyAgICBzdGF0aWMgdm9pZCBiZWdpbk11bHRp
UGFydEhlYWRlcihWZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJiBib3VuZGFyeSwgY29uc3Qg
Q1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgYWRkQm91bmRhcnlUb011bHRpUGFydEhl
YWRlcihWZWN0b3I8Y2hhcj4mIGhlYWRlciwgY29uc3QgQ1N0cmluZyYgYm91bmRhcnksIGJvb2wg
aXNMYXN0Qm91bmRhcnkgPSBmYWxzZSk7CisgICAgc3RhdGljIHZvaWQgYWRkRmlsZU5hbWVUb011
bHRpUGFydEhlYWRlcihWZWN0b3I8Y2hhcj4mLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRDb250ZW50VHlw
ZVRvTXVsdGlQYXJ0SGVhZGVyKFZlY3RvcjxjaGFyPiYsIGNvbnN0IENTdHJpbmcmIG1pbWVUeXBl
KTsKKyAgICBzdGF0aWMgdm9pZCBmaW5pc2hNdWx0aVBhcnRIZWFkZXIoVmVjdG9yPGNoYXI+Jik7
CisKKyAgICAvLyBGdW5jdGlvbnMgdXNlZCBieSBIVE1MRm9ybUVsZW1lbnQvV01MR29FbGVtZW50
IGZvciBub24tTXVsdGlQYXJ0IGZvcm0gZGF0YQorICAgIHN0YXRpYyB2b2lkIGFkZEtleVZhbHVl
UGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiwgY29uc3QgQ1N0cmluZyYga2V5LCBjb25zdCBD
U3RyaW5nJiB2YWx1ZSk7CisKKyAgICAvLyBFbmNvZGUgdGhlIGlucHV0IHN0cmluZyBhcyBIVE1M
IGZvcm0gY29tcGF0aWJsZSBkYXRhCisgICAgc3RhdGljIHZvaWQgZW5jb2RlQXNGb3JtRGF0YShW
ZWN0b3I8Y2hhcj4mLCBjb25zdCBDU3RyaW5nJik7CisKKyAgICAvLyBSZXR1cm5zIGEgMC10ZXJt
aW5hdGVkIEMgc3RyaW5nIGluIHRoZSB2ZWN0b3IKKyAgICBzdGF0aWMgdm9pZCBnZW5lcmF0ZVVu
aXF1ZUJvdW5kYXJ5U3RyaW5nKFZlY3RvcjxjaGFyPiYpOworCiBwcml2YXRlOgogICAgIEZvcm1E
YXRhKCk7CiAgICAgRm9ybURhdGEoY29uc3QgRm9ybURhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26047</attachid>
            <date>2008-12-15 22:42:45 -0800</date>
            <delta_ts>2008-12-16 12:00:56 -0800</delta_ts>
            <desc>Updated patch for JavaScriptCore</desc>
            <filename>RandomJSC.diff</filename>
            <type>text/plain</type>
            <size>20341</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5MzI3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDgtMTItMTUgIE5pa29sYXMg
WmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgcmFuZG9tIG51
bWJlciBnZW5lcmF0aW9uIGluIEphdmFTY3JpcHRDb3JlICYgV2ViQ29yZSwgYnkgaW50cm9kdWNp
bmcKKyAgICAgICAgd3RmL1JhbmRvbU51bWJlci5oIGFuZCBtb3Zpbmcgd3RmX3JhbmRvbS93dGZf
cmFuZG9tX2luaXQgb3V0IG9mIE1hdGhFeHRyYXMuaC4KKworICAgICAgICBUaGVyZSdzIGEgY2Vu
dHJhbCBmdW5jdGlvbiwgcmFuZG9tTnVtYmVyKCksIHdoaWNoIHRha2VzIGNhcmUgb2Ygc2VlZGlu
ZyB0aGUKKyAgICAgICAgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IsIG9uIHRoZSBmaXJzdCBpbnZv
Y2F0aW9uIC0gYnV0IG9ubHkgaWYgSlNDIGlzIGJ1aWx0CisgICAgICAgIHdpdGhvdXQgRU5BQkxF
KEpTQ19NVUxUSVBMRV9USFJFQURTKS4gSWYgbXVsdGlwbGUgdGhyZWFkcyBhcmUgYWN0aXZhdGVk
LAorICAgICAgICByYW5kb21OdW1iZXIoKSBkb2VzIHRoZSBzYW1lIGFzIHd0Zl9yYW5kb20oKSBk
b2VzIG5vdywgYXMgdGhlIHJhbmRvbSBudW1iZXIKKyAgICAgICAgZ2VuZXJhdG9yIGhhcyBhbHJl
YWR5IGJlZW4gc2VlZWRlZCBieSB0aGUgVGhyZWFkaW5nOjppbml0aWFsaXplVGhyZWFkaW5nKCkg
Y29kZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUuc2NvbnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYu
dmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBydW50
aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUmFuZG9tKToK
KyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOgorICAgICAgICAqIHd0Zi9SYW5kb21OdW1iZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRv
cik6CisgICAgICAgIChXVEY6OnJhbmRvbU51bWJlcik6CisgICAgICAgICogd3RmL1JhbmRvbU51
bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nR3RrLmNwcDoKKyAgICAgICAg
KFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJl
YWRzLmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICog
d3RmL1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6
CisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorCiAyMDA4LTEyLTE1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw4IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCBcCiAJSmF2YVNjcmlwdENv
cmUvd3RmL1Bhc3NSZWZQdHIuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggXAor
CUphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwIFwKKwlKYXZhU2NyaXB0Q29yZS93
dGYvUmFuZG9tTnVtYmVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkLmggXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKIAlKYXZhU2Ny
aXB0Q29yZS93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmggXApJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw2ICsyNzAsNyBAQCBfX1pOM1dURjEy
Y3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfCiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9F
UzBfUEtjCiBfX1pOM1dURjEyZGV0YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRF
dgorX19aTjNXVEYxMnJhbmRvbU51bWJlckV2CiBfX1pOM1dURjEzY3VycmVudFRocmVhZEV2CiBf
X1pOM1dURjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjR3YWl0
RVJOU181TXV0ZXhFCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCShyZXZpc2lvbiAz
OTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvQXNzZXJ0aW9ucy5jcHAg
XAogICAgIHd0Zi9IYXNoVGFibGUuY3BwIFwKICAgICB3dGYvTWFpblRocmVhZC5jcHAgXAorICAg
IHd0Zi9SYW5kb21OdW1iZXIuY3BwIFwKICAgICB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNw
cCBcCiAgICAgd3RmL3VuaWNvZGUvQ29sbGF0b3JEZWZhdWx0LmNwcCBcCiAgICAgd3RmL3VuaWNv
ZGUvaWN1L0NvbGxhdG9ySUNVLmNwcCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5zY29ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5z
Y29ucwkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5z
Y29ucwkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIHNvdXJjZXNbJ3d0ZiddID0g
WwogICAgICd3dGYvQXNzZXJ0aW9ucy5jcHAnLAogICAgICd3dGYvRmFzdE1hbGxvYy5jcHAnLAog
ICAgICd3dGYvSGFzaFRhYmxlLmNwcCcsCisgICAgJ3d0Zi9SYW5kb21OdW1iZXIuY3BwJywKICAg
ICAnd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAnLAogICAgICd3dGYvZHRvYS5jcHAnLAog
XQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVNvdXJjZXMuYmtsCShyZXZpc2lv
biAzOTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlU291cmNlcy5ia2wJKHdv
cmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsNyBAQCBTb3VyY2UgZmlsZXMgZm9yIEpTQ29yZS4K
ICAgICAgICAgd3RmL0Zhc3RNYWxsb2MuY3BwCiAgICAgICAgIHd0Zi9IYXNoVGFibGUuY3BwCiAg
ICAgICAgIHd0Zi9NYWluVGhyZWFkLmNwcAorICAgICAgICB3dGYvUmFuZG9tTnVtYmVyLmNwcAog
ICAgICAgICB3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgICAgICB3dGYvVENTeXN0
ZW1BbGxvYy5jcHAKICAgICAgICAgd3RmL1RocmVhZGluZ05vbmUuY3BwCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCShy
ZXZpc2lvbiAzOTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9X
VEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU5LDYgKzM1OSwxNCBAQAogCQkJPg0K
IAkJPC9GaWxlPg0KIAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxSYW5kb21O
dW1iZXIuY3BwIg0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlx3dGZcUmFuZG9tTnVtYmVyLmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZpbGUN
CiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxSZWZDb3VudGVkLmgiDQogCQkJPg0KIAkJPC9G
aWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw4IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CQkwNkQzNThCMzBEQUFEQUE0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNkQzNThBMjBEQUFEOUM0MDAzQjE3
NEUgLyogTWFpblRocmVhZC5jcHAgKi87IH07CiAJCTA2RDM1OEI0MERBQURBQUEwMDNCMTc0RSAv
KiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDZEMzU4QTEwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi87
IH07CisJCTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4RkE1QjkwRUY3NkQ0
MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi87IH07CisJCTA4OEZBNUJDMEVGNzZENDMw
MDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4OEZBNUJBMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDBC
N0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNBY3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAv
KiBKU0FjdGl2YXRpb24uY3BwICovOyB9OwogCQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyog
SlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDEyMTEzMTBBNDg3
OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKQEAgLTQwOCw2ICs0MTAsOCBAQAog
CQkwNkQzNThBMTBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1haW5UaHJlYWRNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2RDM1OEEyMERBQUQ5QzQwMDNCMTc0RSAvKiBNYWluVGhy
ZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1haW5UaHJlYWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNkQzNThBMzBEQUFEOUM0MDAzQjE3
NEUgLyogTWFpblRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWlu
VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4OEZBNUI5MEVGNzZENDMw
MDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmFuZG9tTnVtYmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDg4RkE1QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21OdW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCYXNlUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxNDEyMTEwMjBBNDg3ODA5MDA0ODAyNTUgLyogbWluaWRvbS5j
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBtaW5pZG9tLmM7IHBhdGggPSB0ZXN0
cy9taW5pZG9tLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTIxMTBEMEE0ODc4
ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gbWluaWRvbS5qczsgcGF0aCA9IHRlc3RzL21pbmlkb20uanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDg5LDYgKzEwOTMsOCBAQAogCQkJCTkzMDNGNTY3MDk5MTE4
RkEwMEFENzFCOCAvKiBPd25QdHIuaCAqLywKIAkJCQk2NTgwRjc5NTA5NDA3MDU2MDA4MkMyMTkg
LyogUGFzc1JlZlB0ci5oICovLAogCQkJCTY1RDZEODdFMDlCNUEzMkUwMDAyRTRENyAvKiBQbGF0
Zm9ybS5oICovLAorCQkJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIu
Y3BwICovLAorCQkJCTA4OEZBNUJBMEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuaCAq
LywKIAkJCQkxNDE5RDMyQzBDRUE3Q0RFMDBGRjUwN0EgLyogUmVmQ291bnRlZC5oICovLAogCQkJ
CTkwNUIwMkFEMEUyODY0MEYwMDZERjg4MiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwICov
LAogCQkJCTkwRDM0NjlCMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIu
aCAqLywKQEAgLTE1OTgsNiArMTYwNCw3IEBACiAJCQkJQkMyNTdERjQwRTFGNTM3NDAwMTZCNkM5
IC8qIFByb3RvdHlwZUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRF
NkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5
REE0QTBFRDI0NUVDMDBCODk2MTkgLyogUXVhbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MDg4RkE1QkMwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NTcwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZkNvdW50ZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkwRDM0NjlDMEUyODUyODAwMDk0OTJFRSAvKiBSZWZDb3VudGVkTGVha0NvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDU4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBSZWZQ
dHIuaCBpbiBIZWFkZXJzICovLApAQCAtMTYyOCw2ICsxNjM1LDcgQEAKIAkJCQlCQzE4QzUyNjBF
MTZGQ0E3MDBCMzQ0NjAgLyogU3RyaW5nUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCQ0NGMEQwODBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1Yklu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTA0MTQ4MEVCOTI1MDkwMEZFMjZGQSAvKiBTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDZCMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBTeW1ib2xUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NkMw
RTE2RjVDRDAwQjM0NDYwIC8qIFRDUGFja2VkQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTY2
MCw3ICsxNjY4LDYgQEAKIAkJCQlCQzE4QzQ0RDBFMTZGNUNEMDBCMzQ0NjAgLyogcGNyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NEUwRTE2RjVDRDAwQjM0NDYwIC8qIHBjcmVfaW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDcyMEUxNkY1Q0QwMEIzNDQ2MCAvKiB1Y3Bp
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNDRjBEMDgwRUYwQUFCOTAwNDEzQzhGIC8q
IFN0cnVjdHVyZVN0dWJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5ODksMTEgKzE5OTYsMTMg
QEAKIAkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTVBQjgzNDIwREE0MzIyNTAwQkM4M0YzIC8qIFByb2ZpbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFDNjE1MTZDMEVCQUM3QTAwMDMxMzc2RiAvKiBQcm9maWxlclNl
cnZlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA4OEZBNUJCMEVGNzZENDMwMDU3OEU2RiAvKiBS
YW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTA1QjAyQUUwRTI4NjQwRjAwNkRG
ODgyIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5
RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hh
aW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0
cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU3OTNEMEQ2QzlCOTIw
MEZFQTNCQSAvKiBUaHJlYWRpbmdQdGhyZWFkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NUNE
NDFCMzBFMUJGNjU2MDA4NTM1OEUgLyogVHJlZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFFRjc5QUEwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yMDA2LDcgKzIwMTUsNiBAQAogCQkJCTkzMDc1NEQwMDhCMEY3NDYwMEFCMzA1NiAvKiBwY3Jl
X3RhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzcwMTM0ODBDQTk3RTBFMDBGQTE0RDMg
LyogcGNyZV91Y3Bfc2VhcmNoZnVuY3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjZCRDQw
OEIxNTE0MTAwRjg1MjI2IC8qIHBjcmVfeGNsYXNzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJD
Q0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24g
MzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0yMTAsMTUgKzIxMSw3
IEBAIEpTVmFsdWUqIG1hdGhQcm90b0Z1bmNQb3coRXhlY1N0YXRlKiBleGUKIAogSlNWYWx1ZSog
bWF0aFByb3RvRnVuY1JhbmRvbShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSos
IGNvbnN0IEFyZ0xpc3QmKQogewotI2lmICFFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCi0g
ICAgc3RhdGljIGJvb2wgZGlkSW5pdFJhbmRvbTsKLSAgICBpZiAoIWRpZEluaXRSYW5kb20pIHsK
LSAgICAgICAgd3RmX3JhbmRvbV9pbml0KCk7Ci0gICAgICAgIGRpZEluaXRSYW5kb20gPSB0cnVl
OwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHd0Zl9yYW5kb20o
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHJhbmRvbU51bWJlcigpKTsKIH0KIAogSlNW
YWx1ZSogbWF0aFByb3RvRnVuY1JvdW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1Zh
bHVlKiwgY29uc3QgQXJnTGlzdCYgYXJncykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYXRo
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaAko
cmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTgsNDEgKzE1OCw4IEBAIGlubGluZSBkb3VibGUgd3RmX3Bvdyhkb3Vi
bGUgeCwgZG91YmxlIHkKICNkZWZpbmUgZm1vZCh4LCB5KSB3dGZfZm1vZCh4LCB5KQogI2RlZmlu
ZSBwb3coeCwgeSkgd3RmX3Bvdyh4LCB5KQogCi0jaWYgZGVmaW5lZChfQ1JUX1JBTkRfUykKLS8v
IEluaXRpYWxpemVzIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KLWlubGluZSB2b2lkIHd0
Zl9yYW5kb21faW5pdCgpCi17Ci0gICAgLy8gTm8gbmVlZCB0byBpbml0aWFsaXplIGZvciByYW5k
X3MuCi19Ci0KLS8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2Ug
WzAsIDEpLgotaW5saW5lIGRvdWJsZSB3dGZfcmFuZG9tKCkKLXsKLSAgICB1bnNpZ25lZCB1Owot
ICAgIHJhbmRfcygmdSk7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih1KSAvIChz
dGF0aWNfY2FzdDxkb3VibGU+KFVJTlRfTUFYKSArIDEuMCk7Ci19Ci0jZW5kaWYgLy8gX0NSVF9S
QU5EX1MKLQogI2VuZGlmIC8vIENPTVBJTEVSKE1TVkMpCiAKLSNpZiAhQ09NUElMRVIoTVNWQykg
fHwgIWRlZmluZWQoX0NSVF9SQU5EX1MpCi0KLS8vIEluaXRpYWxpemVzIHRoZSByYW5kb20gbnVt
YmVyIGdlbmVyYXRvci4KLWlubGluZSB2b2lkIHd0Zl9yYW5kb21faW5pdCgpCi17Ci0gICAgc3Jh
bmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRpbWUoMCkpKTsKLX0KLQotLy8gUmV0dXJucyBhIHBz
ZXVkby1yYW5kb20gbnVtYmVyIGluIHRoZSByYW5nZSBbMCwgMSkuCi1pbmxpbmUgZG91YmxlIHd0
Zl9yYW5kb20oKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHJhbmQoKSkgLyAo
c3RhdGljX2Nhc3Q8ZG91YmxlPihSQU5EX01BWCkgKyAxLjApOwotfQotCi0jZW5kaWYgLy8gI2lm
IENPTVBJTEVSKE1TVkMpCi0KIGlubGluZSBkb3VibGUgZGVnMnJhZChkb3VibGUgZCkgIHsgcmV0
dXJuIGQgKiBwaURvdWJsZSAvIDE4MC4wOyB9CiBpbmxpbmUgZG91YmxlIHJhZDJkZWcoZG91Ymxl
IHIpICB7IHJldHVybiByICogMTgwLjAgLyBwaURvdWJsZTsgfQogaW5saW5lIGRvdWJsZSBkZWcy
Z3JhZChkb3VibGUgZCkgeyByZXR1cm4gZCAqIDQwMC4wIC8gMzYwLjA7IH0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUv
d3RmL1JhbmRvbU51bWJlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogICAgICAgICAgIChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8bmlrb2xh
cy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJhbmRvbU51bWJlci5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5j
bHVkZSA8c3RkbGliLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGluaXRpYWxpemVSYW5k
b21OdW1iZXJHZW5lcmF0b3IoKQoreworI2lmICFDT01QSUxFUihNU1ZDKSB8fCAhZGVmaW5lZChf
Q1JUX1JBTkRfUykKKyAgICBzcmFuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGltZSgwKSkpOwor
I2VuZGlmCit9CisKK2RvdWJsZSByYW5kb21OdW1iZXIoKQoreworI2lmICFFTkFCTEUoSlNDX01V
TFRJUExFX1RIUkVBRFMpCisgICAgc3RhdGljIGJvb2wgc19pbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIGlmICghc19pbml0aWFsaXplZCkgeworICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVy
R2VuZXJhdG9yKCk7CisgICAgICAgIHNfaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyNlbmRp
ZgorCisjaWYgQ09NUElMRVIoTVNWQykgJiYgZGVmaW5lZChfQ1JUX1JBTkRfUykKKyAgICB1bnNp
Z25lZCB1OworICAgIHJhbmRfcygmdSk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih1KSAvIChzdGF0aWNfY2FzdDxkb3VibGU+KFVJTlRfTUFYKSArIDEuMCk7CisjZWxzZQorICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHJhbmQoKSkgLyAoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihSQU5EX01BWCkgKyAxLjApOworI2VuZGlmCit9CisKK30KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9SYW5kb21OdW1iZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVt
YmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFdURl9SYW5kb21OdW1iZXJfaAorI2RlZmluZSBXVEZfUmFu
ZG9tTnVtYmVyX2gKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB2b2lkIGluaXRpYWxpemVSYW5k
b21OdW1iZXJHZW5lcmF0b3IoKTsKKworICAgIC8vIFJldHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51
bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpCisgICAgZG91YmxlIHJhbmRvbU51bWJlcigpOworCit9
CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAJKHJldmlzaW9u
IDM5MzI1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ0d0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRl
ICJNYWluVGhyZWFkLmgiCi0jaW5jbHVkZSAiTWF0aEV4dHJhcy5oIgorI2luY2x1ZGUgIlJhbmRv
bU51bWJlci5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
aW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgaWYgKCFhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleCkgewogICAgICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5l
dyBNdXRleDsKICAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAgICAgd3RmX3JhbmRvbV9p
bml0KCk7CisgICAgICAgIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKICAgICAg
ICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7CiAgICAgICAgIGluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFk
aW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAzOTMyNSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdQdGhyZWFkcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAog
I2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCi0jaW5jbHVkZSAi
TWF0aEV4dHJhcy5oIgorI2luY2x1ZGUgIlJhbmRvbU51bWJlci5oIgogCiAjaW5jbHVkZSA8ZXJy
bm8uaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKQogICAgIGlmICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgpIHsKICAgICAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0
ZXg7CiAgICAgICAgIHRocmVhZE1hcE11dGV4KCk7Ci0gICAgICAgIHd0Zl9yYW5kb21faW5pdCgp
OworICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAjaWYgIVBMQVRG
T1JNKERBUldJTikKICAgICAgICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFk
KCk7CiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1F0LmNwcAkocmV2aXNpb24g
MzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAi
TWFpblRocmVhZC5oIgotI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKKyNpbmNsdWRlICJSYW5kb21O
dW1iZXIuaCIKIAogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UU11dGV4
PgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgaWYg
KCFhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCkgewogICAgICAgICBhdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRleDsKICAgICAgICAgdGhyZWFkTWFwTXV0
ZXgoKTsKLSAgICAgICAgd3RmX3JhbmRvbV9pbml0KCk7CisgICAgICAgIGluaXRpYWxpemVSYW5k
b21OdW1iZXJHZW5lcmF0b3IoKTsKICAgICAgICAgUVRocmVhZCogbWFpblRocmVhZCA9IFFDb3Jl
QXBwbGljYXRpb246Omluc3RhbmNlKCktPnRocmVhZCgpOwogICAgICAgICBtYWluVGhyZWFkSWRl
bnRpZmllciA9IGlkZW50aWZpZXJCeVF0aHJlYWRIYW5kbGUobWFpblRocmVhZCk7CiAgICAgICAg
IGlmICghbWFpblRocmVhZElkZW50aWZpZXIpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
V2luLmNwcAkocmV2aXNpb24gMzkzMjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgPHdpbmRv
d3MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCiAjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoUFRIUkVBRFMpCiAvLyBDdXJyZW50bHksIEFwcGxlJ3MgV2luZG93cyBwb3J0IHVzZXMg
YSBtaXh0dXJlIG9mIG5hdGl2ZSBhbmQgcHRocmVhZHMgZnVuY3Rpb25zIGluIEZhc3RNYWxsb2Mu
CkBAIC0xMzMsNyArMTM0LDcgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICBpZiAo
IWF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7CiAgICAgICAgIGF0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4OwogICAgICAgICB0aHJlYWRNYXBNdXRl
eCgpOwotICAgICAgICB3dGZfcmFuZG9tX2luaXQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZVJhbmRv
bU51bWJlckdlbmVyYXRvcigpOwogICAgICAgICBpbml0aWFsaXplTWFpblRocmVhZCgpOwogICAg
ICAgICBtYWluVGhyZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKICAgICAgICAgc2V0
VGhyZWFkTmFtZShtYWluVGhyZWFkSWRlbnRpZmllciwgIk1haW4gVGhyZWFkIik7Cg==
</data>
<flag name="review"
          id="12272"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26048</attachid>
            <date>2008-12-15 22:43:27 -0800</date>
            <delta_ts>2008-12-16 12:00:56 -0800</delta_ts>
            <desc>Updated patch for WebCore</desc>
            <filename>RandomWebCore.diff</filename>
            <type>text/plain</type>
            <size>2395</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTMyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDgtMTItMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMu
emltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGxlZ2FjeSByYW5kb21OdW1iZXIoKSBmdW5jdGlv
bmFsaXR5IGZyb20gSFRNTEZvcm1FbGVtZW50LCBhbmQgdXNlIHRoZSBuZXcgd3RmL1JhbmRvbU51
bWJlci5oLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbmlxdWVCb3VuZGFyeVN0cmluZyk6CisKIDIwMDgtMTItMTUgIEFkZWxlIFBl
dGVyc29uICA8YWRlbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVy
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SYW5kb21O
dW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1JhbmRvbU51bWJlci5oPgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlz
aW9uIDM5MzI1KQorKysgV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDEwICs0NCw3IEBACiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgotCi0jaWYg
UExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KLSNlbmRpZgorI2luY2x1
ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAogI2lmIFBMQVRGT1JNKFdYKQogI2luY2x1ZGUgPHd4
L2RlZnMuaD4KQEAgLTE5NSwyNiArMTkyLDYgQEAgc3RhdGljIHZvaWQgYXBwZW5kRW5jb2RlZFN0
cmluZyhWZWN0b3I8YwogICAgIH0KIH0KIAotLy8gRklYTUU6IE1vdmUgdG8gcGxhdGZvcm0gZGly
ZWN0b3J5Pwotc3RhdGljIGludCByYW5kb21OdW1iZXIoKQotewotICAgIHN0YXRpYyBib29sIHJh
bmRvbVNlZWRlZCA9IGZhbHNlOwotCi0jaWYgUExBVEZPUk0oREFSV0lOKQotICAgIGlmICghcmFu
ZG9tU2VlZGVkKSB7Ci0gICAgICAgIHNyYW5kb21kZXYoKTsKLSAgICAgICAgcmFuZG9tU2VlZGVk
ID0gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHJhbmRvbSgpOwotI2Vsc2UKLSAgICBpZiAoIXJh
bmRvbVNlZWRlZCkgewotICAgICAgICBzcmFuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGltZSgw
KSkpOwotICAgICAgICByYW5kb21TZWVkZWQgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gcmFu
ZCgpOwotI2VuZGlmCi19Ci0KIFRleHRFbmNvZGluZyBIVE1MRm9ybUVsZW1lbnQ6OmRhdGFFbmNv
ZGluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzTWFpbHRvRm9ybSgpKQpAQCAtNDE4LDcgKzM5NSw3
IEBAIHN0YXRpYyB2b2lkIGdldFVuaXF1ZUJvdW5kYXJ5U3RyaW5nKFZlY3QKICAgICBWZWN0b3I8
Y2hhcj4gcmFuZG9tQnl0ZXM7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkgewot
ICAgICAgICBpbnQgcmFuZG9tbmVzcyA9IHJhbmRvbU51bWJlcigpOworICAgICAgICBpbnQgcmFu
ZG9tbmVzcyA9IHN0YXRpY19jYXN0PGludD4oV1RGOjpyYW5kb21OdW1iZXIoKSAqIElOVF9NQVgp
OwogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoQWxwaGFOdW1lcmljRW5jTWFwWyhyYW5kb21u
ZXNzID4+IDI0KSAmIDB4M0ZdKTsKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBwZW5kKEFscGhhTnVt
ZXJpY0VuY01hcFsocmFuZG9tbmVzcyA+PiAxNikgJiAweDNGXSk7CiAgICAgICAgIHJhbmRvbUJ5
dGVzLmFwcGVuZChBbHBoYU51bWVyaWNFbmNNYXBbKHJhbmRvbW5lc3MgPj4gOCkgJiAweDNGXSk7
Cg==
</data>
<flag name="review"
          id="12273"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26062</attachid>
            <date>2008-12-16 12:00:56 -0800</date>
            <delta_ts>2008-12-16 12:44:07 -0800</delta_ts>
            <desc>Updated combined patch v2</desc>
            <filename>RandomNumber.diff</filename>
            <type>text/plain</type>
            <size>26271</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDgtMTItMTYgIE5pa29sYXMg
WmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgcmFuZG9tIG51
bWJlciBnZW5lcmF0aW9uIGluIEphdmFTY3JpcHRDb3JlICYgV2ViQ29yZSwgYnkgaW50cm9kdWNp
bmcKKyAgICAgICAgd3RmL1JhbmRvbU51bWJlci5oIGFuZCBtb3Zpbmcgd3RmX3JhbmRvbS93dGZf
cmFuZG9tX2luaXQgb3V0IG9mIE1hdGhFeHRyYXMuaC4KKworICAgICAgICB3dGZfcmFuZG9tX2lu
aXQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5lcmF0b3Io
KSBhbmQKKyAgICAgICAgbGl2ZXMgaW4gaXQncyBvd24gcHJpdmF0ZSBoZWFkZXI6IHd0Zi9SYW5k
b21OdW1iZXJTZWVkLmgsIG9ubHkgaW50ZW5kZWQgdG8KKyAgICAgICAgYmUgdXNlZCBmcm9tIHdp
dGhpbiBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICB3dGZfcmFuZG9tKCkgaGFzIGJlZW4gcmVu
YW1lZCB0byByYW5kb21OdW1iZXIoKSBhbmQgbGl2ZXMgaW4gYSBwdWJsaWMgaGVhZGVyCisgICAg
ICAgIHd0Zi9SYW5kb21OdW1iZXIuaCwgdXNhYmxlIGZyb20gd2l0aGluIEphdmFTY3JpcHRDb3Jl
ICYgV2ViQ29yZS4gSXQgZW5jYXBzdWxhdGVzCisgICAgICAgIHRoZSBjb2RlIHRha2luZyBjYXJl
IG9mIGluaXRpYWxpemluZyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKG9ubHkgd2hlbgor
ICAgICAgICBidWlsZGluZyB3aXRob3V0IEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUyksIG90
aGVyd2hpc2UgaW5pdGlhbGl6ZVRocmVhZGluZygpCisgICAgICAgIGFscmVhZHkgdG9vayBjYXJl
IG9mIHRoYXQpLgorCisgICAgICAgIEZ1bmN0aW9uYWwgY2hhbmdlIG9uIGRhcndpbjogVXNlIHJh
bmRvbSgpIGluc3RlYWQgb2YgcmFuZCgpLCBhcyBpdCBnb3QgYSBsYXJnZXIKKyAgICAgICAgcGVy
aW9kIChtb3JlIHJhbmRvbW5lc3MpLiBIVE1MRm9ybUVsZW1lbnQgYWxyZWFkeSBjb250YWlucyB0
aGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGFuZCBJIGp1c3QgbW92ZWQgaXQgaW4gcmFuZG9t
TnVtYmVyKCksIGFzICBzcGVjaWFsIGNhc2UgZm9yIFBMQVRGT1JNKERBUldJTikuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIFJhbmRvbU51bWJlci4oY3BwL2gpIC8gUmFuZG9tTnVt
YmVyU2VlZC5oLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUucHJpOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5z
Y29uczogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZVNvdXJjZXMuYmtsOiBEaXR0
by4KKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuY3BwOiBVc2UgbmV3IFdURjo6cmFuZG9t
TnVtYmVyKCkgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY1JhbmRv
bSk6CisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDogTW92ZSB3dGZfcmFuZG9tIC8gd3RmX3Jh
bmRvbV9pbml0IHRvIG5ldyBmaWxlcy4KKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXVEY6OnJhbmRvbU51bWJlcik6CisgICAgICAgICogd3RmL1JhbmRv
bU51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvUmFuZG9tTnVtYmVyU2VlZC5oOiBBZGRl
ZC4gSW50ZXJuYWwgdXNhZ2Ugd2l0aGluIEpTQyBvbmx5LgorICAgICAgICAoV1RGOjppbml0aWFs
aXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nR3RrLmNw
cDogUmVuYW1lIHd0Zl9yYW5kb21faW5pdCgpIHRvIGluaXRpYWxpemVSYW5kb21OdW1iZXJHZW5l
cmF0b3IoKS4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICog
d3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDogRGl0dG8uCisgICAgICAgIChXVEY6OmluaXRpYWxp
emVUaHJlYWRpbmcpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdRdC5jcHA6IERpdHRvLgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
V2luLmNwcDogRGl0dG8uCisgICAgICAgIChXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcpOgorCiAy
MDA4LTEyLTE2IFlhZWwgQWhhcm9uIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiAzOTMzNSkKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTgsNiArMjE4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
SmF2YVNjcmlwdENvcmUvd3RmL093blB0ci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGFzc1Jl
ZlB0ci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBcCisJSmF2YVNjcmlwdENv
cmUvd3RmL1JhbmRvbU51bWJlci5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1i
ZXIuaCBcCisJSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlclNlZWQuaCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL1JlZkNvdW50ZWQuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5jcHAgXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuaCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAzOTMz
NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpA
QCAtMjcwLDYgKzI3MCw3IEBAIF9fWk4zV1RGMTJjcmVhdGVUaHJlYWRFUEZQdlMwX0VTMF8KIF9f
Wk4zV1RGMTJjcmVhdGVUaHJlYWRFUEZQdlMwX0VTMF9QS2MKIF9fWk4zV1RGMTJkZXRhY2hUaHJl
YWRFagogX19aTjNXVEYxMmlzTWFpblRocmVhZEV2CitfX1pOM1dURjEycmFuZG9tTnVtYmVyRXYK
IF9fWk4zV1RGMTNjdXJyZW50VGhyZWFkRXYKIF9fWk4zV1RGMTN0cnlGYXN0Q2FsbG9jRW1tCiBf
X1pOM1dURjE1VGhyZWFkQ29uZGl0aW9uNHdhaXRFUk5TXzVNdXRleEUKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIHd0Zi9Bc3NlcnRpb25zLmNwcCBcCiAgICAgd3RmL0hhc2hUYWJsZS5jcHAgXAog
ICAgIHd0Zi9NYWluVGhyZWFkLmNwcCBcCisgICAgd3RmL1JhbmRvbU51bWJlci5jcHAgXAogICAg
IHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIFwKICAgICB3dGYvdW5pY29kZS9Db2xsYXRv
ckRlZmF1bHQuY3BwIFwKICAgICB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnNjb25zCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnNjb25zCShyZXZpc2lvbiAzOTMzNSkKKysrIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnNjb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
NiArMTQyLDcgQEAgc291cmNlc1snd3RmJ10gPSBbCiAgICAgJ3d0Zi9Bc3NlcnRpb25zLmNwcCcs
CiAgICAgJ3d0Zi9GYXN0TWFsbG9jLmNwcCcsCiAgICAgJ3d0Zi9IYXNoVGFibGUuY3BwJywKKyAg
ICAnd3RmL1JhbmRvbU51bWJlci5jcHAnLAogICAgICd3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcCcsCiAgICAgJ3d0Zi9kdG9hLmNwcCcsCiBdCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDYgKzE2MCw3
IEBAIFNvdXJjZSBmaWxlcyBmb3IgSlNDb3JlLgogICAgICAgICB3dGYvRmFzdE1hbGxvYy5jcHAK
ICAgICAgICAgd3RmL0hhc2hUYWJsZS5jcHAKICAgICAgICAgd3RmL01haW5UaHJlYWQuY3BwCisg
ICAgICAgIHd0Zi9SYW5kb21OdW1iZXIuY3BwCiAgICAgICAgIHd0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwCiAgICAgICAgIHd0Zi9UQ1N5c3RlbUFsbG9jLmNwcAogICAgICAgICB3dGYvVGhy
ZWFkaW5nTm9uZS5jcHAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksNiArMzU5LDE4IEBACiAJCQk+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KKwkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5cd3RmXFJhbmRvbU51bWJlci5jcHAiDQorCQkJPg0KKwkJPC9GaWxl
Pg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxSYW5kb21OdW1iZXIuaCIN
CisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3Rm
XFJhbmRvbU51bWJlclNlZWQuaCINCisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KIAkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5cd3RmXFJlZkNvdW50ZWQuaCINCiAJCQk+DQogCQk8L0ZpbGU+DQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzOTMzNSkKKysrIEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDkgQEAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAJCTA2RDM1
OEIzMERBQURBQTQwMDNCMTc0RSAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RDM1OEEyMERBQUQ5QzQwMDNCMTc0RSAvKiBN
YWluVGhyZWFkLmNwcCAqLzsgfTsKIAkJMDZEMzU4QjQwREFBREFBQTAwM0IxNzRFIC8qIE1haW5U
aHJlYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNkQzNThBMTBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSAqLzsgfTsKKwkJ
MDg4RkE1QkIwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhGQTVCOTBFRjc2RDQzMDA1NzhF
NkYgLyogUmFuZG9tTnVtYmVyLmNwcCAqLzsgfTsKKwkJMDg4RkE1QkMwRUY3NkQ0MzAwNTc4RTZG
IC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg4RkE1QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTA4RTI3OUU5MEVG
ODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEUyNzlFODBFRjgzQjEwMDA3REI1MjMgLyogUmFu
ZG9tTnVtYmVyU2VlZC5oICovOyB9OwogCQkxNDBCN0QxRDBEQzY5QUY3MDA5QzQyQjggLyogSlNB
Y3RpdmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0REE4MThGMEQ5OUZEMjAwMEIwQTRGQiAvKiBKU0FjdGl2YXRpb24uY3BwICovOyB9Owog
CQkxNDBEMTdENzBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwRDE3RDYwRThBRDRBOTAwMENE
MTdEIC8qIEpTQmFzZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDEyMTEzMTBBNDg3OTREMDA0ODAyNTUgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayAqLzsgfTsKQEAgLTQwOCw2ICs0MTEsOSBAQAogCQkwNkQzNThBMTBEQUFEOUM0MDAzQjE3NEUg
LyogTWFpblRocmVhZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1haW5UaHJlYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2RDM1
OEEyMERBQUQ5QzQwMDNCMTc0RSAvKiBNYWluVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1haW5UaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkQzNThBMzBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWluVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFuZG9tTnVtYmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg4RkE1QkEwRUY3NkQ0MzAwNTc4RTZGIC8q
IFJhbmRvbU51bWJlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5kb21O
dW1iZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhFMjc5RTgwRUY4M0IxMDAw
N0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDBEMTdENjBFOEFENEE5MDAwQ0QxN0QgLyogSlNCYXNlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jhc2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0MTIxMTAyMEE0ODc4MDkwMDQ4MDI1NSAvKiBtaW5pZG9tLmMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IG1pbmlkb20uYzsgcGF0aCA9IHRlc3RzL21pbmlkb20u
Yzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxMjExMEQwQTQ4Nzg4NzAwNDgwMjU1
IC8qIG1pbmlkb20uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBt
aW5pZG9tLmpzOyBwYXRoID0gdGVzdHMvbWluaWRvbS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwODksNiArMTA5NSw5IEBACiAJCQkJOTMwM0Y1NjcwOTkxMThGQTAwQUQ3MUI4
IC8qIE93blB0ci5oICovLAogCQkJCTY1ODBGNzk1MDk0MDcwNTYwMDgyQzIxOSAvKiBQYXNzUmVm
UHRyLmggKi8sCiAJCQkJNjVENkQ4N0UwOUI1QTMyRTAwMDJFNEQ3IC8qIFBsYXRmb3JtLmggKi8s
CisJCQkJMDg4RkE1QjkwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCisJ
CQkJMDg4RkE1QkEwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5oICovLAorCQkJCTA4
RTI3OUU4MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi8sCiAJCQkJMTQx
OUQzMkMwQ0VBN0NERTAwRkY1MDdBIC8qIFJlZkNvdW50ZWQuaCAqLywKIAkJCQk5MDVCMDJBRDBF
Mjg2NDBGMDA2REY4ODIgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJCQk5MEQz
NDY5QjBFMjg1MjgwMDA5NDkyRUUgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCkBAIC0x
NTk4LDYgKzE2MDcsOCBAQAogCQkJCUJDMjU3REY0MEUxRjUzNzQwMDE2QjZDOSAvKiBQcm90b3R5
cGVGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0
IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOURBNEEwRUQyNDVF
QzAwQjg5NjE5IC8qIFF1YW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4OEZBNUJDMEVG
NzZENDMwMDU3OEU2RiAvKiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4RTI3
OUU5MEVGODNCMTAwMDdEQjUyMyAvKiBSYW5kb21OdW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ1NzBFMTZGNUNEMDBCMzQ0NjAgLyogUmVmQ291bnRlZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTBEMzQ2OUMwRTI4NTI4MDAwOTQ5MkVFIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NTgwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZlB0
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjI4LDYgKzE2MzksNyBAQAogCQkJCUJDMThDNTI2MEUx
NkZDQTcwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUJDQ0YwRDA4MEVGMEFBQjkwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MDQxNDgwRUI5MjUwOTAwRkUyNkZBIC8qIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NkIwRTE2RjVD
RDAwQjM0NDYwIC8qIFN5bWJvbFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2QzBF
MTZGNUNEMDBCMzQ0NjAgLyogVENQYWNrZWRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjYw
LDcgKzE2NzIsNiBAQAogCQkJCUJDMThDNDREMEUxNkY1Q0QwMEIzNDQ2MCAvKiBwY3JlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0RTBFMTZGNUNEMDBCMzQ0NjAgLyogcGNyZV9pbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzIwRTE2RjVDRDAwQjM0NDYwIC8qIHVjcGlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0NGMEQwODBFRjBBQUI5MDA0MTNDOEYgLyog
U3RydWN0dXJlU3R1YkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTk4OSwxMSArMjAwMCwxMyBA
QAogCQkJCTk1QUI4MzU2MERBNDNDMzAwMEJDODNGMyAvKiBQcm9maWxlTm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5NUFCODM0MjBEQTQzMjI1MDBCQzgzRjMgLyogUHJvZmlsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM2MTUxNkMwRUJBQzdBMDAwMzEzNzZGIC8qIFByb2ZpbGVyU2Vy
dmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDg4RkE1QkIwRUY3NkQ0MzAwNTc4RTZGIC8qIFJh
bmRvbU51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDVCMDJBRTBFMjg2NDBGMDA2REY4
ODIgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlE
ODg1MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0RFM0I0MzBFNkM4MzJEMDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFp
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3Ry
dWN0dXJlU3R1YkluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFFRTc5M0QwRDZDOUI5MjAw
RkVBM0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1Q0Q0
MUIzMEUxQkY2NTYwMDg1MzU4RSAvKiBUcmVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMUVGNzlBQTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTIwMDYsNyArMjAxOSw2IEBACiAJCQkJOTMwNzU0RDAwOEIwRjc0NjAwQUIzMDU2IC8qIHBjcmVf
dGFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNzAxMzQ4MENBOTdFMEUwMEZBMTREMyAv
KiBwY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0UyNkJENDA4
QjE1MTQxMDBGODUyMjYgLyogcGNyZV94Y2xhc3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkND
RjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAz
OTMzNSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9SYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIxMCwxNSArMjExLDcg
QEAgSlNWYWx1ZSogbWF0aFByb3RvRnVuY1BvdyhFeGVjU3RhdGUqIGV4ZQogCiBKU1ZhbHVlKiBt
YXRoUHJvdG9GdW5jUmFuZG9tKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiwg
Y29uc3QgQXJnTGlzdCYpCiB7Ci0jaWYgIUVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKLSAg
ICBzdGF0aWMgYm9vbCBkaWRJbml0UmFuZG9tOwotICAgIGlmICghZGlkSW5pdFJhbmRvbSkgewot
ICAgICAgICB3dGZfcmFuZG9tX2luaXQoKTsKLSAgICAgICAgZGlkSW5pdFJhbmRvbSA9IHRydWU7
Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgd3RmX3JhbmRvbSgp
KTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgcmFuZG9tTnVtYmVyKCkpOwogfQogCiBKU1Zh
bHVlKiBtYXRoUHJvdG9GdW5jUm91bmQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFs
dWUqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01hdGhF
eHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCShy
ZXZpc2lvbiAzOTMzNSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRl
IDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx0aW1lLmg+CiAKICNpZiBQTEFURk9STShTT0xBUklTKQog
I2luY2x1ZGUgPGllZWVmcC5oPgpAQCAtMTU4LDQxICsxNTcsOCBAQCBpbmxpbmUgZG91YmxlIHd0
Zl9wb3coZG91YmxlIHgsIGRvdWJsZSB5CiAjZGVmaW5lIGZtb2QoeCwgeSkgd3RmX2Ztb2QoeCwg
eSkKICNkZWZpbmUgcG93KHgsIHkpIHd0Zl9wb3coeCwgeSkKIAotI2lmIGRlZmluZWQoX0NSVF9S
QU5EX1MpCi0vLyBJbml0aWFsaXplcyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCi1pbmxp
bmUgdm9pZCB3dGZfcmFuZG9tX2luaXQoKQotewotICAgIC8vIE5vIG5lZWQgdG8gaW5pdGlhbGl6
ZSBmb3IgcmFuZF9zLgotfQotCi0vLyBSZXR1cm5zIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4g
dGhlIHJhbmdlIFswLCAxKS4KLWlubGluZSBkb3VibGUgd3RmX3JhbmRvbSgpCi17Ci0gICAgdW5z
aWduZWQgdTsKLSAgICByYW5kX3MoJnUpOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4odSkgLyAoc3RhdGljX2Nhc3Q8ZG91YmxlPihVSU5UX01BWCkgKyAxLjApOwotfQotI2VuZGlm
IC8vIF9DUlRfUkFORF9TCi0KICNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQogCi0jaWYgIUNPTVBJ
TEVSKE1TVkMpIHx8ICFkZWZpbmVkKF9DUlRfUkFORF9TKQotCi0vLyBJbml0aWFsaXplcyB0aGUg
cmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCi1pbmxpbmUgdm9pZCB3dGZfcmFuZG9tX2luaXQoKQot
ewotICAgIHNyYW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0aW1lKDApKSk7Ci19Ci0KLS8vIFJl
dHVybnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpLgotaW5saW5l
IGRvdWJsZSB3dGZfcmFuZG9tKCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihy
YW5kKCkpIC8gKHN0YXRpY19jYXN0PGRvdWJsZT4oUkFORF9NQVgpICsgMS4wKTsKLX0KLQotI2Vu
ZGlmIC8vICNpZiBDT01QSUxFUihNU1ZDKQotCiBpbmxpbmUgZG91YmxlIGRlZzJyYWQoZG91Ymxl
IGQpICB7IHJldHVybiBkICogcGlEb3VibGUgLyAxODAuMDsgfQogaW5saW5lIGRvdWJsZSByYWQy
ZGVnKGRvdWJsZSByKSAgeyByZXR1cm4gciAqIDE4MC4wIC8gcGlEb3VibGU7IH0KIGlubGluZSBk
b3VibGUgZGVnMmdyYWQoZG91YmxlIGQpIHsgcmV0dXJuIGQgKiA0MDAuMCAvIDM2MC4wOyB9Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvUmFuZG9tTnVtYmVyLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9SYW5kb21OdW1iZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1h
bm4gPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5kb21OdW1iZXIuaCIKKworI2luY2x1ZGUgIlJhbmRv
bU51bWJlclNlZWQuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworZG91YmxlIHJhbmRvbU51bWJlcigpCit7CisjaWYgIUVO
QUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKKyAgICBzdGF0aWMgYm9vbCBzX2luaXRpYWxpemVk
ID0gZmFsc2U7CisgICAgaWYgKCFzX2luaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVS
YW5kb21OdW1iZXJHZW5lcmF0b3IoKTsKKyAgICAgICAgc19pbml0aWFsaXplZCA9IHRydWU7Cisg
ICAgfQorI2VuZGlmCisKKyNpZiBDT01QSUxFUihNU1ZDKSAmJiBkZWZpbmVkKF9DUlRfUkFORF9T
KQorICAgIHVuc2lnbmVkIHU7CisgICAgcmFuZF9zKCZ1KTsKKworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxkb3VibGU+KHUpIC8gKHN0YXRpY19jYXN0PGRvdWJsZT4oVUlOVF9NQVgpICsgMS4wKTsK
KyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4ocmFuZCgpKSAvIChzdGF0aWNf
Y2FzdDxkb3VibGU+KFJBTkRfTUFYKSArIDEuMCk7CisjZW5kaWYKK30KKworfQpJbmRleDogSmF2
YVNjcmlwdENvcmUvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9SYW5kb21OdW1iZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPG5pa29sYXMuemltbWVybWFubkB0
b3JjaG1vYmlsZS5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RGX1JhbmRvbU51bWJlcl9oCisjZGVm
aW5lIFdURl9SYW5kb21OdW1iZXJfaAorCituYW1lc3BhY2UgV1RGIHsKKworICAgIC8vIFJldHVy
bnMgYSBwc2V1ZG8tcmFuZG9tIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsIDEpCisgICAgZG91Ymxl
IHJhbmRvbU51bWJlcigpOworCit9CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1JhbmRvbU51bWJlclNlZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUmFu
ZG9tTnVtYmVyU2VlZC5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1JhbmRv
bU51bWJlclNlZWQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPG5pa29sYXMuemltbWVybWFubkB0b3Jj
aG1vYmlsZS5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RGX1JhbmRvbU51bWJlclNlZWRfaAorI2Rl
ZmluZSBXVEZfUmFuZG9tTnVtYmVyU2VlZF9oCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDx0aW1lLmg+CisKKy8vIEludGVybmFsIEphdmFTY3JpcHRDb3JlIHVzYWdlIG9ubHkKK25h
bWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJh
dG9yKCkKK3sKKyNpZiBQTEFURk9STShEQVJXSU4pCisgICAgc3JhbmRvbWRldigpOworI2VsaWYg
IUNPTVBJTEVSKE1TVkMpIHx8ICFkZWZpbmVkKF9DUlRfUkFORF9TKQorICAgIHNyYW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0aW1lKDApKSk7CisjZW5kaWYKK30KKworfQorCisjZW5kaWYKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdHdGsuY3BwCShyZXZpc2lvbiAzOTMzNSkKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiTWFpblRocmVhZC5o
IgotI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKKyNpbmNsdWRlICJSYW5kb21OdW1iZXJTZWVkLmgi
CiAKICNpbmNsdWRlIDxnbGliLmg+CiAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBpbml0aWFsaXpl
VGhyZWFkaW5nKCkKICAgICBpZiAoIWF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7
CiAgICAgICAgIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4Owog
ICAgICAgICB0aHJlYWRNYXBNdXRleCgpOwotICAgICAgICB3dGZfcmFuZG9tX2luaXQoKTsKKyAg
ICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwogICAgICAgICBtYWluVGhy
ZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKICAgICAgICAgaW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiAjaW5jbHVkZSAi
SGFzaE1hcC5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLSNpbmNsdWRlICJNYXRoRXh0cmFz
LmgiCisjaW5jbHVkZSAiUmFuZG9tTnVtYmVyU2VlZC5oIgogCiAjaW5jbHVkZSA8ZXJybm8uaD4K
ICNpbmNsdWRlIDxzeXMvdGltZS5oPgpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIGluaXRpYWxpemVU
aHJlYWRpbmcoKQogICAgIGlmICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsK
ICAgICAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7CiAg
ICAgICAgIHRocmVhZE1hcE11dGV4KCk7Ci0gICAgICAgIHd0Zl9yYW5kb21faW5pdCgpOworICAg
ICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAjaWYgIVBMQVRGT1JNKERB
UldJTikKICAgICAgICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7CiAj
ZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1F0LmNwcAkocmV2aXNpb24gMzkzMzUp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiTWFpblRo
cmVhZC5oIgotI2luY2x1ZGUgIk1hdGhFeHRyYXMuaCIKKyNpbmNsdWRlICJSYW5kb21OdW1iZXJT
ZWVkLmgiCiAKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFNdXRleD4K
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgIGlmICgh
YXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsKICAgICAgICAgYXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7CiAgICAgICAgIHRocmVhZE1hcE11dGV4
KCk7Ci0gICAgICAgIHd0Zl9yYW5kb21faW5pdCgpOworICAgICAgICBpbml0aWFsaXplUmFuZG9t
TnVtYmVyR2VuZXJhdG9yKCk7CiAgICAgICAgIFFUaHJlYWQqIG1haW5UaHJlYWQgPSBRQ29yZUFw
cGxpY2F0aW9uOjppbnN0YW5jZSgpLT50aHJlYWQoKTsKICAgICAgICAgbWFpblRocmVhZElkZW50
aWZpZXIgPSBpZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKG1haW5UaHJlYWQpOwogICAgICAgICBp
ZiAoIW1haW5UaHJlYWRJZGVudGlmaWVyKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dp
bi5jcHAJKHJldmlzaW9uIDM5MzM1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlIDx3aW5kb3dz
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXJTZWVkLmg+CiAKICNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShQVEhSRUFEUykKIC8vIEN1cnJlbnRseSwgQXBwbGUncyBXaW5kb3dzIHBvcnQgdXNl
cyBhIG1peHR1cmUgb2YgbmF0aXZlIGFuZCBwdGhyZWFkcyBmdW5jdGlvbnMgaW4gRmFzdE1hbGxv
Yy4KQEAgLTEzMyw3ICsxMzQsNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgIGlm
ICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsKICAgICAgICAgYXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7CiAgICAgICAgIHRocmVhZE1hcE11
dGV4KCk7Ci0gICAgICAgIHd0Zl9yYW5kb21faW5pdCgpOworICAgICAgICBpbml0aWFsaXplUmFu
ZG9tTnVtYmVyR2VuZXJhdG9yKCk7CiAgICAgICAgIGluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAg
ICAgICAgIG1haW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOwogICAgICAgICBz
ZXRUaHJlYWROYW1lKG1haW5UaHJlYWRJZGVudGlmaWVyLCAiTWFpbiBUaHJlYWQiKTsKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAzOTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMDgtMTItMTYgIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVy
bWFubkB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIGxlZ2FjeSByYW5kb21OdW1iZXIoKSBmdW5jdGlvbmFsaXR5
IGZyb20gSFRNTEZvcm1FbGVtZW50LCBhbmQgdXNlIHRoZSBuZXcgd3RmL1JhbmRvbU51bWJlci5o
LgorICAgICAgICBBbHNvIHJlbW92ZSBhbiB1bmVlZGVkIFFGaWxlSW5mbyBpbmNsdWRlIHdoaWxl
IEknbSBhdCBpdCAtIHRoZXJlIGlzIG5vIFF0IHVzYWdlIGluIHRoaXMgZmlsZS4KKworICAgICAg
ICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9SYW5kb21OdW1iZXIuaDogQWRkZWQuCisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0VW5pcXVl
Qm91bmRhcnlTdHJpbmcpOgorCiAyMDA4LTEyLTE2IFlhZWwgQWhhcm9uIDx5YWVsLmFoYXJvbkBu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5kZXg6
IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1JhbmRvbU51bWJlci5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUmFuZG9tTnVtYmVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SYW5kb21O
dW1iZXIuaD4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzOTMzNSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwxMCArNDQsOSBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKKyNpbmNsdWRlIDx3dGYvUmFu
ZG9tTnVtYmVyLmg+CiAKLSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRdENvcmUvUUZpbGVJ
bmZvPgotI2VuZGlmCisjaW5jbHVkZSA8bGltaXRzPgogCiAjaWYgUExBVEZPUk0oV1gpCiAjaW5j
bHVkZSA8d3gvZGVmcy5oPgpAQCAtMTk1LDI2ICsxOTQsNiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRF
bmNvZGVkU3RyaW5nKFZlY3RvcjxjCiAgICAgfQogfQogCi0vLyBGSVhNRTogTW92ZSB0byBwbGF0
Zm9ybSBkaXJlY3Rvcnk/Ci1zdGF0aWMgaW50IHJhbmRvbU51bWJlcigpCi17Ci0gICAgc3RhdGlj
IGJvb2wgcmFuZG9tU2VlZGVkID0gZmFsc2U7Ci0KLSNpZiBQTEFURk9STShEQVJXSU4pCi0gICAg
aWYgKCFyYW5kb21TZWVkZWQpIHsKLSAgICAgICAgc3JhbmRvbWRldigpOwotICAgICAgICByYW5k
b21TZWVkZWQgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gcmFuZG9tKCk7Ci0jZWxzZQotICAg
IGlmICghcmFuZG9tU2VlZGVkKSB7Ci0gICAgICAgIHNyYW5kKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0aW1lKDApKSk7Ci0gICAgICAgIHJhbmRvbVNlZWRlZCA9IHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiByYW5kKCk7Ci0jZW5kaWYKLX0KLQogVGV4dEVuY29kaW5nIEhUTUxGb3JtRWxlbWVudDo6
ZGF0YUVuY29kaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXNNYWlsdG9Gb3JtKCkpCkBAIC00MTgs
NyArMzk3LDcgQEAgc3RhdGljIHZvaWQgZ2V0VW5pcXVlQm91bmRhcnlTdHJpbmcoVmVjdAogICAg
IFZlY3RvcjxjaGFyPiByYW5kb21CeXRlczsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsg
KytpKSB7Ci0gICAgICAgIGludCByYW5kb21uZXNzID0gcmFuZG9tTnVtYmVyKCk7CisgICAgICAg
IHVuc2lnbmVkIHJhbmRvbW5lc3MgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tTnVtYmVy
KCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSk7CiAgICAg
ICAgIHJhbmRvbUJ5dGVzLmFwcGVuZChBbHBoYU51bWVyaWNFbmNNYXBbKHJhbmRvbW5lc3MgPj4g
MjQpICYgMHgzRl0pOwogICAgICAgICByYW5kb21CeXRlcy5hcHBlbmQoQWxwaGFOdW1lcmljRW5j
TWFwWyhyYW5kb21uZXNzID4+IDE2KSAmIDB4M0ZdKTsKICAgICAgICAgcmFuZG9tQnl0ZXMuYXBw
ZW5kKEFscGhhTnVtZXJpY0VuY01hcFsocmFuZG9tbmVzcyA+PiA4KSAmIDB4M0ZdKTsK
</data>
<flag name="review"
          id="12282"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>