<?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>55039</bug_id>
          
          <creation_ts>2011-02-23 04:40:52 -0800</creation_ts>
          <short_desc>Add SHA-1 for new WebSocket protocol</short_desc>
          <delta_ts>2011-03-06 19:17:15 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tyoshino</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>356026</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-23 04:40:52 -0800</bug_when>
    <thetext>SHA-1 is required to implement the new WebSocket protocol draft discussed in IETF hybi working group (hybi-05 is the latest draft).
http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-05</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356032</commentid>
    <comment_count>1</comment_count>
      <attachid>83473</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-23 04:58:37 -0800</bug_when>
    <thetext>Created attachment 83473
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356134</commentid>
    <comment_count>2</comment_count>
      <attachid>83473</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-23 09:11:55 -0800</bug_when>
    <thetext>Comment on attachment 83473
Patch v1

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

WebSockets certainly looks like an severely overengineered protocol now.

Does this need to be in WTF, not in WebCore/platform?

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:47
&gt; +static inline void testSHA1() { }

I don&apos;t think that it&apos;s appropriate to put test functions here.

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:81
&gt; +static inline uint32_t f(int t, uint32_t b, uint32_t c, uint32_t d)

Ugh.

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:111
&gt; +SHA1::SHA1()

This is not a good function name.

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:187
&gt; +        uint32_t temp = s(5, a) + f(t, b, c, d) + e + k(t) + w[t];

Ugh. Do these variable names just come from the spec?

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:218
&gt; +} // namesapce WTF

Typo: namesapse. I suggest removing these comments from whole file namespace blocks - they don&apos;t add anything except for visual noise. The only time they can be interesting is when you won&apos;t trust them anyway, and will use an editor feature to check matching braces.

&gt; Source/JavaScriptCore/wtf/SHA1.h:31
&gt; +// Based on Chromium&apos;s portable SHA-1 implementation (src/base/sha1_portable.cc).

This is a good comment to make in ChangeLog, not in source code.

&gt; Source/JavaScriptCore/wtf/SHA1.h:51
&gt; +    void checksum(Vector&lt;uint8_t, 20&gt;&amp;);

Function names should be verbs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356647</commentid>
    <comment_count>3</comment_count>
      <attachid>83473</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-23 20:26:47 -0800</bug_when>
    <thetext>Comment on attachment 83473
Patch v1

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

A bit more context of this patch: WTF::MD5 was introduced based on the same motivation in the past. I looked at structure and method interfaces of WTF::MD5 (testSHA1 function, constructor, addBytes, checksum) and tried to imitate them.

I&apos;m open to moving this under WebCore/platform, but I feel that it&apos;s good to have it in WTF:

* When MD5 was introduced, WebSocketHandshake was the only user. Now Qt uses this library in WebKit/qt/WebCoreSupport/InspectorServerQt.cpp. I expect SHA-1 will also be used in other places like this example.
* Maciej once suggested putting MD5 into WTF (https://lists.webkit.org/pipermail/webkit-dev/2010-April/012576.html). I guess we can do the same...

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:47
&gt;&gt; +static inline void testSHA1() { }
&gt; 
&gt; I don&apos;t think that it&apos;s appropriate to put test functions here.

Darin Adler requested unit-testing MD5 class when he reviewed it:
https://bugs.webkit.org/show_bug.cgi?id=37913#c3
| I know that often we have classes with no testing. But it&apos;s critical we have a unit test for this class somewhere.
| If nothing else, people porting will need to know that this compiled and works properly. It could be as simple as
| having a debug only function that runs the unit test in debug builds the first time the MD5 constructor is called.

Do you have any idea about where to put tests?

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:81
&gt;&gt; +static inline uint32_t f(int t, uint32_t b, uint32_t c, uint32_t d)
&gt; 
&gt; Ugh.

Unfortunately this name is used in RFC3174 (section 5). It&apos;s also hard to give a good name to this function...

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:111
&gt;&gt; +SHA1::SHA1()
&gt; 
&gt; This is not a good function name.

I don&apos;t think of good alternatives; maybe SHA1HashCalculator?

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:187
&gt;&gt; +        uint32_t temp = s(5, a) + f(t, b, c, d) + e + k(t) + w[t];
&gt; 
&gt; Ugh. Do these variable names just come from the spec?

Sadly, yes. In RFC 3174 section 6.1:

  d. For t = 0 to 79 do
     TEMP = S^5(A) + f(t;B,C,D) + E + W(t) + K(t);
     E = D;  D = C;  C = S^30(B);  B = A; A = TEMP;

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:218
&gt;&gt; +} // namesapce WTF
&gt; 
&gt; Typo: namesapse. I suggest removing these comments from whole file namespace blocks - they don&apos;t add anything except for visual noise. The only time they can be interesting is when you won&apos;t trust them anyway, and will use an editor feature to check matching braces.

I sometimes find these comments helpful especally when the block is so long that it doesn&apos;t fit in the screen.

There was the same discussion in webkit-dev in the past (thread starting from https://lists.webkit.org/pipermail/webkit-dev/2010-August/013759.html). Apparently there was no consensus reached, though.

Anyway, I will fix the typo at least.

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.h:31
&gt;&gt; +// Based on Chromium&apos;s portable SHA-1 implementation (src/base/sha1_portable.cc).
&gt; 
&gt; This is a good comment to make in ChangeLog, not in source code.

Will move.

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.h:51
&gt;&gt; +    void checksum(Vector&lt;uint8_t, 20&gt;&amp;);
&gt; 
&gt; Function names should be verbs.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356678</commentid>
    <comment_count>4</comment_count>
      <attachid>83473</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2011-02-23 22:19:18 -0800</bug_when>
    <thetext>Comment on attachment 83473
Patch v1

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

I don&apos;t know about websocket protocol. Sorry if my comments make few sense...

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:105
&gt; +static inline uint32_t s(int n, uint32_t x)

We can call this as rotateLeft or something like this?

&gt; Source/JavaScriptCore/wtf/SHA1.cpp:186
&gt; +    for (int t = 0; t &lt; 80; ++t) {

I guess most implementations split this loop into 4 for-loop for performance. I don&apos;t know if performance is important here though.

&gt; Source/JavaScriptCore/wtf/SHA1.h:60
&gt; +    size_t m_cursor; // Number of bytes filled in m_buffer (0-64).
&gt; +    size_t m_totalBytes; // Number of bytes added so far.

Won&apos;t we need to calculate sha1 of &gt;4GB stream?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356704</commentid>
    <comment_count>5</comment_count>
      <attachid>83473</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-23 23:32:26 -0800</bug_when>
    <thetext>Comment on attachment 83473
Patch v1

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

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:105
&gt;&gt; +static inline uint32_t s(int n, uint32_t x)
&gt; 
&gt; We can call this as rotateLeft or something like this?

Yes, I will rename.

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:186
&gt;&gt; +    for (int t = 0; t &lt; 80; ++t) {
&gt; 
&gt; I guess most implementations split this loop into 4 for-loop for performance. I don&apos;t know if performance is important here though.

Performance is not an important factor at least for WebSocket protocol implementation (a short message will be hashed for each WebSocket handshake). I&apos;d like to keep the code simple for now... I can certainly tune up the implementation when a performance problem comes up.

&gt;&gt; Source/JavaScriptCore/wtf/SHA1.h:60
&gt;&gt; +    size_t m_totalBytes; // Number of bytes added so far.
&gt; 
&gt; Won&apos;t we need to calculate sha1 of &gt;4GB stream?

Will change this line to &quot;uint64_t m_totalBytes&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356880</commentid>
    <comment_count>6</comment_count>
      <attachid>83634</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-24 04:42:03 -0800</bug_when>
    <thetext>Created attachment 83634
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356883</commentid>
    <comment_count>7</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-02-24 04:48:21 -0800</bug_when>
    <thetext>&gt;&gt; Source/JavaScriptCore/wtf/SHA1.cpp:111
&gt;&gt; +SHA1::SHA1()
&gt; 
&gt; This is not a good function name.

I&apos;m still wondering about this. SHA1Calculator? SHA1Builder? I think just &quot;SHA1&quot; makes the most sense, too...

Any suggestions will be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361446</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-03-03 01:54:30 -0800</bug_when>
    <thetext>Could anybody review this patch? Or, could you suggest an appropriate reviewer?

Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362318</commentid>
    <comment_count>9</comment_count>
      <attachid>83634</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-04 00:00:45 -0800</bug_when>
    <thetext>Comment on attachment 83634
Patch v2

I don&apos;t like having tests in SHA1.cpp and they are called by the constructor though I understand it&apos;s same as MD5.
Would you file a bug about the test location of SHA1 and MD5, and add a FIXME comment please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363179</commentid>
    <comment_count>10</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-03-06 19:12:02 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 83634 [details])
&gt; I don&apos;t like having tests in SHA1.cpp and they are called by the constructor though I understand it&apos;s same as MD5.
&gt; Would you file a bug about the test location of SHA1 and MD5, and add a FIXME comment please?

Filed bug 55853. I will add FIXMEs and commit manually. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363180</commentid>
    <comment_count>11</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-03-06 19:17:15 -0800</bug_when>
    <thetext>Committed r80446: &lt;http://trac.webkit.org/changeset/80446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83473</attachid>
            <date>2011-02-23 04:58:37 -0800</date>
            <delta_ts>2011-02-24 04:41:57 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-55039-20110223215835.patch</filename>
            <type>text/plain</type>
            <size>21680</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk0MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVi
YWNiMjkwMTQxNTU1OWVkM2M2Nzg3ZDJhMTEyOGNhYjVjMTE5MmQuLjFiOGMyZWQwZmNmM2IyNjRh
NTZlNjFiNjU0Y2E3NDdjM2VhNDY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMzIEBACisyMDExLTAyLTIzICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBT
SEEtMSBmb3IgbmV3IFdlYlNvY2tldCBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwMzkKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWY6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9X
VEYudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TSEEx
LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnRlc3RTSEExKToKKyAgICAgICAgKFdURjo6ZXhw
ZWN0U0hBMSk6CisgICAgICAgIChXVEY6OmYpOgorICAgICAgICAoV1RGOjprKToKKyAgICAgICAg
KFdURjo6cyk6CisgICAgICAgIChXVEY6OlNIQTE6OlNIQTEpOgorICAgICAgICAoV1RGOjpTSEEx
OjphZGRCeXRlcyk6CisgICAgICAgIChXVEY6OlNIQTE6OmNoZWNrc3VtKToKKyAgICAgICAgKFdU
Rjo6U0hBMTo6ZmluYWxpemUpOgorICAgICAgICAoV1RGOjpTSEExOjpwcm9jZXNzQmxvY2spOgor
ICAgICAgICAoV1RGOjpTSEExOjpyZXNldCk6CisgICAgICAgICogd3RmL1NIQTEuaDogQWRkZWQu
CisgICAgICAgIChXVEY6OlNIQTE6OmFkZEJ5dGVzKToKKyAgICAgICAgKiB3dGYvd3RmLnByaToK
KwogMjAxMS0wMi0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDAyOTkxNjY2ZDIwM2NmNWM0NDgxNzk5ZWJiNGZjYmVhMjZj
ZjYxZTYuLmY5MTk2YzA2ZTA4YzE5ZGQwMjg2MTE0OTQ4NTUxYTBjMjdjOTRlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUwOCw2ICs1MDgsOCBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JldGFpblB0ci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1NIQTEuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NI
QTEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TaW5nbHlMaW5rZWRMaXN0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RhY2tCb3VuZHMuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1N0YWNrQm91bmRzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggMDRmMDBlYzdlOWU4Yzc1MmE4ZmI2MzY5ODcwZGE4NzhhZTc5
ZTc1Ni4uYTQ2MDljMWQ3N2Q1OTUyZGUzYWE1ZTJkOWIwZTE1NzFkOWVlYWZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC00NDIsNiArNDQyLDkgQEAgX19a
TjNXVEYzTUQ1OGFkZEJ5dGVzRVBLaG0KIF9fWk4zV1RGM01ENThjaGVja3N1bUVSTlNfNlZlY3Rv
ckloTG0xNkVFRQogX19aTjNXVEYzTUQ1QzFFdgogX19aTjNXVEY0ZHRvYUVQY2RSYlJpUmoKK19f
Wk4zV1RGNFNIQTE4YWRkQnl0ZXNFUEtobQorX19aTjNXVEY0U0hBMThjaGVja3N1bUVSTlNfNlZl
Y3RvckloTG0yMEVFRQorX19aTjNXVEY0U0hBMUMxRXYKIF9fWk4zV1RGNU11dGV4NGxvY2tFdgog
X19aTjNXVEY1TXV0ZXg2dW5sb2NrRXYKIF9fWk4zV1RGNU11dGV4N3RyeUxvY2tFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCAzZjYwY2EwMDY4YTBiODA3
MzYwZWEwMWY4MDQwZDFjNGJlNTFhYjFmLi5mODAyYWMwYzI1MTQ0MmRlMjllZjU5MzhhNmQ5OGY2
NWQwM2YxNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpA
QCAtNTI2LDYgKzUyNiw4IEBACiAgICAgICAgICAgICAnd3RmL1JldGFpblB0ci5oJywKICAgICAg
ICAgICAgICd3dGYvU2VnbWVudGVkVmVjdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9TZW50aW5l
bExpbmtlZExpc3QuaCcsCisgICAgICAgICAgICAnd3RmL1NIQTEuY3BwJywKKyAgICAgICAgICAg
ICd3dGYvU0hBMS5oJywKICAgICAgICAgICAgICd3dGYvU2luZ2x5TGlua2VkTGlzdC5oJywKICAg
ICAgICAgICAgICd3dGYvU2l6ZUxpbWl0cy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9TdGFja0Jv
dW5kcy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgppbmRleCAwYmI0MTllMTJjZWViNmJhYTA5NDkyMzgzODc2MDU1ZTZkN2I1OWFm
Li40ODg4OTRkYjFjODU5MjU1MTYwMzkyN2FiNTE5YWRiYTIwODJlMTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTgsNiAr
MTgsNyBAQCBFWFBPUlRTCiAgICAgPz8wTXV0ZXhAV1RGQEBRQUVAWFoKICAgICA/PzBSZWZDb3Vu
dGVkTGVha0NvdW50ZXJAV1RGQEBRQUVAUEJEQFoKICAgICA/PzBSZWdFeHBPYmplY3RASlNDQEBR
QUVAUEFWSlNHbG9iYWxPYmplY3RAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpT
Q0BAQFdURkBAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlJlZ0V4cEBKU0NAQEA0QEBaCisgICAgPz8w
U0hBMUBXVEZAQFFBRUBYWgogICAgID8/MFN0cmluZ09iamVjdEBKU0NAQFFBRUBQQVZFeGVjU3Rh
dGVAMUBWPyROb25OdWxsUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUJWVVN0cmlu
Z0AxQEBaCiAgICAgPz8wU3RydWN0dXJlQEpTQ0BAQUFFQFZKU1ZhbHVlQDFAQUJWVHlwZUluZm9A
MUBJUEJVQ2xhc3NJbmZvQDFAQFoKICAgICA/PzBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVAWFoK
QEAgLTQ3LDYgKzQ4LDcgQEAgRVhQT1JUUwogICAgID9hZGRASWRlbnRpZmllckBKU0NAQFNBP0FW
PyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRlQDJAUEJEQFoK
ICAgICA/YWRkQFByb3BlcnR5TmFtZUFycmF5QEpTQ0BAUUFFWFBBVlN0cmluZ0ltcGxAV1RGQEBA
WgogICAgID9hZGRCeXRlc0BNRDVAV1RGQEBRQUVYUEJFSUBaCisgICAgP2FkZEJ5dGVzQFNIQTFA
V1RGQEBRQUVYUEJFSUBaCiAgICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlND
QEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRp
ZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1
cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCiAg
ICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAUUFFSUFCVklk
ZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQFoKQEAgLTc3LDYgKzc5LDcgQEAgRVhQT1JUUwogICAg
ID9jaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NAQENBWFBBVkpTR2xv
YmFsRGF0YUAyQEBaCiAgICAgP2NoZWNrU3ludGF4QEpTQ0BAWUE/QVZDb21wbGV0aW9uQDFAUEFW
RXhlY1N0YXRlQDFAQUJWU291cmNlQ29kZUAxQEBaCiAgICAgP2NoZWNrc3VtQE1ENUBXVEZAQFFB
RVhBQVY/JFZlY3RvckBFJDBCQUBAMkBAWgorICAgID9jaGVja3N1bUBTSEExQFdURkBAUUFFWEFB
Vj8kVmVjdG9yQEUkMEJFQEAyQEBaCiAgICAgP2NsYXNzTmFtZUBKU09iamVjdEBKU0NAQFVCRT9B
VlVTdHJpbmdAMkBYWgogICAgID9jbGVhckBTb3VyY2VQcm92aWRlckNhY2hlQEpTQ0BAUUFFWFha
CiAgICAgP2NvbGxhdGVAQ29sbGF0b3JAV1RGQEBRQkU/QVc0UmVzdWx0QDEyQFBCX1dJMElAWgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9X
VEYvV1RGLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovV1RGL1dURi52Y3Byb2oKaW5kZXggNWY4NTRmOWYxMTE3NDVmNTY5ZjkwMzhjOWE1N2JiMmU2
YmU5NDg1OS4uN2JjNzU5YzQxNDZhY2Q4NDhjMmQ2OGZlNDY3YjM1YWM4Y2NmODYxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RG
LnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCkBAIC04NzcsNiArODc3LDE0IEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJ
PEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFNIQTEuY3BwIgorCQkJPgorCQk8L0Zp
bGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxTSEExLmgiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXFNpbmdseUxpbmtl
ZExpc3QuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyMzdkZGI5MmYwNWQxYTU1M2U3OTE5OTI4NWY0OTE0ODkyNTZkNWJiLi40ZDc5ZTk5NGVkYWMy
ZGQ2MjBhY2IyMTdjNTcxNDVlNzlhZWFhMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjA3LDYgKzIwNyw4IEBACiAJCTY1REZDOTMzMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNo
VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVERkM5MkQwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5jcHAgKi87IH07CiAJCTY1RTFB
M0RGMTIyQjg5NDUwMEIyNjA5NyAvKiBOb25Db3B5aW5nU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMUEyRjQxMjJCODgwRDAwQjI2MDk3IC8q
IE5vbkNvcHlpbmdTb3J0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjVGREU0OUMwQkREMUQ0QTAwRTgwMTExIC8qIEFzc2VydGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVFMjE3QjgwOEU3
RUVDQzAwMjNFNUY2IC8qIEFzc2VydGlvbnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItV25vLW1pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSI7IH07IH07CisJCTc2RkI5RjBG
MTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTc2RkI5RjExMTJF
ODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAqLzsg
fTsKIAkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYz
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0
dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsK
IAkJN0VGRjAwNjQwRUMwNUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUZGMDA2MzBFQzA1QTlBMDBBQTdDOTMg
LyogTm9kZUluZm8uaCAqLzsgfTsKQEAgLTgyMSw2ICs4MjMsOCBAQAogCQk2NUVBNzM2MjBCQUUz
NUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZp
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDRGRDM1MzA1Njk3RTZEMDAzREJF
RDkgLyogQm9vbGVhbk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb29sZWFuT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKKwkJNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU0hBMS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTSEExLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0UyQzZDOTgwRDMxQzZCNjAwMkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlQ2hhaW5NYXJrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNEVFNzA4MEVCQjc5NjMwMDU5MzRBQSAvKiBT
dHJ1Y3R1cmVDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1
cmVDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTRFRTcwRTBFQkI3QTVC
MDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTU4MSw2ICsxNTg1LDggQEAKIAkJCQkxNDhBMUVDRDBEMTBDMjNCMDA2OUE0N0MgLyog
UmVmUHRySGFzaE1hcC5oICovLAogCQkJCTUxRjY0OEQ2MEJCNEUyQ0EwMDMzRDc2MCAvKiBSZXRh
aW5QdHIuaCAqLywKIAkJCQk5NjlBMDcyOTBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVj
dG9yLmggKi8sCisJCQkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICovLAor
CQkJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEExLmggKi8sCiAJCQkJMEJGMjhBMjgx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovLAogCQkJCTg2RDg3REE1MTJCQzRC
MTQwMDhFNzNBMSAvKiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJODZEODdEQTYxMkJDNEIxNDAw
OEU3M0ExIC8qIFN0YWNrQm91bmRzLmggKi8sCkBAIC0yMzI5LDYgKzIzMzUsNyBAQAogCQkJCTE0
MjlEODg2MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDNDYxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTY29wZUNoYWluLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NjlBMDcyQzBFRDFDRTY5MDBGMUY2ODEgLyogU2VnbWVudGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3NkZCOUYwRjEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTMzMDQwMDQwRTZBNzQ5NDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjQwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZUNv
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDYzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBTb3Vy
Y2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODM5LDYgKzI4NDYsNyBAQAogCQkJCTg2
Qjk5QUI4MTE3RTM5MUUwMERGNUE5MCAvKiBSb3BlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0NDY5REVBMTA3RUM3RTcwMDY1MDQ0NiAvKiBTY29wZUNoYWluLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTc2RkI5RjExMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA0MDJDMEU2QTc2NDAwMDc4NkU2QSAvKiBTbWFsbFN0
cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEODdEQUUxMkJDQTdEMTAwOEU3M0ExIC8q
IFN0YWNrQm91bmRzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
Q01ha2VMaXN0cy50eHQKaW5kZXggZjg1YmYwMjA3NGNlZjdmNTM3MzY5ZTQwOGZmNDFiNjUxNjM3
NWU5NC4uYjFjYTUyZjQwMmEyYmY4MjMxOGFhMDg3OGFlZWNkNGZmMmU1MGUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02NCw2ICs2NCw3IEBAIFNFVChX
VEZfSEVBREVSUwogICAgIFJlZlB0ckhhc2hNYXAuaAogICAgIFJldGFpblB0ci5oCiAgICAgU2Vn
bWVudGVkVmVjdG9yLmgKKyAgICBTSEExLmgKICAgICBTdGFja0JvdW5kcy5oCiAgICAgU3RhdGlj
Q29uc3RydWN0b3JzLmgKICAgICBTdGRMaWJFeHRyYXMuaApAQCAtMTE1LDYgKzExNiw3IEBAIFNF
VChXVEZfU09VUkNFUwogICAgIE9TUmFuZG9tU291cmNlLmNwcAogICAgIFJhbmRvbU51bWJlci5j
cHAKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCisgICAgU0hBMS5jcHAKICAgICBTdGFj
a0JvdW5kcy5jcHAKICAgICBTdHJpbmdFeHRyYXMuY3BwCiAgICAgVGhyZWFkaW5nLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TSEExLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU0hBMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZlM2EzYTU0NmI1M2JlODE1NjZk
YTY3YjgyZjY5MWEwNTdiZDIzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU0hBMS5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBBIHN0cmFpZ2h0Zm9yd2FyZCBT
SEEtMSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBSRkMgMzE3NC4KKy8vIGh0dHA6Ly93d3cuaWV0
Zi5vcmcvcmZjL3JmYzMxNzQudHh0CisvLyBUaGUgbmFtZXMgb2YgZnVuY3Rpb25zIGFuZCB2YXJp
YWJsZXMgKHN1Y2ggYXMgImEiLCAiYiIsIGFuZCAiZiIpIGZvbGxvdyBub3RhdGlvbnMgaW4gUkZD
IDMxNzQuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTSEExLmgiCisKKyNpbmNs
dWRlICJBc3NlcnRpb25zLmgiCisjaWZuZGVmIE5ERUJVRworI2luY2x1ZGUgIlN0cmluZ0V4dHJh
cy5oIgorI2luY2x1ZGUgInRleHQvQ1N0cmluZy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYg
eworCisjaWZkZWYgTkRFQlVHCitzdGF0aWMgaW5saW5lIHZvaWQgdGVzdFNIQTEoKSB7IH0KKyNl
bHNlCitzdGF0aWMgYm9vbCBpc1Rlc3RTSEExRG9uZTsKKworc3RhdGljIHZvaWQgZXhwZWN0U0hB
MShDU3RyaW5nIGlucHV0LCBpbnQgcmVwZWF0LCBDU3RyaW5nIGV4cGVjdGVkKQoreworICAgIFNI
QTEgc2hhMTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdDsgKytpKQorICAgICAgICBz
aGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0LmRhdGEo
KSksIGlucHV0Lmxlbmd0aCgpKTsKKyAgICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKKyAg
ICBzaGExLmNoZWNrc3VtKGRpZ2VzdCk7CisgICAgY2hhciogYnVmZmVyID0gMDsKKyAgICBDU3Ry
aW5nIGFjdHVhbCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoNDAsIGJ1ZmZlcik7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgKytpKSB7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZl
ciwgMywgIiUwMlgiLCBkaWdlc3QuYXQoaSkpOworICAgICAgICBidWZmZXIgKz0gMjsKKyAgICB9
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShhY3R1YWwgPT0gZXhwZWN0ZWQsICJpbnB1dDogJXMs
IHJlcGVhdDogJWQsIGFjdHVhbDogJXMsIGV4cGVjdGVkOiAlcyIsIGlucHV0LmRhdGEoKSwgcmVw
ZWF0LCBhY3R1YWwuZGF0YSgpLCBleHBlY3RlZC5kYXRhKCkpOworfQorCitzdGF0aWMgdm9pZCB0
ZXN0U0hBMSgpCit7CisgICAgaWYgKGlzVGVzdFNIQTFEb25lKQorICAgICAgICByZXR1cm47Cisg
ICAgaXNUZXN0U0hBMURvbmUgPSB0cnVlOworCisgICAgLy8gRXhhbXBsZXMgdGFrZW4gZnJvbSBz
YW1wbGUgY29kZSBpbiBSRkMgMzE3NC4KKyAgICBleHBlY3RTSEExKCJhYmMiLCAxLCAiQTk5OTNF
MzY0NzA2ODE2QUJBM0UyNTcxNzg1MEMyNkM5Q0QwRDg5RCIpOworICAgIGV4cGVjdFNIQTEoImFi
Y2RiY2RlY2RlZmRlZmdlZmdoZmdoaWdoaWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIiwg
MSwgIjg0OTgzRTQ0MUMzQkQyNkVCQUFFNEFBMUY5NTEyOUU1RTU0NjcwRjEiKTsKKyAgICBleHBl
Y3RTSEExKCJhIiwgMTAwMDAwMCwgIjM0QUE5NzNDRDRDNERBQTRGNjFFRUIyQkRCQUQyNzMxNjUz
NDAxNkYiKTsKKyAgICBleHBlY3RTSEExKCIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2
NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3IiwgMTAsICJERUEzNTZBMkNEREQ5MEM3
QTdFQ0VEQzVFQkI1NjM5MzRGNDYwNDUyIik7Cit9CisjZW5kaWYKKworc3RhdGljIGlubGluZSB1
aW50MzJfdCBmKGludCB0LCB1aW50MzJfdCBiLCB1aW50MzJfdCBjLCB1aW50MzJfdCBkKQorewor
ICAgIEFTU0VSVCh0ID49IDAgJiYgdCA8IDgwKTsKKyAgICBpZiAodCA8IDIwKQorICAgICAgICBy
ZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZCk7CisgICAgaWYgKHQgPCA0MCkKKyAgICAgICAgcmV0
dXJuIGIgXiBjIF4gZDsKKyAgICBpZiAodCA8IDYwKQorICAgICAgICByZXR1cm4gKGIgJiBjKSB8
IChiICYgZCkgfCAoYyAmIGQpOworICAgIHJldHVybiBiIF4gYyBeIGQ7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdWludDMyX3QgayhpbnQgdCkKK3sKKyAgICBBU1NFUlQodCA+PSAwICYmIHQgPCA4MCk7
CisgICAgaWYgKHQgPCAyMCkKKyAgICAgICAgcmV0dXJuIDB4NWE4Mjc5OTk7CisgICAgaWYgKHQg
PCA0MCkKKyAgICAgICAgcmV0dXJuIDB4NmVkOWViYTE7CisgICAgaWYgKHQgPCA2MCkKKyAgICAg
ICAgcmV0dXJuIDB4OGYxYmJjZGM7CisgICAgcmV0dXJuIDB4Y2E2MmMxZDY7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdWludDMyX3QgcyhpbnQgbiwgdWludDMyX3QgeCkKK3sKKyAgICBBU1NFUlQobiA+
PSAwICYmIG4gPCAzMik7CisgICAgcmV0dXJuICh4IDw8IG4pIHwgKHggPj4gKDMyIC0gbikpOwor
fQorCitTSEExOjpTSEExKCkKK3sKKyAgICB0ZXN0U0hBMSgpOworICAgIHJlc2V0KCk7Cit9CisK
K3ZvaWQgU0hBMTo6YWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgd2hpbGUgKGxlbmd0aC0tKSB7CisgICAgICAgIEFTU0VSVChtX2N1cnNvciA8IDY0
KTsKKyAgICAgICAgbV9idWZmZXJbbV9jdXJzb3IrK10gPSAqaW5wdXQrKzsKKyAgICAgICAgKytt
X3RvdGFsQnl0ZXM7CisgICAgICAgIGlmIChtX2N1cnNvciA9PSA2NCkKKyAgICAgICAgICAgIHBy
b2Nlc3NCbG9jaygpOworICAgIH0KK30KKwordm9pZCBTSEExOjpjaGVja3N1bShWZWN0b3I8dWlu
dDhfdCwgMjA+JiBkaWdlc3QpCit7CisgICAgZmluYWxpemUoKTsKKworICAgIGRpZ2VzdC5jbGVh
cigpOworICAgIGRpZ2VzdC5yZXNpemUoMjApOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
NTsgKytpKSB7CisgICAgICAgIC8vIFRyZWF0IGhhc2hWYWx1ZSBhcyBhIGJpZy1lbmRpYW4gdmFs
dWUuCisgICAgICAgIHVpbnQzMl90IGhhc2hWYWx1ZSA9IG1faGFzaFtpXTsKKyAgICAgICAgZm9y
IChpbnQgaiA9IDA7IGogPCA0OyArK2opIHsKKyAgICAgICAgICAgIGRpZ2VzdFs0ICogaSArICgz
IC0gaildID0gaGFzaFZhbHVlICYgMHhGRjsKKyAgICAgICAgICAgIGhhc2hWYWx1ZSA+Pj0gODsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgU0hBMTo6ZmluYWxp
emUoKQoreworICAgIEFTU0VSVChtX2N1cnNvciA8IDY0KTsKKyAgICBtX2J1ZmZlclttX2N1cnNv
cisrXSA9IDB4ODA7CisgICAgaWYgKG1fY3Vyc29yID4gNTYpIHsKKyAgICAgICAgLy8gUGFkIG91
dCB0byBuZXh0IGJsb2NrLgorICAgICAgICB3aGlsZSAobV9jdXJzb3IgPCA2NCkKKyAgICAgICAg
ICAgIG1fYnVmZmVyW21fY3Vyc29yKytdID0gMHgwMDsKKyAgICAgICAgcHJvY2Vzc0Jsb2NrKCk7
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IG1fY3Vyc29yOyBpIDwgNTY7ICsraSkKKyAg
ICAgICAgbV9idWZmZXJbaV0gPSAweDAwOworCisgICAgLy8gV3JpdGUgdGhlIGxlbmd0aCBhcyBh
IGJpZy1lbmRpYW4gNjQtYml0IHZhbHVlLgorICAgIHVpbnQ2NF90IGJpdHMgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4obV90b3RhbEJ5dGVzKSAqIDg7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4
OyArK2kpIHsKKyAgICAgICAgbV9idWZmZXJbNTYgKyAoNyAtIGkpXSA9IGJpdHMgJiAweEZGOwor
ICAgICAgICBiaXRzID4+PSA4OworICAgIH0KKyAgICBtX2N1cnNvciA9IDY0OworICAgIHByb2Nl
c3NCbG9jaygpOworfQorCit2b2lkIFNIQTE6OnByb2Nlc3NCbG9jaygpCit7CisgICAgQVNTRVJU
KG1fY3Vyc29yID09IDY0KTsKKworICAgIHVpbnQzMl90IHdbODBdID0geyAwIH07CisgICAgZm9y
IChpbnQgdCA9IDA7IHQgPCAxNjsgKyt0KQorICAgICAgICB3W3RdID0gKG1fYnVmZmVyW3QgKiA0
XSA8PCAyNCkgfCAobV9idWZmZXJbdCAqIDQgKyAxXSA8PCAxNikgfCAobV9idWZmZXJbdCAqIDQg
KyAyXSA8PCA4KSB8IG1fYnVmZmVyW3QgKiA0ICsgM107CisgICAgZm9yIChpbnQgdCA9IDE2OyB0
IDwgODA7ICsrdCkKKyAgICAgICAgd1t0XSA9IHMoMSwgd1t0IC0gM10gXiB3W3QgLSA4XSBeIHdb
dCAtIDE0XSBeIHdbdCAtIDE2XSk7CisKKyAgICB1aW50MzJfdCBhID0gbV9oYXNoWzBdOworICAg
IHVpbnQzMl90IGIgPSBtX2hhc2hbMV07CisgICAgdWludDMyX3QgYyA9IG1faGFzaFsyXTsKKyAg
ICB1aW50MzJfdCBkID0gbV9oYXNoWzNdOworICAgIHVpbnQzMl90IGUgPSBtX2hhc2hbNF07CisK
KyAgICBmb3IgKGludCB0ID0gMDsgdCA8IDgwOyArK3QpIHsKKyAgICAgICAgdWludDMyX3QgdGVt
cCA9IHMoNSwgYSkgKyBmKHQsIGIsIGMsIGQpICsgZSArIGsodCkgKyB3W3RdOworICAgICAgICBl
ID0gZDsKKyAgICAgICAgZCA9IGM7CisgICAgICAgIGMgPSBzKDMwLCBiKTsKKyAgICAgICAgYiA9
IGE7CisgICAgICAgIGEgPSB0ZW1wOworICAgIH0KKworICAgIG1faGFzaFswXSArPSBhOworICAg
IG1faGFzaFsxXSArPSBiOworICAgIG1faGFzaFsyXSArPSBjOworICAgIG1faGFzaFszXSArPSBk
OworICAgIG1faGFzaFs0XSArPSBlOworCisgICAgbV9jdXJzb3IgPSAwOworfQorCit2b2lkIFNI
QTE6OnJlc2V0KCkKK3sKKyAgICBtX2N1cnNvciA9IDA7CisgICAgbV90b3RhbEJ5dGVzID0gMDsK
KyAgICBtX2hhc2hbMF0gPSAweDY3NDUyMzAxOworICAgIG1faGFzaFsxXSA9IDB4ZWZjZGFiODk7
CisgICAgbV9oYXNoWzJdID0gMHg5OGJhZGNmZTsKKyAgICBtX2hhc2hbM10gPSAweDEwMzI1NDc2
OworICAgIG1faGFzaFs0XSA9IDB4YzNkMmUxZjA7CisKKyAgICAvLyBDbGVhciB0aGUgYnVmZmVy
IGFmdGVyIHVzZSBpbiBjYXNlIGl0J3Mgc2Vuc2l0aXZlLgorICAgIG1lbXNldChtX2J1ZmZlciwg
MCwgc2l6ZW9mKG1fYnVmZmVyKSk7Cit9CisKK30gLy8gbmFtZXNhcGNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TSEExLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NIQTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2M5YjEyM2I5YTQxMjFlOWZjOWFhNDcyOTViODk2
NmZlNWM5M2VlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
SEExLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIEJhc2VkIG9uIENocm9taXVtJ3MgcG9ydGFibGUgU0hB
LTEgaW1wbGVtZW50YXRpb24gKHNyYy9iYXNlL3NoYTFfcG9ydGFibGUuY2MpLgorCisjaWZuZGVm
IFdURl9TSEExX2gKKyNkZWZpbmUgV1RGX1NIQTFfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU0hBMSB7CitwdWJsaWM6CisgICAgU0hBMSgp
OworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQorICAg
IHsKKyAgICAgICAgYWRkQnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOworICAgIH0K
KyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsK
KworICAgIC8vIGNoZWNrc3VtIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3Rh
dGUgb2YgdGhlIG9iamVjdC4KKyAgICB2b2lkIGNoZWNrc3VtKFZlY3Rvcjx1aW50OF90LCAyMD4m
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmFsaXplKCk7CisgICAgdm9pZCBwcm9jZXNzQmxv
Y2soKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB1aW50OF90IG1fYnVmZmVyWzY0XTsKKyAg
ICBzaXplX3QgbV9jdXJzb3I7IC8vIE51bWJlciBvZiBieXRlcyBmaWxsZWQgaW4gbV9idWZmZXIg
KDAtNjQpLgorICAgIHNpemVfdCBtX3RvdGFsQnl0ZXM7IC8vIE51bWJlciBvZiBieXRlcyBhZGRl
ZCBzbyBmYXIuCisgICAgdWludDMyX3QgbV9oYXNoWzVdOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK3VzaW5nIFdURjo6U0hBMTsKKworI2VuZGlmIC8vIFdURl9TSEExX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvd3RmLnByaQppbmRleCAzYmUzYjVmYzRlOGRiZWM4MmRlZWEwZDZlZjEzZjRjMGFm
N2UxYjBmLi41ZjE1ZWIwNGM4MWEwYzRlMzI3YTljY2M0NWFlMWNmNDY0ZmRkZTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi93dGYucHJpCkBAIC0yMyw2ICsyMyw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IHd0Zi9QYWdlQmxvY2suY3BwIFwKICAgICB3dGYvUmFuZG9tTnVtYmVyLmNwcCBcCiAgICAgd3Rm
L1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAorICAgIHd0Zi9TSEExLmNwcCBcCiAgICAgd3Rm
L1N0YWNrQm91bmRzLmNwcCBcCiAgICAgd3RmL1RDU3lzdGVtQWxsb2MuY3BwIFwKICAgICB3dGYv
VGhyZWFkaW5nTm9uZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJlNjlmMjU4MzU5MDVkNzg4NGM5YWZk
MTg0ZGUwZWVhNzFjNGI4YWEuLjVhZWY1NjNlZmQzNjY3ZDI4YTQzOTdlNDAwNGUzN2VjNTc2YTg5
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wMi0yMyAgWXV0YSBLaXRhbXVy
YSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgU0hBLTEgZm9yIG5ldyBXZWJTb2NrZXQgcHJvdG9jb2wKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MDM5CisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU0hBMS5oOiBBZGRlZC4KKwogMjAxMS0wMi0y
MSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvU0hBMS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1NIQTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmI0OGIyNDBjODFkYjk1NTQ0MWFmN2FhMDJm
M2NhN2Q1Mzc5MWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL1NIQTEuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0Rf
U0hBMV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1NIQTFfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NIQTEuaD4KKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83634</attachid>
            <date>2011-02-24 04:42:03 -0800</date>
            <delta_ts>2011-03-04 00:00:45 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-55039-20110224214201.patch</filename>
            <type>text/plain</type>
            <size>22013</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk1NDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEx
NzcwM2YwNWI3ZDQ4YmIzNDljZjhiYWU5NTY2NmM3NGVjN2Q0NzQuLjllYjllZjA4MmRkNDY3ZTI2
Y2NiNDYyN2ExM2RiMjk1NGRhNmI2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM5IEBACisyMDExLTAyLTI0ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBT
SEEtMSBmb3IgbmV3IFdlYlNvY2tldCBwcm90b2NvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwMzkKKworICAgICAgICBUaGUgY29kZSBpcyBiYXNl
ZCBvbiBDaHJvbWl1bSdzIHBvcnRhYmxlIFNIQS0xIGltcGxlbWVudGF0aW9uCisgICAgICAgIChz
cmMvYmFzZS9zaGExX3BvcnRhYmxlLmNjKS4gTW9kaWZpY2F0aW9ucyB3ZXJlIG1hZGUgaW4gb3Jk
ZXIKKyAgICAgICAgdG8gbWFrZSB0aGUgY29kZSBjb21wbHkgd2l0aCBXZWJLaXQgY29kaW5nIHN0
eWxlLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1NIQTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6dGVzdFNIQTEpOiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcnVuIHRoZSBmaXJzdCB0aW1lIFNI
QTEKKyAgICAgICAgY29uc3RydWN0b3IgaXMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVz
IGEgZmV3IGhhc2ggdmFsdWVzCisgICAgICAgIGFuZCBjaGVja3MgdGhlIHJlc3VsdHMgaW4gZGVi
dWcgYnVpbGRzLgorICAgICAgICAoV1RGOjpleHBlY3RTSEExKToKKyAgICAgICAgKFdURjo6Zik6
CisgICAgICAgIChXVEY6OmspOgorICAgICAgICAoV1RGOjpyb3RhdGVMZWZ0KToKKyAgICAgICAg
KFdURjo6U0hBMTo6U0hBMSk6CisgICAgICAgIChXVEY6OlNIQTE6OmFkZEJ5dGVzKToKKyAgICAg
ICAgKFdURjo6U0hBMTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAoV1RGOjpTSEExOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXVEY6OlNIQTE6OnByb2Nlc3NCbG9jayk6CisgICAgICAgIChXVEY6OlNI
QTE6OnJlc2V0KToKKyAgICAgICAgKiB3dGYvU0hBMS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
U0hBMTo6YWRkQnl0ZXMpOgorICAgICAgICAqIHd0Zi93dGYucHJpOgorCiAyMDExLTAyLTI0ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDFhZmI5NmNhNDlm
NTUzOTY4MjQ2MTdhNzFjMzFhYjYyNjlmNzc3Y2IuLmM2NTcwYWIxN2E2ZjY5ZTM2NWY4MDZjZDA0
MzU0ZDllMTRlYWY2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUw
OSw2ICs1MDksOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1JldGFpblB0ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEuY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TaW5nbHlMaW5rZWRMaXN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RhY2tC
b3VuZHMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0YWNrQm91bmRzLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggNzNkMTE5YjYwMDdi
MWY0OGQxZWNjYjJmZTJlODEzZTIyNDAxYjdkNC4uYWY2NDMzNzI5NTc5ZjY0YTM4OGU3NDA1MjRj
ZTU0YjMzNjllMWE1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC00NDEsNiArNDQxLDkgQEAgX19aTjNXVEYzTUQ1OGFkZEJ5dGVzRVBLaG0KIF9fWk4zV1RG
M01ENThjaGVja3N1bUVSTlNfNlZlY3RvckloTG0xNkVFRQogX19aTjNXVEYzTUQ1QzFFdgogX19a
TjNXVEY0ZHRvYUVQY2RSYlJpUmoKK19fWk4zV1RGNFNIQTExMWNvbXB1dGVIYXNoRVJOU182VmVj
dG9ySWhMbTIwRUVFCitfX1pOM1dURjRTSEExOGFkZEJ5dGVzRVBLaG0KK19fWk4zV1RGNFNIQTFD
MUV2CiBfX1pOM1dURjVNdXRleDRsb2NrRXYKIF9fWk4zV1RGNU11dGV4NnVubG9ja0V2CiBfX1pO
M1dURjVNdXRleDd0cnlMb2NrRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5neXBpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkKaW5kZXggNzYwN2QzNTcxODE5YTY3NDE1NDUzNjEwZGY3ZTVmMDBiMzU2ZGRhNy4uOWIz
ZDg2MDNjNTU2ODdkZGY0NjgwMjQ5MGI1OGZmYTg5NmE5OGRmZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKQEAgLTUyNyw2ICs1MjcsOCBAQAogICAgICAgICAg
ICAgJ3d0Zi9SZXRhaW5QdHIuaCcsCiAgICAgICAgICAgICAnd3RmL1NlZ21lbnRlZFZlY3Rvci5o
JywKICAgICAgICAgICAgICd3dGYvU2VudGluZWxMaW5rZWRMaXN0LmgnLAorICAgICAgICAgICAg
J3d0Zi9TSEExLmNwcCcsCisgICAgICAgICAgICAnd3RmL1NIQTEuaCcsCiAgICAgICAgICAgICAn
d3RmL1NpbmdseUxpbmtlZExpc3QuaCcsCiAgICAgICAgICAgICAnd3RmL1NpemVMaW1pdHMuY3Bw
JywKICAgICAgICAgICAgICd3dGYvU3RhY2tCb3VuZHMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggMGJiNDE5ZTEyY2Vl
YjZiYWEwOTQ5MjM4Mzg3NjA1NWU2ZDdiNTlhZi4uMWMwZTE0NzNiNWNkMWNlOTg1ZDEzYTAyYmI5
YjhjNjlmYmE3OWY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYKQEAgLTE4LDYgKzE4LDcgQEAgRVhQT1JUUwogICAgID8/ME11dGV4
QFdURkBAUUFFQFhaCiAgICAgPz8wUmVmQ291bnRlZExlYWtDb3VudGVyQFdURkBAUUFFQFBCREBa
CiAgICAgPz8wUmVnRXhwT2JqZWN0QEpTQ0BAUUFFQFBBVkpTR2xvYmFsT2JqZWN0QDFAVj8kTm9u
TnVsbFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQFY/JE5vbk51bGxQYXNzUmVmUHRy
QFZSZWdFeHBASlNDQEBANEBAWgorICAgID8/MFNIQTFAV1RGQEBRQUVAWFoKICAgICA/PzBTdHJp
bmdPYmplY3RASlNDQEBRQUVAUEFWRXhlY1N0YXRlQDFAVj8kTm9uTnVsbFBhc3NSZWZQdHJAVlN0
cnVjdHVyZUBKU0NAQEBXVEZAQEFCVlVTdHJpbmdAMUBAWgogICAgID8/MFN0cnVjdHVyZUBKU0NA
QEFBRUBWSlNWYWx1ZUAxQEFCVlR5cGVJbmZvQDFASVBCVUNsYXNzSW5mb0AxQEBaCiAgICAgPz8w
VGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFQFhaCkBAIC00Nyw2ICs0OCw3IEBAIEVYUE9SVFMKICAg
ICA/YWRkQElkZW50aWZpZXJASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZA
QEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBCREBaCiAgICAgP2FkZEBQcm9wZXJ0eU5hbWVBcnJheUBK
U0NAQFFBRVhQQVZTdHJpbmdJbXBsQFdURkBAQFoKICAgICA/YWRkQnl0ZXNATUQ1QFdURkBAUUFF
WFBCRUlAWgorICAgID9hZGRCeXRlc0BTSEExQFdURkBAUUFFWFBCRUlAWgogICAgID9hZGRQcm9w
ZXJ0eVRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVy
ZUBKU0NAQEBXVEZAQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQUFJQFoKICAg
ICA/YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUBTdHJ1Y3R1cmVASlND
QEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRp
ZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUlBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCkBA
IC04MSw2ICs4Myw3IEBAIEVYUE9SVFMKICAgICA/Y2xlYXJAU291cmNlUHJvdmlkZXJDYWNoZUBK
U0NAQFFBRVhYWgogICAgID9jb2xsYXRlQENvbGxhdG9yQFdURkBAUUJFP0FXNFJlc3VsdEAxMkBQ
Ql9XSTBJQFoKICAgICA/Y29sbGVjdEFsbEdhcmJhZ2VASGVhcEBKU0NAQFFBRVhYWgorICAgID9j
b21wdXRlSGFzaEBTSEExQFdURkBAUUFFWEFBVj8kVmVjdG9yQEUkMEJFQEAyQEBaCiAgICAgP2Nv
bmZpZ3VyYWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP2NvbnN0cnVj
dEBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBWSlNWYWx1ZUAxQFc0Q29uc3Ry
dWN0VHlwZUAxQEFCVENvbnN0cnVjdERhdGFAMUBBQlZBcmdMaXN0QDFAQFoKICAgICA/Y29uc3Ry
dWN0QXJyYXlASlNDQEBZQVBBVkpTQXJyYXlAMUBQQVZFeGVjU3RhdGVAMUBBQlZBcmdMaXN0QDFA
QFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovV1RGL1dURi52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL1dURi9XVEYudmNwcm9qCmluZGV4IGQwZTZiYTgxNDdkMjFlY2JlNTQzMzZhZTY4YTA2
ZGM2MzAxNTU5NTguLjhmMGNmY2JjY2M0YmQxMzM5MmNmMGRmM2I5NWM1YmUzMjQyYmRjZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RG
L1dURi52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9XVEYvV1RGLnZjcHJvagpAQCAtODgxLDYgKzg4MSwxNCBAQAogCQkJPgogCQk8L0ZpbGU+
CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxTSEExLmNwcCIKKwkJCT4KKwkJ
PC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcU0hBMS5oIgorCQkJ
PgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxTaW5nbHlM
aW5rZWRMaXN0LmgiCiAJCQk+CiAJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMzkzNWYyYzY0ZmQ3NWUxMGYxMTM2MzEyM2ZlMjJlODcyNjk1NjE4Ni4uMTRlNWIxYjk3
NjU1ODUzMzUzMGY2MzM5YmU4NGIyMjMwYTZiMmQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwOCw2ICsyMDgsOCBAQAogCQk2NURGQzkzMzA4RUExNzNBMDBGNzMwMEIgLyog
SGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1REZDOTJEMDhFQTE3M0EwMEY3MzAwQiAvKiBIYXNoVGFibGUuY3BwICovOyB9OwogCQk2
NUUxQTNERjEyMkI4OTQ1MDBCMjYwOTcgLyogTm9uQ29weWluZ1NvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5
NyAvKiBOb25Db3B5aW5nU29ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1RkRFNDlDMEJERDFENEEwMEU4MDExMSAvKiBBc3NlcnRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTIxN0I4
MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby1taXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUiOyB9OyB9OworCQk3NkZC
OUYwRjEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzZGQjlGMEUxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3NkZCOUYx
MTEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NkZCOUYxMDEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAg
Ki87IH07CiAJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJC
Nzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFNEVFNzBFMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi87
IH07CiAJCTdFRkYwMDY0MEVDMDVBOUEwMEFBN0M5MyAvKiBOb2RlSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VGRjAwNjMwRUMwNUE5QTAwQUE3
QzkzIC8qIE5vZGVJbmZvLmggKi87IH07CkBAIC04MjMsNiArODI1LDggQEAKIAkJNjVFQTczNjIw
QkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVu
dGlmaWVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRp
ZmllcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CisJCTc2RkI5RjBFMTJFODUxODYwMDUxQTJFQiAvKiBTSEEx
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNIQTEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzZGQjlGMTAxMkU4NTE5NjAwNTFBMkVCIC8qIFNIQTEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU0hBMS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdFMkM2Qzk4MEQzMUM2QjYwMDJENDRFMiAvKiBTY29wZUNoYWlu
TWFyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZUNoYWluTWFyay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
dWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJC
N0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODQsNiArMTU4OCw4IEBACiAJCQkJMTQ4QTFFQ0QwRDEwQzIzQjAwNjlBNDdD
IC8qIFJlZlB0ckhhc2hNYXAuaCAqLywKIAkJCQk1MUY2NDhENjBCQjRFMkNBMDAzM0Q3NjAgLyog
UmV0YWluUHRyLmggKi8sCiAJCQkJOTY5QTA3MjkwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRl
ZFZlY3Rvci5oICovLAorCQkJCTc2RkI5RjEwMTJFODUxOTYwMDUxQTJFQiAvKiBTSEExLmNwcCAq
LywKKwkJCQk3NkZCOUYwRTEyRTg1MTg2MDA1MUEyRUIgLyogU0hBMS5oICovLAogCQkJCTBCRjI4
QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLywKIAkJCQk4NkQ4N0RBNTEy
QkM0QjE0MDA4RTczQTEgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCTg2RDg3REE2MTJCQzRC
MTQwMDhFNzNBMSAvKiBTdGFja0JvdW5kcy5oICovLApAQCAtMjMzMyw2ICsyMzM5LDcgQEAKIAkJ
CQkxNDI5RDg4NjBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQ2MTBFMTZGNUNEMDBCMzQ0NjAgLyogU2NvcGVDaGFpbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTY5QTA3MkMwRUQxQ0U2OTAwRjFGNjgxIC8qIFNlZ21lbnRlZFZlY3Rvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzZGQjlGMEYxMkU4NTE4NjAwNTFBMkVCIC8qIFNIQTEuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMzA0MDA0MEU2QTc0OTQwMDc4NkU2QSAvKiBTbWFsbFN0cmlu
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDY0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTb3Vy
Y2VDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2MzBFMTZGNUNEMDBCMzQ0NjAgLyog
U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0Myw2ICsyODUwLDcgQEAKIAkJ
CQk4NkI5OUFCODExN0UzOTFFMDBERjVBOTAgLyogUm9wZUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDQ2OURFQTEwN0VDN0U3MDA2NTA0NDYgLyogU2NvcGVDaGFpbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3NkZCOUYxMTEyRTg1MTk2MDA1MUEyRUIgLyogU0hBMS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEgLyogU21h
bGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDg3REFFMTJCQ0E3RDEwMDhFNzNB
MSAvKiBTdGFja0JvdW5kcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiZDY5YWFmMzE0ODI0YjVmMTFhODZmMTdlNzkwYjhk
MGFkYzA3NjMuLmMyN2IyZTU0NTdlN2ZjMjI5ZTAyODI3ZGZlNGNlY2Y5MDVkZDNlNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjUsNiArNjUsNyBAQCBT
RVQoV1RGX0hFQURFUlMKICAgICBSZWZQdHJIYXNoTWFwLmgKICAgICBSZXRhaW5QdHIuaAogICAg
IFNlZ21lbnRlZFZlY3Rvci5oCisgICAgU0hBMS5oCiAgICAgU3RhY2tCb3VuZHMuaAogICAgIFN0
YXRpY0NvbnN0cnVjdG9ycy5oCiAgICAgU3RkTGliRXh0cmFzLmgKQEAgLTExNiw2ICsxMTcsNyBA
QCBTRVQoV1RGX1NPVVJDRVMKICAgICBPU1JhbmRvbVNvdXJjZS5jcHAKICAgICBSYW5kb21OdW1i
ZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorICAgIFNIQTEuY3BwCiAgICAg
U3RhY2tCb3VuZHMuY3BwCiAgICAgU3RyaW5nRXh0cmFzLmNwcAogICAgIFRocmVhZGluZy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU0hBMS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1NIQTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MTVmNWZkYWMxNjQ3ZDg5
ZDcwY2RlM2UwNjIxNTY5ODk0MzY3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NIQTEuY3BwCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQSBzdHJhaWdodGZvcndh
cmQgU0hBLTEgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gUkZDIDMxNzQuCisvLyBodHRwOi8vd3d3
LmlldGYub3JnL3JmYy9yZmMzMTc0LnR4dAorLy8gVGhlIG5hbWVzIG9mIGZ1bmN0aW9ucyBhbmQg
dmFyaWFibGVzIChzdWNoIGFzICJhIiwgImIiLCBhbmQgImYiKSBmb2xsb3cgbm90YXRpb25zIGlu
IFJGQyAzMTc0LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU0hBMS5oIgorCisj
aW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlICJTdHJpbmdF
eHRyYXMuaCIKKyNpbmNsdWRlICJ0ZXh0L0NTdHJpbmcuaCIKKyNlbmRpZgorCituYW1lc3BhY2Ug
V1RGIHsKKworI2lmZGVmIE5ERUJVRworc3RhdGljIGlubGluZSB2b2lkIHRlc3RTSEExKCkgeyB9
CisjZWxzZQorc3RhdGljIGJvb2wgaXNUZXN0U0hBMURvbmU7CisKK3N0YXRpYyB2b2lkIGV4cGVj
dFNIQTEoQ1N0cmluZyBpbnB1dCwgaW50IHJlcGVhdCwgQ1N0cmluZyBleHBlY3RlZCkKK3sKKyAg
ICBTSEExIHNoYTE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXQ7ICsraSkKKyAgICAg
ICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5k
YXRhKCkpLCBpbnB1dC5sZW5ndGgoKSk7CisgICAgVmVjdG9yPHVpbnQ4X3QsIDIwPiBkaWdlc3Q7
CisgICAgc2hhMS5jb21wdXRlSGFzaChkaWdlc3QpOworICAgIGNoYXIqIGJ1ZmZlciA9IDA7Cisg
ICAgQ1N0cmluZyBhY3R1YWwgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKDQwLCBidWZmZXIp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7ICsraSkgeworICAgICAgICBzbnByaW50
ZihidWZmZXIsIDMsICIlMDJYIiwgZGlnZXN0LmF0KGkpKTsKKyAgICAgICAgYnVmZmVyICs9IDI7
CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoYWN0dWFsID09IGV4cGVjdGVkLCAiaW5w
dXQ6ICVzLCByZXBlYXQ6ICVkLCBhY3R1YWw6ICVzLCBleHBlY3RlZDogJXMiLCBpbnB1dC5kYXRh
KCksIHJlcGVhdCwgYWN0dWFsLmRhdGEoKSwgZXhwZWN0ZWQuZGF0YSgpKTsKK30KKworc3RhdGlj
IHZvaWQgdGVzdFNIQTEoKQoreworICAgIGlmIChpc1Rlc3RTSEExRG9uZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlzVGVzdFNIQTFEb25lID0gdHJ1ZTsKKworICAgIC8vIEV4YW1wbGVzIHRha2Vu
IGZyb20gc2FtcGxlIGNvZGUgaW4gUkZDIDMxNzQuCisgICAgZXhwZWN0U0hBMSgiYWJjIiwgMSwg
IkE5OTkzRTM2NDcwNjgxNkFCQTNFMjU3MTc4NTBDMjZDOUNEMEQ4OUQiKTsKKyAgICBleHBlY3RT
SEExKCJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9w
bm9wcSIsIDEsICI4NDk4M0U0NDFDM0JEMjZFQkFBRTRBQTFGOTUxMjlFNUU1NDY3MEYxIik7Cisg
ICAgZXhwZWN0U0hBMSgiYSIsIDEwMDAwMDAsICIzNEFBOTczQ0Q0QzREQUE0RjYxRUVCMkJEQkFE
MjczMTY1MzQwMTZGIik7CisgICAgZXhwZWN0U0hBMSgiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3
MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NyIsIDEwLCAiREVBMzU2QTJD
REREOTBDN0E3RUNFREM1RUJCNTYzOTM0RjQ2MDQ1MiIpOworfQorI2VuZGlmCisKK3N0YXRpYyBp
bmxpbmUgdWludDMyX3QgZihpbnQgdCwgdWludDMyX3QgYiwgdWludDMyX3QgYywgdWludDMyX3Qg
ZCkKK3sKKyAgICBBU1NFUlQodCA+PSAwICYmIHQgPCA4MCk7CisgICAgaWYgKHQgPCAyMCkKKyAg
ICAgICAgcmV0dXJuIChiICYgYykgfCAoKH5iKSAmIGQpOworICAgIGlmICh0IDwgNDApCisgICAg
ICAgIHJldHVybiBiIF4gYyBeIGQ7CisgICAgaWYgKHQgPCA2MCkKKyAgICAgICAgcmV0dXJuIChi
ICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKTsKKyAgICByZXR1cm4gYiBeIGMgXiBkOworfQorCitz
dGF0aWMgaW5saW5lIHVpbnQzMl90IGsoaW50IHQpCit7CisgICAgQVNTRVJUKHQgPj0gMCAmJiB0
IDwgODApOworICAgIGlmICh0IDwgMjApCisgICAgICAgIHJldHVybiAweDVhODI3OTk5OworICAg
IGlmICh0IDwgNDApCisgICAgICAgIHJldHVybiAweDZlZDllYmExOworICAgIGlmICh0IDwgNjAp
CisgICAgICAgIHJldHVybiAweDhmMWJiY2RjOworICAgIHJldHVybiAweGNhNjJjMWQ2OworfQor
CitzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJvdGF0ZUxlZnQoaW50IG4sIHVpbnQzMl90IHgpCit7
CisgICAgQVNTRVJUKG4gPj0gMCAmJiBuIDwgMzIpOworICAgIHJldHVybiAoeCA8PCBuKSB8ICh4
ID4+ICgzMiAtIG4pKTsKK30KKworU0hBMTo6U0hBMSgpCit7CisgICAgdGVzdFNIQTEoKTsKKyAg
ICByZXNldCgpOworfQorCit2b2lkIFNIQTE6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHdoaWxlIChsZW5ndGgtLSkgeworICAgICAgICBBU1NF
UlQobV9jdXJzb3IgPCA2NCk7CisgICAgICAgIG1fYnVmZmVyW21fY3Vyc29yKytdID0gKmlucHV0
Kys7CisgICAgICAgICsrbV90b3RhbEJ5dGVzOworICAgICAgICBpZiAobV9jdXJzb3IgPT0gNjQp
CisgICAgICAgICAgICBwcm9jZXNzQmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgU0hBMTo6Y29t
cHV0ZUhhc2goVmVjdG9yPHVpbnQ4X3QsIDIwPiYgZGlnZXN0KQoreworICAgIGZpbmFsaXplKCk7
CisKKyAgICBkaWdlc3QuY2xlYXIoKTsKKyAgICBkaWdlc3QucmVzaXplKDIwKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICAvLyBUcmVhdCBoYXNoVmFsdWUg
YXMgYSBiaWctZW5kaWFuIHZhbHVlLgorICAgICAgICB1aW50MzJfdCBoYXNoVmFsdWUgPSBtX2hh
c2hbaV07CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgNDsgKytqKSB7CisgICAgICAgICAg
ICBkaWdlc3RbNCAqIGkgKyAoMyAtIGopXSA9IGhhc2hWYWx1ZSAmIDB4RkY7CisgICAgICAgICAg
ICBoYXNoVmFsdWUgPj49IDg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXNldCgpOworfQor
Cit2b2lkIFNIQTE6OmZpbmFsaXplKCkKK3sKKyAgICBBU1NFUlQobV9jdXJzb3IgPCA2NCk7Cisg
ICAgbV9idWZmZXJbbV9jdXJzb3IrK10gPSAweDgwOworICAgIGlmIChtX2N1cnNvciA+IDU2KSB7
CisgICAgICAgIC8vIFBhZCBvdXQgdG8gbmV4dCBibG9jay4KKyAgICAgICAgd2hpbGUgKG1fY3Vy
c29yIDwgNjQpCisgICAgICAgICAgICBtX2J1ZmZlclttX2N1cnNvcisrXSA9IDB4MDA7CisgICAg
ICAgIHByb2Nlc3NCbG9jaygpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSBtX2N1cnNv
cjsgaSA8IDU2OyArK2kpCisgICAgICAgIG1fYnVmZmVyW2ldID0gMHgwMDsKKworICAgIC8vIFdy
aXRlIHRoZSBsZW5ndGggYXMgYSBiaWctZW5kaWFuIDY0LWJpdCB2YWx1ZS4KKyAgICB1aW50NjRf
dCBiaXRzID0gbV90b3RhbEJ5dGVzICogODsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsr
aSkgeworICAgICAgICBtX2J1ZmZlcls1NiArICg3IC0gaSldID0gYml0cyAmIDB4RkY7CisgICAg
ICAgIGJpdHMgPj49IDg7CisgICAgfQorICAgIG1fY3Vyc29yID0gNjQ7CisgICAgcHJvY2Vzc0Js
b2NrKCk7Cit9CisKK3ZvaWQgU0hBMTo6cHJvY2Vzc0Jsb2NrKCkKK3sKKyAgICBBU1NFUlQobV9j
dXJzb3IgPT0gNjQpOworCisgICAgdWludDMyX3Qgd1s4MF0gPSB7IDAgfTsKKyAgICBmb3IgKGlu
dCB0ID0gMDsgdCA8IDE2OyArK3QpCisgICAgICAgIHdbdF0gPSAobV9idWZmZXJbdCAqIDRdIDw8
IDI0KSB8IChtX2J1ZmZlclt0ICogNCArIDFdIDw8IDE2KSB8IChtX2J1ZmZlclt0ICogNCArIDJd
IDw8IDgpIHwgbV9idWZmZXJbdCAqIDQgKyAzXTsKKyAgICBmb3IgKGludCB0ID0gMTY7IHQgPCA4
MDsgKyt0KQorICAgICAgICB3W3RdID0gcm90YXRlTGVmdCgxLCB3W3QgLSAzXSBeIHdbdCAtIDhd
IF4gd1t0IC0gMTRdIF4gd1t0IC0gMTZdKTsKKworICAgIHVpbnQzMl90IGEgPSBtX2hhc2hbMF07
CisgICAgdWludDMyX3QgYiA9IG1faGFzaFsxXTsKKyAgICB1aW50MzJfdCBjID0gbV9oYXNoWzJd
OworICAgIHVpbnQzMl90IGQgPSBtX2hhc2hbM107CisgICAgdWludDMyX3QgZSA9IG1faGFzaFs0
XTsKKworICAgIGZvciAoaW50IHQgPSAwOyB0IDwgODA7ICsrdCkgeworICAgICAgICB1aW50MzJf
dCB0ZW1wID0gcm90YXRlTGVmdCg1LCBhKSArIGYodCwgYiwgYywgZCkgKyBlICsgd1t0XSArIGso
dCk7CisgICAgICAgIGUgPSBkOworICAgICAgICBkID0gYzsKKyAgICAgICAgYyA9IHJvdGF0ZUxl
ZnQoMzAsIGIpOworICAgICAgICBiID0gYTsKKyAgICAgICAgYSA9IHRlbXA7CisgICAgfQorCisg
ICAgbV9oYXNoWzBdICs9IGE7CisgICAgbV9oYXNoWzFdICs9IGI7CisgICAgbV9oYXNoWzJdICs9
IGM7CisgICAgbV9oYXNoWzNdICs9IGQ7CisgICAgbV9oYXNoWzRdICs9IGU7CisKKyAgICBtX2N1
cnNvciA9IDA7Cit9CisKK3ZvaWQgU0hBMTo6cmVzZXQoKQoreworICAgIG1fY3Vyc29yID0gMDsK
KyAgICBtX3RvdGFsQnl0ZXMgPSAwOworICAgIG1faGFzaFswXSA9IDB4Njc0NTIzMDE7CisgICAg
bV9oYXNoWzFdID0gMHhlZmNkYWI4OTsKKyAgICBtX2hhc2hbMl0gPSAweDk4YmFkY2ZlOworICAg
IG1faGFzaFszXSA9IDB4MTAzMjU0NzY7CisgICAgbV9oYXNoWzRdID0gMHhjM2QyZTFmMDsKKwor
ICAgIC8vIENsZWFyIHRoZSBidWZmZXIgYWZ0ZXIgdXNlIGluIGNhc2UgaXQncyBzZW5zaXRpdmUu
CisgICAgbWVtc2V0KG1fYnVmZmVyLCAwLCBzaXplb2YobV9idWZmZXIpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU0hBMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZDZkYzg2
NzAwMzNlNWM4YTgwYmUyNTllMDVjMjcxMTlkY2U2MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NIQTEuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXVEZf
U0hBMV9oCisjZGVmaW5lIFdURl9TSEExX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFNIQTEgeworcHVibGljOgorICAgIFNIQTEoKTsKKwor
ICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKKyAgICB7Cisg
ICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsKKyAgICB9CisgICAg
dm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CisKKyAg
ICAvLyBjb21wdXRlSGFzaCBoYXMgYSBzaWRlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIHN0YXRl
IG9mIHRoZSBvYmplY3QuCisgICAgdm9pZCBjb21wdXRlSGFzaChWZWN0b3I8dWludDhfdCwgMjA+
Jik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5hbGl6ZSgpOworICAgIHZvaWQgcHJvY2Vzc0Js
b2NrKCk7CisgICAgdm9pZCByZXNldCgpOworCisgICAgdWludDhfdCBtX2J1ZmZlcls2NF07Cisg
ICAgc2l6ZV90IG1fY3Vyc29yOyAvLyBOdW1iZXIgb2YgYnl0ZXMgZmlsbGVkIGluIG1fYnVmZmVy
ICgwLTY0KS4KKyAgICB1aW50NjRfdCBtX3RvdGFsQnl0ZXM7IC8vIE51bWJlciBvZiBieXRlcyBh
ZGRlZCBzbyBmYXIuCisgICAgdWludDMyX3QgbV9oYXNoWzVdOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKK3VzaW5nIFdURjo6U0hBMTsKKworI2VuZGlmIC8vIFdURl9TSEExX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvd3RmLnByaQppbmRleCAzYmUzYjVmYzRlOGRiZWM4MmRlZWEwZDZlZjEzZjRj
MGFmN2UxYjBmLi41ZjE1ZWIwNGM4MWEwYzRlMzI3YTljY2M0NWFlMWNmNDY0ZmRkZTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi93dGYucHJpCkBAIC0yMyw2ICsyMyw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHd0Zi9QYWdlQmxvY2suY3BwIFwKICAgICB3dGYvUmFuZG9tTnVtYmVyLmNwcCBcCiAgICAg
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAorICAgIHd0Zi9TSEExLmNwcCBcCiAgICAg
d3RmL1N0YWNrQm91bmRzLmNwcCBcCiAgICAgd3RmL1RDU3lzdGVtQWxsb2MuY3BwIFwKICAgICB3
dGYvVGhyZWFkaW5nTm9uZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIxN2VhNjkxNDM4OTUzNzZjZDJl
ZDhlNjA0ZWU3YTFlNTI2MDIyZDMuLjhjMWNhZmMwZmJkMjFlOTA1NTJlMzI1NjNhMGYxYWNlNjdj
NWYxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wMi0yNCAgWXV0YSBLaXRh
bXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgU0hBLTEgZm9yIG5ldyBXZWJTb2NrZXQgcHJvdG9jb2wK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MDM5CisK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU0hBMS5oOiBBZGRlZC4KKwogMjAxMS0w
Mi0yNCAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvU0hBMS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L1NIQTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44YmI0OGIyNDBjODFkYjk1NTQ0MWFmN2FhMDJmM2NhN2Q1Mzc5
MWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL1NIQTEuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU0hBMV9oCisj
ZGVmaW5lIFdlYkNvcmVfRldEX1NIQTFfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NIQTEu
aD4KKyNlbmRpZgo=
</data>
<flag name="review"
          id="75489"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="76725"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>