<?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>74063</bug_id>
          
          <creation_ts>2011-12-08 00:14:04 -0800</creation_ts>
          <short_desc>Improve charactersAreAllASCII() to compare multiple characters at a time</short_desc>
          <delta_ts>2012-01-05 01:39:30 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517233</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 00:14:04 -0800</bug_when>
    <thetext>We could load a word size of character at every iteration...
Memory access would be more effective, and we would need less iterations in the loop to go over the string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517240</commentid>
    <comment_count>1</comment_count>
      <attachid>118344</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 00:42:27 -0800</bug_when>
    <thetext>Created attachment 118344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517242</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 00:47:15 -0800</bug_when>
    <thetext>This is more for fun than anything.

I measured the gain of the function itself, it is a bit more than the expected 4x, 8x, 16x. I did not really look into it but I guess that is because of the reduced number of memory access.

The function get a lot more complicated than the original, so I am not sure that is worth it for the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517272</commentid>
    <comment_count>3</comment_count>
      <attachid>118344</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-08 02:32:56 -0800</bug_when>
    <thetext>Comment on attachment 118344
Patch

Attachment 118344 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10797174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517530</commentid>
    <comment_count>4</comment_count>
      <attachid>118344</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-08 10:35:08 -0800</bug_when>
    <thetext>Comment on attachment 118344
Patch

The functions in TextCodecASCIIFastPath.h provide a more readable way to do this type of optimization for single-byte characters, and ideally I’d like to see this share code with that. Maybe we can move those functions into WTF?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517548</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-08 10:48:30 -0800</bug_when>
    <thetext>&gt; The functions in TextCodecASCIIFastPath.h provide a more readable way to do this type of optimization for single-byte characters, and ideally I’d like to see this share code with that. Maybe we can move those functions into WTF?

I was unaware the mask were available in TextCodecASCIIFastPath.h. I can have a look at moving the file to WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519070</commentid>
    <comment_count>6</comment_count>
      <attachid>118751</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-12 01:39:20 -0800</bug_when>
    <thetext>Created attachment 118751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519072</commentid>
    <comment_count>7</comment_count>
      <attachid>118751</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-12 01:57:01 -0800</bug_when>
    <thetext>Comment on attachment 118751
Patch

Attachment 118751 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10836058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519435</commentid>
    <comment_count>8</comment_count>
      <attachid>118838</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-12 13:54:54 -0800</bug_when>
    <thetext>Created attachment 118838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523804</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-19 02:30:48 -0800</bug_when>
    <thetext>Now that ASCIIType.h is no longer bloated, what do you think about merging the ASCIIFastPathHelper.h in this patch in ASCIIType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524062</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-19 11:31:38 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Now that ASCIIType.h is no longer bloated, what do you think about merging the ASCIIFastPathHelper.h in this patch in ASCIIType?

I don’t think this belongs in &lt;wtf/ASCIICType.h&gt;. The point of &lt;ASCIICType.h&gt; is to offer functions like the ones in &lt;ctype.h&gt;, but ones that work with ASCII. It should not have other functions in it. In fact, I believe some of the functions creeping in there do not belong there.

I do think its’s good to have some functions for working with ASCII all in one header. It could even be named &lt;wtf/ASCII.h&gt;. I don’t like the word “helper” in a header name. Headers all help you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524068</commentid>
    <comment_count>11</comment_count>
      <attachid>118838</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-19 11:38:07 -0800</bug_when>
    <thetext>Comment on attachment 118838
Patch

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

Did you measure the performance impact of this? The code is faster for long strings but I suspect it’s slower for short ones.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:4
&gt; + * Copyright (C) 2011 Benjamin Poulain &lt;benjamin@webkit.org&gt;

If you are doing this work as an Apple employee you should not add your own copyright to the file. If you did the work when not an Apple employee that might be OK.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:46
&gt; +
&gt; +

We normally don’t use multiple blank lines to paragraph. We use just one.

If you want a larger separator you’d normally use a comment.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:47
&gt; +template&lt;size_t size, typename CharType&gt; struct NonASCIIMask;

I’d prefer that “character type” not be abbreviated to CharType. How about CharacterType? I would like that in ASCIICType.h too.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:69
&gt; +// Note: this function assume the input is likely all ASCII, and
&gt; +// do not leave early if it is not the case.

The word “this” should be capitalized.

The word “do” should be “does”.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:80
&gt; +    // Prologue: align the input.
&gt; +    while (!isAlignedToMachineWord(characters) &amp;&amp; (characters != end)) {
&gt; +        allCharBits |= *characters;
&gt; +        ++characters;
&gt; +    }

We may need to find a way to incorporate a fast path for buffers that are known to be aligned to a machine word that omits this first loop. For example, I suspect all string buffers for StringImpl have such a guarantee.

I don’t think the parentheses are characters != end are needed.

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:83
&gt; +    const CharType *wordEnd = alignToMachineWord(end);

Misplaced * here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524084</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-19 11:53:01 -0800</bug_when>
    <thetext>ASCIIFastPath.h it is then :)

&gt; &gt; Source/JavaScriptCore/wtf/text/ASCIIFastPathHelper.h:4
&gt; &gt; + * Copyright (C) 2011 Benjamin Poulain &lt;benjamin@webkit.org&gt;
&gt; 
&gt; If you are doing this work as an Apple employee you should not add your own copyright to the file. If you did the work when not an Apple employee that might be OK.

I use to have the distinction between work done...at work, and what I do on my weekends at home. I&apos;ll remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529216</commentid>
    <comment_count>13</comment_count>
      <attachid>121030</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-03 17:58:53 -0800</bug_when>
    <thetext>Created attachment 121030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529217</commentid>
    <comment_count>14</comment_count>
      <attachid>121030</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-03 18:01:50 -0800</bug_when>
    <thetext>Comment on attachment 121030
Patch

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

&gt; Source/JavaScriptCore/wtf/text/ASCIIFastPath.h:2
&gt; + * Copyright (C) 2011 Apple Inc. All rights reserved.

Needs more 2012!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529218</commentid>
    <comment_count>15</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-01-03 18:03:41 -0800</bug_when>
    <thetext>All the bots are red, I&apos;ll wait a bit before landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530100</commentid>
    <comment_count>16</comment_count>
      <attachid>121030</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 01:39:24 -0800</bug_when>
    <thetext>Comment on attachment 121030
Patch

Clearing flags on attachment: 121030

Committed r104127: &lt;http://trac.webkit.org/changeset/104127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530101</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 01:39:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118344</attachid>
            <date>2011-12-08 00:42:27 -0800</date>
            <delta_ts>2011-12-12 01:39:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74063-20111208004224.patch</filename>
            <type>text/plain</type>
            <size>2773</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MGRkNzY1ZTM3MTg3ZjEwZDkyMjliNzc3ZTJiNzY5MDE4NmM0YmUyLi4zMzY5NjQ1MmYxYTdmNmFm
MDBlNWNmMGQzOGZhOThkMTJlZDJiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMS0xMi0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wcm92ZSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoKSB0byBjb21w
YXJlIG11bHRpcGxlIGNoYXJhY3RlcnMgYXQgYSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCwgY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKCkgbG9hZCBhcyBtYW55IGNoYXJhY3RlcnMgYXMgd2UgY2FuIGZpdAorICAgICAgICBp
biBhIHJlZ2lzdGVyIGFuZCBjb21wYXJlIHRoZW0gYXQgb25jZS4KKworICAgICAgICAqIHd0Zi90
ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpjaGFyYWN0ZXJzQXJlQWxsQVNDSUkpOgor
CiAyMDExLTEyLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
WmFwcGluZyBhIGJsb2NrIHRoYXQgaXMgTWFya2VkIGxlYWRzIHRvIGRlYWQgb2JqZWN0cyBiZWlu
ZyBtaXN0YWtlbiBmb3IgbGl2ZSBvbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
V1RGU3RyaW5nLmgKaW5kZXggN2ZmYzdlYzQ2NzBkYmU5YmFlZjA0ZDIzOTAzMTNkM2U2ZjM2ZjEw
ZC4uYzVjNWEyOGQ4NWUzOWViYmJhNzUzZDUzYTZkYWRhNGNiMGM3MjZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDg1LDEyICs0ODUsNDIgQEAg
aW5saW5lIE5TU3RyaW5nKiBuc1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5nJiBzdHIpIHsg
IHJldHVybiBzdHIuaXNFbXB0eSgpID8KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgogaW5s
aW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIENoYXJUeXBlIG9yZWQgPSAwOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIG9yZWQgfD0gY2hhcmFjdGVyc1tp
XTsKKyAgICBDT01QSUxFX0FTU0VSVCgoc2l6ZW9mKENoYXJUeXBlKSA8PSAyKSwgQ2hhck1hc2tS
YW5nZVR3b0J5dGVzKTsKKyAgICB1aW50cHRyX3Qgb3JlZCA9IDA7CisgICAgY29uc3QgQ2hhclR5
cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisKKyAgICAvLyBQcm9sb2d1ZTogYWxpZ24g
dGhlIGlucHV0LgorICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNoYXJh
Y3RlcnMpKSAlIHNpemVvZih1aW50cHRyX3QpICYmIChjaGFyYWN0ZXJzICE9IGVuZCkpIHsKKyAg
ICAgICAgb3JlZCB8PSAqY2hhcmFjdGVyczsKKyAgICAgICAgKytjaGFyYWN0ZXJzOworICAgIH0K
KworICAgIC8vIENvbXBhcmUgdGhlIHZhbHVlcyBvZiBDUFUgd29yZCBzaXplLgorICAgIGNvbnN0
IENoYXJUeXBlICp3b3JkRW5kID0gZW5kIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihl
bmQpICUgc2l6ZW9mKHVpbnRwdHJfdCkpOworICAgIHdoaWxlIChjaGFyYWN0ZXJzIDwgd29yZEVu
ZCkgeworICAgICAgICBvcmVkIHw9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50cHRyX3Qq
PihjaGFyYWN0ZXJzKSk7CisgICAgICAgIGNoYXJhY3RlcnMgKz0gKHNpemVvZih1aW50cHRyX3Qp
IC8gc2l6ZW9mKENoYXJUeXBlKSk7CisgICAgfQogCi0gICAgQ2hhclR5cGUgbG93Qml0cyA9IDB4
N0Y7Ci0gICAgcmV0dXJuICEob3JlZCAmIH5sb3dCaXRzKTsKKyAgICAvLyBQcm9jZXNzIHRoZSBy
ZW1haW5pbmcgYnl0ZXMuCisgICAgd2hpbGUgKGNoYXJhY3RlcnMgIT0gZW5kKSB7CisgICAgICAg
IG9yZWQgfD0gKmNoYXJhY3RlcnM7CisgICAgICAgICsrY2hhcmFjdGVyczsKKyAgICB9CisKKyAg
ICB1aW50cHRyX3QgbG93Qml0c01hc2s7CisjaWYgX19MUDY0X18KKyAgICBpZiAoc2l6ZW9mKENo
YXJUeXBlKSA9PSAxKQorICAgICAgICBsb3dCaXRzTWFzayA9IDB4N0Y3RjdGN0Y3RjdGN0Y3RjsK
KyAgICBlbHNlIGlmIChzaXplb2YoQ2hhclR5cGUpID09IDIpCisgICAgICAgIGxvd0JpdHNNYXNr
ID0gMHgwMDdGMDA3RjAwN0YwMDdGOworI2Vsc2UKKyAgICBpZiAoc2l6ZW9mKENoYXJUeXBlKSA9
PSAxKQorICAgICAgICBsb3dCaXRzTWFzayA9IDB4N0Y3RjdGN0Y7CisgICAgZWxzZSBpZiAoc2l6
ZW9mKENoYXJUeXBlKSA9PSAyKQorICAgICAgICBsb3dCaXRzTWFzayA9IDB4MDA3RjAwN0Y7Cisj
ZW5kaWYKKyAgICByZXR1cm4gIShvcmVkICYgfmxvd0JpdHNNYXNrKTsKIH0KIAogaW5saW5lIGJv
b2wgU3RyaW5nOjpjb250YWluc09ubHlBU0NJSSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118751</attachid>
            <date>2011-12-12 01:39:20 -0800</date>
            <delta_ts>2011-12-12 13:54:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74063-20111212013919.patch</filename>
            <type>text/plain</type>
            <size>19416</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzdhMTlmMzQzYTY5YTFhZTFkMTNhNjA0ODAxNDEyNDFlNGM4YmNiLi4wYTJkNGVkOWVlZTk0MDE1
YjUzNmUzZGM0OTNjZWQ5NmU4ZTQyN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxMS0xMi0xMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wcm92ZSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoKSB0byBjb21w
YXJlIG11bHRpcGxlIGNoYXJhY3RlcnMgYXQgYSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IGhlYWRlciBBU0NJSUZhc3RQYXRoSGVscGVy
LmggY29udGFpbnMgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvCisgICAgICAgIHRoZSBkZXRlY3Rp
b24gb2YgQVNDSUkgYnkgdXNpbmcgbWFjaGluZSB3b3Jkcy4gUGFydCBvZiBpdCBjb21lcyBmcm9t
CisgICAgICAgIFdlYkNvcmUncyBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmguCisKKyAgICAgICAg
VGhlIGZ1bmN0aW9uIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIGlzIG1vdmVkIHRvIFRleHRDb2Rl
Y0FTQ0lJRmFzdFBhdGguaAorICAgICAgICBhbmQgaXMgaW1wbGVtZW50ZWQgd2l0aCBjb21wdXRl
ciB3b3JkIGNvbXBhcmlzb24uCisgICAgICAgIFRoZSBnYWluIG92ZXIgdGhlIHByZXZpb3VzIGlt
cGxlbWVudGF0aW9uIG9mIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIGlzIG9mCisgICAgICAgIHRo
ZSBvcmRlciBvZiBob3cgbWFueSBjb21wYXJpc29uIGFyZSBhdm9pZGVkICg0eCwgOHgsIDE2eCBk
ZXBlbmRpbmcgb24gdGhlCisgICAgICAgIGZvcm1hdCBhbmQgdGhlIENQVSB0eXBlKS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
aToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpp
c0FsaWduZWRUb01hY2hpbmVXb3JkKToKKyAgICAgICAgKFdURjo6YWxpZ25Ub01hY2hpbmVXb3Jk
KToKKyAgICAgICAgKFdURjo6aXNBbGxBU0NJSSk6CisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNB
cmVBbGxBU0NJSSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgICog
d3RmL3d0Zi5wcm86CisKIDIwMTEtMTItMTAgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgdGVzdGFwaSBpcyBjcmFzaGluZyBvbiBXaW5kb3dz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRHbHVlL0NoYW5nZUxvZwppbmRleCBkMzZhYmVkZDg0ZDJiZWE4MTAxYTZkNWEzODlj
ZTg4Zjc4OGQyZmUzLi43M2EyMzUzMGU3MzU0ZjE2OWQzYTRjYTQ1NTM3NDVkYWJjY2Y3MmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMi0xMiAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wcm92ZSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkoKSB0byBjb21wYXJlIG11bHRpcGxlIGNoYXJhY3RlcnMgYXQg
YSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBmb3J3YXJkaW5nIGhlYWRlciBmb3IgQVNDSUlGYXN0UGF0aEhlbHBlci5oLgorCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oOiBBZGRl
ZC4KKwogMjAxMS0xMi0wMiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmVuYW1lIFdURiBjbGFzcyBmcm9tIFRlbXBvcmFyaWx5Q2hhbmdlIHRvIFRlbXBvcmFy
eUNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjFlZmEyMzYyODY2NjU4ZTI5NzYyMmNiOTNkNGNhMjYw
MDFjNzY2Li41NDlhM2NmYTdiNTQ0MGUyMGVjOTVkMmIwZTJmMTZlMDk1NjBjNTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTItMTIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcHJvdmUgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KCkgdG8gY29tcGFyZSBtdWx0aXBsZSBjaGFyYWN0ZXJzIGF0IGEgdGltZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHNvbWUgcGFydCBvZiBUZXh0
Q29kZWNBU0NJSUZhc3RQYXRoLmggdG8gV1RGIGluIEFTQ0lJRmFzdFBhdGhIZWxwZXIuaC4KKyAg
ICAgICAgVGhlIGZ1bmN0aW9uIGlzQWxsQVNDSUkoKSBpcyBjaGFuZ2VkIHRvIHRoZSB0ZW1wbGF0
ZSB2ZXJzaW9uIHdoaWNoIG5vdyB3b3JrcworICAgICAgICB3aXRoIGJvdGggTENoYXIgYW5kIFVD
aGFyLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0
aEhlbHBlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJ
RmFzdFBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlBU0NJSU1hY2hpbmVXb3JkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29kZWNMYXRpbjE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OmRlY29k
ZSk6CisKIDIwMTEtMTItMTEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIEtpbGxSaW5nTm9uZS5jcHAgdG8gTWFjIGJ1aWxkIHN5c3RlbQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzN2UxNzc4YjM5MjAz
YTgwZjFlOGRjMzQwOTZhY2M2YmI2Y2Y0OGM3Li4zMjQxODc3OWZkMjYxNmNmZjVmMjdkYjFmZjlj
NWRmZTE2NzQzYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNjUwLDYgKzY1MCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVENTcGluTG9jay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RDU3lzdGVtQWxsb2MuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RD
U3lzdGVtQWxsb2MuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGhIZWxwZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCmluZGV4IDdmMTQ4ZmI5
Y2Q0ZDcyNGIwNjQ1MmE4ZDhjYzhkN2U4YmVlNWFhOGYuLjEzYjYwZGNmMjE5NTgxMzI0NmMwMmJj
NDhiZmQzNmQ3ZmQ1OGRjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5neXBpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5neXBpCkBAIC0yMzEsNiArMjMxLDcgQEAKICAgICAgICAgICAgICd3dGYvZHRvYS9maXhlZC1k
dG9hLmgnLAogICAgICAgICAgICAgJ3d0Zi9kdG9hL3N0cnRvZC5oJywKICAgICAgICAgICAgICd3
dGYvZHRvYS91dGlscy5oJywKKyAgICAgICAgICAgICd3dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVs
cGVyLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oJywKICAgICAgICAg
ICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0
L0F0b21pY1N0cmluZ0ltcGwuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagppbmRleCBiMzIwYWUzZmU5
OGFkNDczZjI2MDBhNGQ3NTU3NjhlYTgxODg4NWI1Li4xMDQ3ZDkzZjE4YWU0N2YwYjdkYzdjNGUz
YTVhOGM1ZDIzYjdkMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKQEAgLTQ0MCw2ICs0NDAsMTAg
QEAKIAkJCU5hbWU9InRleHQiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5cd3RmXHRleHRcQVNDSUlGYXN0UGF0aEhlbHBlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcdGV4dFxBdG9taWNTdHJpbmcuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWI1
MTJkMzNlYjIxOGRkNjkyZGU3YWZhYzlmMThhZmZhMTNjMTkzNC4uZjIzMzk3OWM4NzE2MzFiYjRh
YTY1ZTFmM2RhN2YzMTNlYzYwOGZiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI2Niw2ICsyNjYsNyBAQAogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQy
MTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwogCQk0MTM1
OUNGNjBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNTlDRjQwRkREODlDQjAwMjA2MTgwIC8qIERh
dGVNYXRoLmNwcCAqLzsgfTsKIAkJNDEzNTlDRjcwRkREODlDQjAwMjA2MTgwIC8qIERhdGVNYXRo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1OUNG
NTBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MzRBOEU3MTE0OTU2QTUwMDA5MTI2RjcgLyogQVND
SUlGYXN0UGF0aEhlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDM0QThFNzAxNDk1NkE1MDAwOTEyNkY3IC8qIEFTQ0lJRmFzdFBhdGhIZWxwZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDA5
RDg0NzBGQUY4MEEyMDA1MjNCODcgLyogT3duUHRyQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDBCN0FFRDBGQUY3RkNCMDA3MzMyM0UgLyog
T3duUHRyQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDRERDQ4NTMwRkFFQTg1MDAwRDZCNEVCIC8qIFBhc3NPd25QdHIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0REQ0ODUyMEZBRUE4NTAw
MEQ2QjRFQiAvKiBQYXNzT3duUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDUxNTM5QjkxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ1MTUzOUI4MTJEQzk5
NDUwMEVGN0FDNCAvKiBZYXJyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwMTEsNiArMTAxMiw3IEBACiAJCTJDRkM1QjdBMTJGNDQ3MTQwMDQ5
MTRFMiAvKiBDaGFyYWN0ZXJOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDaGFyYWN0ZXJOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1OUNG
NDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTM1OUNGNTBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGF0ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM0QThFNzAxNDk1NkE1MDAwOTEyNkY3IC8qIEFTQ0lJRmFzdFBhdGhIZWxwZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQVNDSUlGYXN0UGF0aEhlbHBlci5oOyBwYXRo
ID0gdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ0MEI3QUVEMEZBRjdGQ0IwMDczMzIzRSAvKiBPd25QdHJDb21tb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duUHRyQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0OTA5N0VFMEY4RjgxQjUwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRERDQ4NTIwRkFFQTg1MDAw
RDZCNEVCIC8qIFBhc3NPd25QdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFzc093blB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMwNCw2ICsyMzA2
LDcgQEAKIAkJODY1NjU3M0UxMTVCRTM1MjAwMjkxRjQwIC8qIHRleHQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQzNEE4RTcwMTQ5NTZBNTAwMDkxMjZG
NyAvKiBBU0NJSUZhc3RQYXRoSGVscGVyLmggKi8sCiAJCQkJODY4QkZBMDAxMTdDRUZEMTAwQjkw
OEIxIC8qIEF0b21pY1N0cmluZy5jcHAgKi8sCiAJCQkJODY4QkZBMDExMTdDRUZEMTAwQjkwOEIx
IC8qIEF0b21pY1N0cmluZy5oICovLAogCQkJCTg2RjM4ODU4MTIxMTMwQ0EwMDdBN0NFMyAvKiBB
dG9taWNTdHJpbmdIYXNoLmggKi8sCkBAIC0yNTU5LDYgKzI1NjIsNyBAQAogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTBGMjQyREE3MTNGM0IxRTgw
MDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MzRBOEU3MTE0OTU2QTUwMDA5MTI2RjcgLyogQVNDSUlGYXN0UGF0aEhlbHBlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBB
bHdheXNJbmxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOTljZWIz
M2NiYTk2MGUwMTFjMmM5MjllOWRmNzhlNjFmZDc4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oCkBAIC0wLDAg
KzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQmVuamFtaW4g
UG91bGFpbiA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQVNDSUlGYXN0UGF0aEhl
bHBlcl9oCisjZGVmaW5lIEFTQ0lJRmFzdFBhdGhIZWxwZXJfaAorCisjaW5jbHVkZSA8c3RkaW50
Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworLy8gQXNzdW1pbmcgdGhhdCBhIHBvaW50ZXIgaXMgdGhlIHNpemUgb2YgYSAibWFjaGluZSB3
b3JkIiwgdGhlbgorLy8gdWludHB0cl90IGlzIGFuIGludGVnZXIgdHlwZSB0aGF0IGlzIGFsc28g
YSBtYWNoaW5lIHdvcmQuCit0eXBlZGVmIHVpbnRwdHJfdCBNYWNoaW5lV29yZDsKK2NvbnN0IHVp
bnRwdHJfdCBtYWNoaW5lV29yZEFsaWdubWVudE1hc2sgPSBzaXplb2YoTWFjaGluZVdvcmQpIC0g
MTsKKworaW5saW5lIGJvb2wgaXNBbGlnbmVkVG9NYWNoaW5lV29yZChjb25zdCB2b2lkKiBwb2lu
dGVyKQoreworICAgIHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihwb2ludGVy
KSAmIG1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBUKiBhbGlnblRvTWFjaGluZVdvcmQoVCogcG9pbnRlcikKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIp
ICYgfm1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7Cit9CisKKwordGVtcGxhdGU8c2l6ZV90IHNp
emUsIHR5cGVuYW1lIENoYXJUeXBlPiBzdHJ1Y3QgTm9uQVNDSUlNYXNrOwordGVtcGxhdGU8PiBz
dHJ1Y3QgTm9uQVNDSUlNYXNrPDQsIFVDaGFyPiB7CisgICAgc3RhdGljIGlubGluZSBNYWNoaW5l
V29yZCB2YWx1ZSgpIHsgcmV0dXJuIDB4MDA4MDAwODBVOyB9Cit9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgTm9uQVNDSUlNYXNrPDQsIExDaGFyPiB7CisgICAgc3RhdGljIGlubGluZSBNYWNoaW5lV29y
ZCB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgwODBVOyB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
Tm9uQVNDSUlNYXNrPDgsIFVDaGFyPiB7CisgICAgc3RhdGljIGlubGluZSBNYWNoaW5lV29yZCB2
YWx1ZSgpIHsgcmV0dXJuIDB4MDA4MDAwODAwMDgwMDA4MFVMTDsgfQorfTsKK3RlbXBsYXRlPD4g
c3RydWN0IE5vbkFTQ0lJTWFzazw4LCBMQ2hhcj4geworICAgIHN0YXRpYyBpbmxpbmUgTWFjaGlu
ZVdvcmQgdmFsdWUoKSB7IHJldHVybiAweDgwODA4MDgwODA4MDgwODBVTEw7IH0KK307CisKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+CitpbmxpbmUgYm9vbCBpc0FsbEFTQ0lJKE1hY2hp
bmVXb3JkIHdvcmQpCit7CisgICAgcmV0dXJuICEod29yZCAmIE5vbkFTQ0lJTWFzazxzaXplb2Yo
TWFjaGluZVdvcmQpLCBDaGFyVHlwZT46OnZhbHVlKCkpOworfQorCisvLyBOb3RlOiB0aGlzIGZ1
bmN0aW9uIGFzc3VtZSB0aGUgaW5wdXQgaXMgbGlrZWx5IGFsbCBBU0NJSSwgYW5kCisvLyBkbyBu
b3QgbGVhdmUgZWFybHkgaWYgaXQgaXMgbm90IHRoZSBjYXNlLgordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhclR5cGU+CitpbmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3QgQ2hhclR5
cGUqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAgTWFjaGluZVdvcmQgYWxsQ2hh
ckJpdHMgPSAwOworICAgIGNvbnN0IENoYXJUeXBlKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3Ro
OworCisgICAgLy8gUHJvbG9ndWU6IGFsaWduIHRoZSBpbnB1dC4KKyAgICB3aGlsZSAoIWlzQWxp
Z25lZFRvTWFjaGluZVdvcmQoY2hhcmFjdGVycykgJiYgKGNoYXJhY3RlcnMgIT0gZW5kKSkgewor
ICAgICAgICBhbGxDaGFyQml0cyB8PSAqY2hhcmFjdGVyczsKKyAgICAgICAgKytjaGFyYWN0ZXJz
OworICAgIH0KKworICAgIC8vIENvbXBhcmUgdGhlIHZhbHVlcyBvZiBDUFUgd29yZCBzaXplLgor
ICAgIGNvbnN0IENoYXJUeXBlICp3b3JkRW5kID0gYWxpZ25Ub01hY2hpbmVXb3JkKGVuZCk7Cisg
ICAgY29uc3Qgc2l6ZV90IGxvb3BJbmNyZW1lbnQgPSBzaXplb2YoTWFjaGluZVdvcmQpIC8gc2l6
ZW9mKENoYXJUeXBlKTsKKyAgICB3aGlsZSAoY2hhcmFjdGVycyA8IHdvcmRFbmQpIHsKKyAgICAg
ICAgYWxsQ2hhckJpdHMgfD0gKihyZWludGVycHJldF9jYXN0PGNvbnN0IE1hY2hpbmVXb3JkKj4o
Y2hhcmFjdGVycykpOworICAgICAgICBjaGFyYWN0ZXJzICs9IGxvb3BJbmNyZW1lbnQ7CisgICAg
fQorCisgICAgLy8gUHJvY2VzcyB0aGUgcmVtYWluaW5nIGJ5dGVzLgorICAgIHdoaWxlIChjaGFy
YWN0ZXJzICE9IGVuZCkgeworICAgICAgICBhbGxDaGFyQml0cyB8PSAqY2hhcmFjdGVyczsKKyAg
ICAgICAgKytjaGFyYWN0ZXJzOworICAgIH0KKworICAgIE1hY2hpbmVXb3JkIG5vbkFTQ0lJQml0
TWFzayA9IE5vbkFTQ0lJTWFzazxzaXplb2YoTWFjaGluZVdvcmQpLCBDaGFyVHlwZT46OnZhbHVl
KCk7CisgICAgcmV0dXJuICEoYWxsQ2hhckJpdHMgJiBub25BU0NJSUJpdE1hc2spOworfQorCisK
K30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQVNDSUlGYXN0UGF0aEhlbHBlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggN2ZmYzdlYzQ2
NzBkYmU5YmFlZjA0ZDIzOTAzMTNkM2U2ZjM2ZjEwZC4uMGFiM2UyZTdjMGMxYmFiNjJjZTc1ZWM0
MmM1ZmNmOTQyNDk4NzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaApAQCAtMjUsNiArMjUsNyBAQAogLy8gVGhpcyBmaWxlIHdvdWxkIGJlIGNhbGxlZCBT
dHJpbmcuaCwgYnV0IHRoYXQgY29uZmxpY3RzIHdpdGggPHN0cmluZy5oPgogLy8gb24gc3lzdGVt
cyB3aXRob3V0IGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KIAorI2luY2x1ZGUgIkFTQ0lJ
RmFzdFBhdGhIZWxwZXIuaCIKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAKICNpZmRlZiBfX09C
SkNfXwpAQCAtNjEsNyArNjIsNiBAQCBzdHJ1Y3QgU3RyaW5nSGFzaDsKIAogLy8gRGVjbGFyYXRp
b25zIG9mIHN0cmluZyBvcGVyYXRpb25zCiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPiBp
bmxpbmUgYm9vbCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3Rl
cnMsIHNpemVfdCBsZW5ndGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9J
bnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAx
MCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNoYXJhY3RlcnNUb0ludFN0cmljdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKIFdURl9FWFBPUlRf
UFJJVkFURSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6
ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwpAQCAtNDgyLDE3ICs0ODIsNiBAQCBp
bmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25seUxhdGluMSgpIGNvbnN0CiBpbmxpbmUgTlNT
dHJpbmcqIG5zU3RyaW5nTmlsSWZFbXB0eShjb25zdCBTdHJpbmcmIHN0cikgeyAgcmV0dXJuIHN0
ci5pc0VtcHR5KCkgPyBuaWwgOiAoTlNTdHJpbmcqKXN0cjsgfQogI2VuZGlmCiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNv
bnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQotewotICAgIENoYXJUeXBl
IG9yZWQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAg
ICAgIG9yZWQgfD0gY2hhcmFjdGVyc1tpXTsKLQotICAgIENoYXJUeXBlIGxvd0JpdHMgPSAweDdG
OwotICAgIHJldHVybiAhKG9yZWQgJiB+bG93Qml0cyk7Ci19Ci0KIGlubGluZSBib29sIFN0cmlu
Zzo6Y29udGFpbnNPbmx5QVNDSUkoKSBjb25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcm8gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3d0Zi5wcm8KaW5kZXggZDI2Y2Q1ZGM0MTA4MTk5NDViNjhmY2NhODUxMWM5
NmI1MDg0Nzk2Zi4uNTAxNWUyYWY1ZDcwZjFhNWIzNjgxOTFmN2Q5NTQ1Nzk4MGM1NjlmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJvCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvd3RmLnBybwpAQCAtMTMxLDYgKzEzMSw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFRDUGFja2VkQ2FjaGUuaCBcCiAgICAgVENTcGluTG9jay5oIFwKICAgICBUQ1N5c3Rl
bUFsbG9jLmggXAorICAgIHRleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oIFwKICAgICB0ZXh0L0F0
b21pY1N0cmluZy5oIFwKICAgICB0ZXh0L0F0b21pY1N0cmluZ0hhc2guaCBcCiAgICAgdGV4dC9B
dG9taWNTdHJpbmdJbXBsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRHbHVlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVs
cGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzc4NTZlNzQ0Y2NmNjFiYmZlZWM5ZWRmYzJlNjNiYTQ2MDNhNGNi
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmgKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FTQ0lJRmFzdFBhdGhIZWxwZXIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGhIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODZmZGRhN2YyOWNlNGEwOTFiNDBiYzI1YmEyYmMx
MTE0NmZlNDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oCkBAIC0wLDAgKzEsNCBAQAorI2lm
bmRlZiBXZWJDb3JlX0ZXRF9BU0NJSUZhc3RQYXRoSGVscGVyX2gKKyNkZWZpbmUgV2ViQ29yZV9G
V0RfQVNDSUlGYXN0UGF0aEhlbHBlcl9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVNDSUlG
YXN0UGF0aEhlbHBlci5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oCmluZGV4IGM0MWEwYjMzNzM5MmE5N2Jl
MjJjOTY5ZWYzZGQyNjU4ZGIzZDlmNDAuLjFiYTU2ZjdkZDgwZTRiNWM0MzFmYWY3OGM5YzMyNWVj
MWFiMzgwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjQVNDSUlGYXN0UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjQVNDSUlGYXN0UGF0aC5oCkBAIC0yNywyNSArMjcsMTEgQEAKICNpZm5kZWYgVGV4dENv
ZGVjQVNDSUlGYXN0UGF0aF9oCiAjZGVmaW5lIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGhfaAogCi0j
aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBl
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEFzc3VtaW5nIHRoYXQgYSBwb2ludGVy
IGlzIHRoZSBzaXplIG9mIGEgIm1hY2hpbmUgd29yZCIsIHRoZW4KLS8vIHVpbnRwdHJfdCBpcyBh
biBpbnRlZ2VyIHR5cGUgdGhhdCBpcyBhbHNvIGEgbWFjaGluZSB3b3JkLgotdHlwZWRlZiB1aW50
cHRyX3QgTWFjaGluZVdvcmQ7Cit1c2luZyBuYW1lc3BhY2UgV1RGOwogCi0vLyBUaGlzIGNvbnN0
YW50IGhhcyB0eXBlIHVpbnRwdHJfdCBzaW5jZSB3ZSB3aWxsIHVzZSBpdCB0byBhbGlnbgotLy8g
cG9pbnRlcnMuIE5vdCBiZWNhdXNlIE1hY2hpbmVXb3JkIGlzIHVpbnRwdHJfdC4KLWNvbnN0IHVp
bnRwdHJfdCBtYWNoaW5lV29yZEFsaWdubWVudE1hc2sgPSBzaXplb2YoTWFjaGluZVdvcmQpIC0g
MTsKLQotdGVtcGxhdGU8c2l6ZV90IHNpemU+IHN0cnVjdCBOb25BU0NJSU1hc2s7Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8ND4gewotICAgIHN0YXRpYyB1bnNpZ25lZCB2YWx1ZSgp
IHsgcmV0dXJuIDB4ODA4MDgwODBVOyB9Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgTm9uQVNDSUlN
YXNrPDg+IHsKLSAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKCkgeyByZXR1cm4g
MHg4MDgwODA4MDgwODA4MDgwVUxMOyB9Ci19OworbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1w
bGF0ZTxzaXplX3Qgc2l6ZT4gc3RydWN0IFVDaGFyQnl0ZUZpbGxlcjsKIHRlbXBsYXRlPD4gc3Ry
dWN0IFVDaGFyQnl0ZUZpbGxlcjw0PiB7CkBAIC03MSwyNCArNTcsOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBVQ2hhckJ5dGVGaWxsZXI8OD4gewogICAgIH0KIH07CiAKLWlubGluZSBib29sIGlzQWxs
QVNDSUkoTWFjaGluZVdvcmQgd29yZCkKLXsKLSAgICByZXR1cm4gISh3b3JkICYgTm9uQVNDSUlN
YXNrPHNpemVvZihNYWNoaW5lV29yZCk+Ojp2YWx1ZSgpKTsKLX0KLQogaW5saW5lIHZvaWQgY29w
eUFTQ0lJTWFjaGluZVdvcmQoVUNoYXIqIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiBzb3Vy
Y2UpCiB7Ci0gICAgVUNoYXJCeXRlRmlsbGVyPHNpemVvZihNYWNoaW5lV29yZCk+Ojpjb3B5KGRl
c3RpbmF0aW9uLCBzb3VyY2UpOwotfQotCi1pbmxpbmUgYm9vbCBpc0FsaWduZWRUb01hY2hpbmVX
b3JkKGNvbnN0IHZvaWQqIHBvaW50ZXIpCi17Ci0gICAgcmV0dXJuICEocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHBvaW50ZXIpICYgbWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGFsaWduVG9NYWNoaW5lV29yZChUKiBwb2lu
dGVyKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4ocG9pbnRlcikgJiB+bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrKTsKKyAgICBV
Q2hhckJ5dGVGaWxsZXI8c2l6ZW9mKFdURjo6TWFjaGluZVdvcmQpPjo6Y29weShkZXN0aW5hdGlv
biwgc291cmNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDE1YWNkYTlkMzFh
ZDRhMTk4ODQ1OGIwZDI5YmI0NjQ2OTE0NzBmNTcuLmNmNWY5MTJhZjE2ZmM2Y2MyOTljNTRmNmEz
OTNkYjYwMjE5NDFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0xhdGluMS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBTdHJpbmcgVGV4dENvZGVjTGF0
aW4xOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wsIGJvb2ws
IGJvbwogICAgICAgICAgICAgICAgIHdoaWxlIChzb3VyY2UgPCBhbGlnbmVkRW5kKSB7CiAgICAg
ICAgICAgICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNvbnN0IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKIAotICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzQWxsQVNDSUkoY2h1bmspKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQWxsQVNDSUk8
TENoYXI+KGNodW5rKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gdXNlTG9va3VwVGFi
bGU7CiAKICAgICAgICAgICAgICAgICAgICAgY29weUFTQ0lJTWFjaGluZVdvcmQoZGVzdGluYXRp
b24sIHNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmNwcAppbmRleCAwM2E5ZWQwZGUyNWU4ZTdlOTc3YTFkYzUwNmE3ODFmMzRhNmZiNjg5Li42
ZjIwOTNlZmQ0NDIzMDRlNzBiZjU1YmQ2ODlhMTE5ZmFkMTk3NDNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBA
QCBTdHJpbmcgVGV4dENvZGVjVVRGODo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGZsdXNoLCBib29sCiAgICAgICAgICAgICAgICAgaWYgKGlzQWxpZ25lZFRv
TWFjaGluZVdvcmQoc291cmNlKSkgewogICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc291cmNl
IDwgYWxpZ25lZEVuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZVdvcmQgY2h1
bmsgPSAqcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgTWFjaGluZVdvcmQqPihzb3VyY2UpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FsbEFTQ0lJKGNodW5rKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNBbGxBU0NJSTxMQ2hhcj4oY2h1bmspKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY29weUFT
Q0lJTWFjaGluZVdvcmQoZGVzdGluYXRpb24sIHNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgKz0gc2l6ZW9mKE1hY2hpbmVXb3JkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118838</attachid>
            <date>2011-12-12 13:54:54 -0800</date>
            <delta_ts>2012-01-03 17:58:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74063-20111212135453.patch</filename>
            <type>text/plain</type>
            <size>19465</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODBjNTA5NzVmMTExYmViNTI1Y2EwZGI4N2RkOWZmN2M1MmY3ZmRmLi42NzU1ZmI0NjkyMjEwYTUy
ZmZiOTA3N2JhZTMzMGZhMmE0YjVhOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxMS0xMi0xMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wcm92ZSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoKSB0byBjb21w
YXJlIG11bHRpcGxlIGNoYXJhY3RlcnMgYXQgYSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IGhlYWRlciBBU0NJSUZhc3RQYXRoSGVscGVy
LmggY29udGFpbnMgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvCisgICAgICAgIHRoZSBkZXRlY3Rp
b24gb2YgQVNDSUkgYnkgdXNpbmcgbWFjaGluZSB3b3Jkcy4gUGFydCBvZiBpdCBjb21lcyBmcm9t
CisgICAgICAgIFdlYkNvcmUncyBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmguCisKKyAgICAgICAg
VGhlIGZ1bmN0aW9uIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIGlzIG1vdmVkIHRvIFRleHRDb2Rl
Y0FTQ0lJRmFzdFBhdGguaAorICAgICAgICBhbmQgaXMgaW1wbGVtZW50ZWQgd2l0aCBjb21wdXRl
ciB3b3JkIGNvbXBhcmlzb24uCisgICAgICAgIFRoZSBnYWluIG92ZXIgdGhlIHByZXZpb3VzIGlt
cGxlbWVudGF0aW9uIG9mIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIGlzIG9mCisgICAgICAgIHRo
ZSBvcmRlciBvZiBob3cgbWFueSBjb21wYXJpc29uIGFyZSBhdm9pZGVkICg0eCwgOHgsIDE2eCBk
ZXBlbmRpbmcgb24gdGhlCisgICAgICAgIGZvcm1hdCBhbmQgdGhlIENQVSB0eXBlKS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lw
aToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpp
c0FsaWduZWRUb01hY2hpbmVXb3JkKToKKyAgICAgICAgKFdURjo6YWxpZ25Ub01hY2hpbmVXb3Jk
KToKKyAgICAgICAgKFdURjo6aXNBbGxBU0NJSSk6CisgICAgICAgIChXVEY6OmNoYXJhY3RlcnNB
cmVBbGxBU0NJSSk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgICog
d3RmL3d0Zi5wcm86CisKIDIwMTEtMTItMDkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWJLaXQgZG9lcyBub3QgZW51bWVyYXRlIG92ZXIgQ1NT
IHByb3BlcnRpZXMgaW4gSFRNTEVsZW1lbnQuc3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0R2x1ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmlu
ZGV4IGQzNmFiZWRkODRkMmJlYTgxMDFhNmQ1YTM4OWNlODhmNzg4ZDJmZTMuLjczYTIzNTMwZTcz
NTRmMTY5ZDNhNGNhNDU1Mzc0NWRhYmNjZjcyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDExLTEyLTEyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBJbXByb3ZlIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIHRv
IGNvbXBhcmUgbXVsdGlwbGUgY2hhcmFjdGVycyBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MDYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVyIGZvciBB
U0NJSUZhc3RQYXRoSGVscGVyLmguCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYv
dGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmg6IEFkZGVkLgorCiAyMDExLTEyLTAyICBEYXZpZCBM
ZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgV1RGIGNsYXNzIGZy
b20gVGVtcG9yYXJpbHlDaGFuZ2UgdG8gVGVtcG9yYXJ5Q2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFh
OTUxM2FlNjFlY2Q1NDk5YmNkYmY4NjA3YTRkZTM5Yzc5OWViZmEuLmJkMzQxZGYwZDk0ZDEzYTky
YzFjYTExZDU5MzJhOGI5YjZiNmM4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
MS0xMi0xMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgSW1wcm92ZSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoKSB0byBjb21wYXJlIG11bHRpcGxlIGNo
YXJhY3RlcnMgYXQgYSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgc29tZSBwYXJ0IG9mIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCB0byBX
VEYgaW4gQVNDSUlGYXN0UGF0aEhlbHBlci5oLgorICAgICAgICBUaGUgZnVuY3Rpb24gaXNBbGxB
U0NJSSgpIGlzIGNoYW5nZWQgdG8gdGhlIHRlbXBsYXRlIHZlcnNpb24gd2hpY2ggbm93IHdvcmtz
CisgICAgICAgIHdpdGggYm90aCBMQ2hhciBhbmQgVUNoYXIuCisKKyAgICAgICAgKiBGb3J3YXJk
aW5nSGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Y29weUFTQ0lJTWFjaGluZVdvcmQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0xhdGluMTo6ZGVj
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGODo6ZGVjb2RlKToKKwogMjAxMS0xMi0xMiAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZSBjb2RlIHRo
YXQgY2hlY2tzIGZvciBtYXRjaGluZyBzZXRzIG9mIHRyYW5zZm9ybSBvcGVyYXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDhhZTEyYWZiMmM1OTVj
YmMwMjNiMGRjNTY0MjdjMTIzYTE3YjY5MzQuLjU1OTU5MzZmNzJjYTdiY2RiNTNhNTViMjA1YTMw
NDYwNzIyN2EzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC02NTEsNiArNjUxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGVtcG9yYXJ5Q2hhbmdlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BU0NJ
SUZhc3RQYXRoSGVscGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3Ry
aW5nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNo
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5
cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA3ZjE0
OGZiOWNkNGQ3MjRiMDY0NTJhOGQ4Y2M4ZDdlOGJlZTVhYThmLi4xM2I2MGRjZjIxOTU4MTMyNDZj
MDJiYzQ4YmZkMzZkN2ZkNThkYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZ3lwaQpAQCAtMjMxLDYgKzIzMSw3IEBACiAgICAgICAgICAgICAnd3RmL2R0b2EvZml4
ZWQtZHRvYS5oJywKICAgICAgICAgICAgICd3dGYvZHRvYS9zdHJ0b2QuaCcsCiAgICAgICAgICAg
ICAnd3RmL2R0b2EvdXRpbHMuaCcsCisgICAgICAgICAgICAnd3RmL3RleHQvQVNDSUlGYXN0UGF0
aEhlbHBlci5oJywKICAgICAgICAgICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCcsCiAgICAg
ICAgICAgICAnd3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICd3dGYv
dGV4dC9BdG9taWNTdHJpbmdJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKaW5kZXggYjMyMGFl
M2ZlOThhZDQ3M2YyNjAwYTRkNzU1NzY4ZWE4MTg4ODViNS4uMTA0N2Q5M2YxOGFlNDdmMGI3ZGM3
YzRlM2E1YThjNWQyM2I3ZDI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCkBAIC00NDAsNiArNDQw
LDEwIEBACiAJCQlOYW1lPSJ0ZXh0IgogCQkJPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXHd0Zlx0ZXh0XEFTQ0lJRmFzdFBhdGhIZWxwZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRcQXRvbWljU3RyaW5n
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDViNTEyZDMzZWIyMThkZDY5MmRlN2FmYWM5ZjE4YWZmYTEzYzE5MzQuLmYyMzM5NzljODcxNjMx
YmI0YWE2NWUxZjNkYTdmMzEzZWM2MDhmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yNjYsNiArMjY2LDcgQEAKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVD
b252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJ
NDEzNTlDRjYwRkREODlDQjAwMjA2MTgwIC8qIERhdGVNYXRoLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzU5Q0Y0MEZERDg5Q0IwMDIwNjE4MCAv
KiBEYXRlTWF0aC5jcHAgKi87IH07CiAJCTQxMzU5Q0Y3MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRl
TWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEz
NTlDRjUwRkREODlDQjAwMjA2MTgwIC8qIERhdGVNYXRoLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDM0QThFNzExNDk1NkE1MDAwOTEyNkY3IC8q
IEFTQ0lJRmFzdFBhdGhIZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNEE4RTcwMTQ5NTZBNTAwMDkxMjZGNyAvKiBBU0NJSUZhc3RQYXRoSGVs
cGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDQwOUQ4NDcwRkFGODBBMjAwNTIzQjg3IC8qIE93blB0ckNvbW1vbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNF
IC8qIE93blB0ckNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ0REQ0ODUzMEZBRUE4NTAwMEQ2QjRFQiAvKiBQYXNzT3duUHRyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NERENDg1MjBGQUVB
ODUwMDBENkI0RUIgLyogUGFzc093blB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTE1MzlCODEy
REM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMDExLDYgKzEwMTIsNyBAQAogCQkyQ0ZDNUI3QTEyRjQ0NzE0
MDA0OTE0RTIgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hhcmFjdGVyTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEz
NTlDRjQwRkREODlDQjAwMjA2MTgwIC8qIERhdGVNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzNTlDRjUwRkREODlDQjAwMjA2MTgwIC8qIERhdGVNYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVNYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQzNEE4RTcwMTQ5NTZBNTAwMDkxMjZGNyAvKiBBU0NJSUZhc3RQYXRoSGVscGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFTQ0lJRmFzdFBhdGhIZWxwZXIuaDsg
cGF0aCA9IHRleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDBCN0FFRDBGQUY3RkNCMDA3MzMyM0UgLyogT3duUHRyQ29tbW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE93blB0ckNvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmlu
ZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0REQ0ODUyMEZBRUE4
NTAwMEQ2QjRFQiAvKiBQYXNzT3duUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhc3NPd25QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMDQsNiAr
MjMwNiw3IEBACiAJCTg2NTY1NzNFMTE1QkUzNTIwMDI5MUY0MCAvKiB0ZXh0ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MzRBOEU3MDE0OTU2QTUwMDA5
MTI2RjcgLyogQVNDSUlGYXN0UGF0aEhlbHBlci5oICovLAogCQkJCTg2OEJGQTAwMTE3Q0VGRDEw
MEI5MDhCMSAvKiBBdG9taWNTdHJpbmcuY3BwICovLAogCQkJCTg2OEJGQTAxMTE3Q0VGRDEwMEI5
MDhCMSAvKiBBdG9taWNTdHJpbmcuaCAqLywKIAkJCQk4NkYzODg1ODEyMTEzMENBMDA3QTdDRTMg
LyogQXRvbWljU3RyaW5nSGFzaC5oICovLApAQCAtMjU1OSw2ICsyNTYyLDcgQEAKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkwRjI0MkRBNzEzRjNC
MUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDM0QThFNzExNDk1NkE1MDAwOTEyNkY3IC8qIEFTQ0lJRmFzdFBhdGhIZWxwZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNDBFMTZGNUNEMDBCMzQ0NjAg
LyogQWx3YXlzSW5saW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNTBFMTZGNUNEMDBC
MzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGZm
ZWUzMzBiYzljMmFjOGYzOWEyYzRiZWYxY2VkYTI1NGM5MmFiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaApAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDExIEJlbmph
bWluIFBvdWxhaW4gPGJlbmphbWluQHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEFTQ0lJRmFzdFBh
dGhIZWxwZXJfaAorI2RlZmluZSBBU0NJSUZhc3RQYXRoSGVscGVyX2gKKworI2luY2x1ZGUgPHN0
ZGludC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIEFzc3VtaW5nIHRoYXQgYSBwb2ludGVyIGlzIHRoZSBzaXplIG9mIGEgIm1hY2hp
bmUgd29yZCIsIHRoZW4KKy8vIHVpbnRwdHJfdCBpcyBhbiBpbnRlZ2VyIHR5cGUgdGhhdCBpcyBh
bHNvIGEgbWFjaGluZSB3b3JkLgordHlwZWRlZiB1aW50cHRyX3QgTWFjaGluZVdvcmQ7Citjb25z
dCB1aW50cHRyX3QgbWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrID0gc2l6ZW9mKE1hY2hpbmVXb3Jk
KSAtIDE7CisKK2lubGluZSBib29sIGlzQWxpZ25lZFRvTWFjaGluZVdvcmQoY29uc3Qgdm9pZCog
cG9pbnRlcikKK3sKKyAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocG9p
bnRlcikgJiBtYWNoaW5lV29yZEFsaWdubWVudE1hc2spOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgVCogYWxpZ25Ub01hY2hpbmVXb3JkKFQqIHBvaW50ZXIpCit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihwb2lu
dGVyKSAmIH5tYWNoaW5lV29yZEFsaWdubWVudE1hc2spOworfQorCisKK3RlbXBsYXRlPHNpemVf
dCBzaXplLCB0eXBlbmFtZSBDaGFyVHlwZT4gc3RydWN0IE5vbkFTQ0lJTWFzazsKK3RlbXBsYXRl
PD4gc3RydWN0IE5vbkFTQ0lJTWFzazw0LCBVQ2hhcj4geworICAgIHN0YXRpYyBpbmxpbmUgdWlu
dDMyX3QgdmFsdWUoKSB7IHJldHVybiAweDAwODAwMDgwVTsgfQorfTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IE5vbkFTQ0lJTWFzazw0LCBMQ2hhcj4geworICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3Qg
dmFsdWUoKSB7IHJldHVybiAweDgwODA4MDgwVTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IE5v
bkFTQ0lJTWFzazw4LCBVQ2hhcj4geworICAgIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgdmFsdWUo
KSB7IHJldHVybiAweDAwODAwMDgwMDA4MDAwODBVTEw7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBOb25BU0NJSU1hc2s8OCwgTENoYXI+IHsKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IHZh
bHVlKCkgeyByZXR1cm4gMHg4MDgwODA4MDgwODA4MDgwVUxMOyB9Cit9OworCisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJUeXBlPgoraW5saW5lIGJvb2wgaXNBbGxBU0NJSShNYWNoaW5lV29yZCB3
b3JkKQoreworICAgIHJldHVybiAhKHdvcmQgJiBOb25BU0NJSU1hc2s8c2l6ZW9mKE1hY2hpbmVX
b3JkKSwgQ2hhclR5cGU+Ojp2YWx1ZSgpKTsKK30KKworLy8gTm90ZTogdGhpcyBmdW5jdGlvbiBh
c3N1bWUgdGhlIGlucHV0IGlzIGxpa2VseSBhbGwgQVNDSUksIGFuZAorLy8gZG8gbm90IGxlYXZl
IGVhcmx5IGlmIGl0IGlzIG5vdCB0aGUgY2FzZS4KK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBl
PgoraW5saW5lIGJvb2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IENoYXJUeXBlKiBjaGFy
YWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQoreworICAgIE1hY2hpbmVXb3JkIGFsbENoYXJCaXRzID0g
MDsKKyAgICBjb25zdCBDaGFyVHlwZSogZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKKworICAg
IC8vIFByb2xvZ3VlOiBhbGlnbiB0aGUgaW5wdXQuCisgICAgd2hpbGUgKCFpc0FsaWduZWRUb01h
Y2hpbmVXb3JkKGNoYXJhY3RlcnMpICYmIChjaGFyYWN0ZXJzICE9IGVuZCkpIHsKKyAgICAgICAg
YWxsQ2hhckJpdHMgfD0gKmNoYXJhY3RlcnM7CisgICAgICAgICsrY2hhcmFjdGVyczsKKyAgICB9
CisKKyAgICAvLyBDb21wYXJlIHRoZSB2YWx1ZXMgb2YgQ1BVIHdvcmQgc2l6ZS4KKyAgICBjb25z
dCBDaGFyVHlwZSAqd29yZEVuZCA9IGFsaWduVG9NYWNoaW5lV29yZChlbmQpOworICAgIGNvbnN0
IHNpemVfdCBsb29wSW5jcmVtZW50ID0gc2l6ZW9mKE1hY2hpbmVXb3JkKSAvIHNpemVvZihDaGFy
VHlwZSk7CisgICAgd2hpbGUgKGNoYXJhY3RlcnMgPCB3b3JkRW5kKSB7CisgICAgICAgIGFsbENo
YXJCaXRzIHw9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBNYWNoaW5lV29yZCo+KGNoYXJhY3Rl
cnMpKTsKKyAgICAgICAgY2hhcmFjdGVycyArPSBsb29wSW5jcmVtZW50OworICAgIH0KKworICAg
IC8vIFByb2Nlc3MgdGhlIHJlbWFpbmluZyBieXRlcy4KKyAgICB3aGlsZSAoY2hhcmFjdGVycyAh
PSBlbmQpIHsKKyAgICAgICAgYWxsQ2hhckJpdHMgfD0gKmNoYXJhY3RlcnM7CisgICAgICAgICsr
Y2hhcmFjdGVyczsKKyAgICB9CisKKyAgICBNYWNoaW5lV29yZCBub25BU0NJSUJpdE1hc2sgPSBO
b25BU0NJSU1hc2s8c2l6ZW9mKE1hY2hpbmVXb3JkKSwgQ2hhclR5cGU+Ojp2YWx1ZSgpOworICAg
IHJldHVybiAhKGFsbENoYXJCaXRzICYgbm9uQVNDSUlCaXRNYXNrKTsKK30KKworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEFTQ0lJRmFzdFBhdGhIZWxwZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGU2MWI4MGZiNTI5NmFiM2Ji
NDA1ZGQ1MGVlZGEyZjE2YmQ3YjRkODIuLjI4ZWVmYzRlMGM0MDYwNjIxMTZhOTJjZDZjNmI4NGMy
MTA4NGNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIC8vIFRoaXMgZmlsZSB3b3VsZCBiZSBjYWxsZWQgU3RyaW5nLmgs
IGJ1dCB0aGF0IGNvbmZsaWN0cyB3aXRoIDxzdHJpbmcuaD4KIC8vIG9uIHN5c3RlbXMgd2l0aG91
dCBjYXNlLXNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCiAKKyNpbmNsdWRlICJBU0NJSUZhc3RQYXRo
SGVscGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nSW1wbC5oIgogCiAjaWZkZWYgX19PQkpDX18KQEAg
LTYxLDcgKzYyLDYgQEAgc3RydWN0IFN0cmluZ0hhc2g7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBz
dHJpbmcgb3BlcmF0aW9ucwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4gaW5saW5lIGJv
b2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbGVuZ3RoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogV1RG
X0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTQ4MiwxNyArNDgyLDYgQEAgaW5saW5lIGJv
b2wgU3RyaW5nOjpjb250YWluc09ubHlMYXRpbjEoKSBjb25zdAogaW5saW5lIE5TU3RyaW5nKiBu
c1N0cmluZ05pbElmRW1wdHkoY29uc3QgU3RyaW5nJiBzdHIpIHsgIHJldHVybiBzdHIuaXNFbXB0
eSgpID8gbmlsIDogKE5TU3RyaW5nKilzdHI7IH0KICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZT4KLWlubGluZSBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb25zdCBDaGFy
VHlwZSogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBDaGFyVHlwZSBvcmVkID0g
MDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBvcmVk
IHw9IGNoYXJhY3RlcnNbaV07Ci0KLSAgICBDaGFyVHlwZSBsb3dCaXRzID0gMHg3RjsKLSAgICBy
ZXR1cm4gIShvcmVkICYgfmxvd0JpdHMpOwotfQotCiBpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRh
aW5zT25seUFTQ0lJKCkgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJvIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi93dGYucHJvCmluZGV4IGQyNmNkNWRjNDEwODE5OTQ1YjY4ZmNjYTg1MTFjOTZiNTA4NDc5
NmYuLjUwMTVlMmFmNWQ3MGYxYTViMzY4MTkxZjdkOTU0NTc5ODBjNTY5ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnBybworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3d0Zi5wcm8KQEAgLTEzMSw2ICsxMzEsNyBAQCBIRUFERVJTICs9IFwKICAgICBU
Q1BhY2tlZENhY2hlLmggXAogICAgIFRDU3BpbkxvY2suaCBcCiAgICAgVENTeXN0ZW1BbGxvYy5o
IFwKKyAgICB0ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaCBcCiAgICAgdGV4dC9BdG9taWNTdHJp
bmcuaCBcCiAgICAgdGV4dC9BdG9taWNTdHJpbmdIYXNoLmggXAogICAgIHRleHQvQXRvbWljU3Ry
aW5nSW1wbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM3ODU2ZTc0NGNjZjYxYmJmZWVjOWVkZmMyZTYzYmE0NjAzYTRjYjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L3RleHQvQVNDSUlGYXN0UGF0aEhlbHBlci5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9BU0NJSUZhc3RQYXRoSGVscGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVscGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRoSGVs
cGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjg2ZmRkYTdmMjljZTRhMDkxYjQwYmMyNWJhMmJjMTExNDZmZTQy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfQVNDSUlGYXN0UGF0aEhlbHBlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0FTQ0lJ
RmFzdFBhdGhIZWxwZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FTQ0lJRmFzdFBhdGhI
ZWxwZXIuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaAppbmRleCBjNDFhMGIzMzczOTJhOTdiZTIyYzk2OWVm
M2RkMjY1OGRiM2Q5ZjQwLi4xYmE1NmY3ZGQ4MGU0YjVjNDMxZmFmNzhjOWMzMjVlYzFhYjM4MGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJ
RmFzdFBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FT
Q0lJRmFzdFBhdGguaApAQCAtMjcsMjUgKzI3LDExIEBACiAjaWZuZGVmIFRleHRDb2RlY0FTQ0lJ
RmFzdFBhdGhfaAogI2RlZmluZSBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoX2gKIAotI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGhIZWxwZXIuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBBc3N1bWluZyB0aGF0IGEgcG9pbnRlciBpcyB0aGUg
c2l6ZSBvZiBhICJtYWNoaW5lIHdvcmQiLCB0aGVuCi0vLyB1aW50cHRyX3QgaXMgYW4gaW50ZWdl
ciB0eXBlIHRoYXQgaXMgYWxzbyBhIG1hY2hpbmUgd29yZC4KLXR5cGVkZWYgdWludHB0cl90IE1h
Y2hpbmVXb3JkOwordXNpbmcgbmFtZXNwYWNlIFdURjsKIAotLy8gVGhpcyBjb25zdGFudCBoYXMg
dHlwZSB1aW50cHRyX3Qgc2luY2Ugd2Ugd2lsbCB1c2UgaXQgdG8gYWxpZ24KLS8vIHBvaW50ZXJz
LiBOb3QgYmVjYXVzZSBNYWNoaW5lV29yZCBpcyB1aW50cHRyX3QuCi1jb25zdCB1aW50cHRyX3Qg
bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrID0gc2l6ZW9mKE1hY2hpbmVXb3JkKSAtIDE7Ci0KLXRl
bXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgTm9uQVNDSUlNYXNrOwotdGVtcGxhdGU8PiBzdHJ1
Y3QgTm9uQVNDSUlNYXNrPDQ+IHsKLSAgICBzdGF0aWMgdW5zaWduZWQgdmFsdWUoKSB7IHJldHVy
biAweDgwODA4MDgwVTsgfQotfTsKLXRlbXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJTWFzazw4PiB7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgw
ODA4MDgwODA4MFVMTDsgfQotfTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8c2l6
ZV90IHNpemU+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hh
ckJ5dGVGaWxsZXI8ND4gewpAQCAtNzEsMjQgKzU3LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVUNo
YXJCeXRlRmlsbGVyPDg+IHsKICAgICB9CiB9OwogCi1pbmxpbmUgYm9vbCBpc0FsbEFTQ0lJKE1h
Y2hpbmVXb3JkIHdvcmQpCi17Ci0gICAgcmV0dXJuICEod29yZCAmIE5vbkFTQ0lJTWFzazxzaXpl
b2YoTWFjaGluZVdvcmQpPjo6dmFsdWUoKSk7Ci19Ci0KIGlubGluZSB2b2lkIGNvcHlBU0NJSU1h
Y2hpbmVXb3JkKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdCogc291cmNlKQogewot
ICAgIFVDaGFyQnl0ZUZpbGxlcjxzaXplb2YoTWFjaGluZVdvcmQpPjo6Y29weShkZXN0aW5hdGlv
biwgc291cmNlKTsKLX0KLQotaW5saW5lIGJvb2wgaXNBbGlnbmVkVG9NYWNoaW5lV29yZChjb25z
dCB2b2lkKiBwb2ludGVyKQotewotICAgIHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihwb2ludGVyKSAmIG1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBUKiBhbGlnblRvTWFjaGluZVdvcmQoVCogcG9pbnRlcikKLXsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHBvaW50ZXIpICYgfm1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7CisgICAgVUNoYXJCeXRl
RmlsbGVyPHNpemVvZihXVEY6Ok1hY2hpbmVXb3JkKT46OmNvcHkoZGVzdGluYXRpb24sIHNvdXJj
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAppbmRleCAxNWFjZGE5ZDMxYWQ0YTE5ODg0
NThiMGQyOWJiNDY0NjkxNDcwZjU3Li5jZjVmOTEyYWYxNmZjNmNjMjk5YzU0ZjZhMzkzZGI2MDIx
OTQxYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgU3RyaW5nIFRleHRDb2RlY0xhdGluMTo6ZGVj
b2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sLCBib29sLCBib28KICAg
ICAgICAgICAgICAgICB3aGlsZSAoc291cmNlIDwgYWxpZ25lZEVuZCkgewogICAgICAgICAgICAg
ICAgICAgICBNYWNoaW5lV29yZCBjaHVuayA9ICpyZWludGVycHJldF9jYXN0X3B0cjxjb25zdCBN
YWNoaW5lV29yZCo+KHNvdXJjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FsbEFT
Q0lJKGNodW5rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FsbEFTQ0lJPExDaGFyPihj
aHVuaykpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVzZUxvb2t1cFRhYmxlOwogCiAg
ICAgICAgICAgICAgICAgICAgIGNvcHlBU0NJSU1hY2hpbmVXb3JkKGRlc3RpbmF0aW9uLCBzb3Vy
Y2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAK
aW5kZXggMDNhOWVkMGRlMjVlOGU3ZTk3N2ExZGM1MDZhNzgxZjM0YTZmYjY4OS4uNmYyMDkzZWZk
NDQyMzA0ZTcwYmY1NWJkNjg5YTExOWZhZDE5NzQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgU3RyaW5n
IFRleHRDb2RlY1VURjg6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBmbHVzaCwgYm9vbAogICAgICAgICAgICAgICAgIGlmIChpc0FsaWduZWRUb01hY2hpbmVX
b3JkKHNvdXJjZSkpIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGFsaWdu
ZWRFbmQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJl
aW50ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNBbGxBU0NJSShjaHVuaykpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIWlzQWxsQVNDSUk8TENoYXI+KGNodW5rKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlBU0NJSU1hY2hp
bmVXb3JkKGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlICs9IHNpemVvZihNYWNoaW5lV29yZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121030</attachid>
            <date>2012-01-03 17:58:53 -0800</date>
            <delta_ts>2012-01-05 01:39:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74063-20120103175851.patch</filename>
            <type>text/plain</type>
            <size>18364</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzOTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTAxLTAzICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbXByb3ZlIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSgpIHRvIGNvbXBhcmUgbXVsdGlw
bGUgY2hhcmFjdGVycyBhdCBhIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc0MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgQSBuZXcgaGVhZGVyIEFTQ0lJRmFzdFBhdGguaCBjb250YWlucyB0aGUgZnVu
Y3Rpb25zIHJlbGF0ZWQgdG8KKyAgICAgICAgdGhlIGRldGVjdGlvbiBvZiBBU0NJSSBieSB1c2lu
ZyBtYWNoaW5lIHdvcmRzLiBQYXJ0IG9mIGl0IGNvbWVzIGZyb20KKyAgICAgICAgV2ViQ29yZSdz
IFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaC4KKworICAgICAgICBUaGUgZnVuY3Rpb24gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKCkgaXMgbW92ZWQgdG8gVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oCisg
ICAgICAgIGFuZCBpcyBpbXBsZW1lbnRlZCB3aXRoIGNvbXB1dGVyIHdvcmQgY29tcGFyaXNvbi4K
KyAgICAgICAgVGhlIGdhaW4gb3ZlciB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKCkgaXMgb2YKKyAgICAgICAgdGhlIG9yZGVyIG9mIGhvdyBtYW55
IGNvbXBhcmlzb24gYXJlIGF2b2lkZWQgKDR4LCA4eCwgMTZ4IGRlcGVuZGluZyBvbiB0aGUKKyAg
ICAgICAgZm9ybWF0IGFuZCB0aGUgQ1BVIHR5cGUpLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJRmFz
dFBhdGguaDogQWRkZWQuCisgICAgICAgIChXVEY6OmlzQWxpZ25lZFRvTWFjaGluZVdvcmQpOgor
ICAgICAgICAoV1RGOjphbGlnblRvTWFjaGluZVdvcmQpOgorICAgICAgICAoV1RGOjppc0FsbEFT
Q0lJKToKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvd3RmLnBybzoKKwogMjAxMi0wMS0w
MyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHI5ODE5Ni05ODIzNik6IEluY29ycmVjdCBsYXlvdXQgb2YgaUdvb2dsZSB3aXRoIFJTUyBmZWVk
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDEwMzk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGVtcG9yYXJ5Q2hhbmdlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHJldmlzaW9uIDEwMzk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAKICAgICAgICAg
ICAgICd3dGYvZHRvYS9maXhlZC1kdG9hLmgnLAogICAgICAgICAgICAgJ3d0Zi9kdG9hL3N0cnRv
ZC5oJywKICAgICAgICAgICAgICd3dGYvZHRvYS91dGlscy5oJywKKyAgICAgICAgICAgICd3dGYv
dGV4dC9BU0NJSUZhc3RQYXRoLmgnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oJywKICAgICAgICAgICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgnLAogICAgICAg
ICAgICAgJ3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCcsCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52
Y3Byb2oJKHJldmlzaW9uIDEwMzk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw2ICs0
NDAsMTAgQEAKIAkJCU5hbWU9InRleHQiCiAJCQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5cd3RmXHRleHRcQVNDSUlGYXN0UGF0aC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcdGV4dFxBdG9taWNTdHJpbmcuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDM5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY5LDYgKzI2OSw3
IEBACiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEw
QzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQxMzU5Q0Y2MEZERDg5Q0Iw
MDIwNjE4MCAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTM1OUNGNDBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguY3BwICov
OyB9OwogCQk0MTM1OUNGNzBGREQ4OUNCMDAyMDYxODAgLyogRGF0ZU1hdGguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzU5Q0Y1MEZERDg5Q0IwMDIw
NjE4MCAvKiBEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQzNEE4RTcxMTQ5NTZBNTAwMDkxMjZGNyAvKiBBU0NJSUZhc3RQYXRoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzRBOEU3MDE0
OTU2QTUwMDA5MTI2RjcgLyogQVNDSUlGYXN0UGF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0MDlEODQ3MEZBRjgwQTIwMDUyM0I4NyAvKiBP
d25QdHJDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0MEI3QUVEMEZBRjdGQ0IwMDczMzIzRSAvKiBPd25QdHJDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NERENDg1MzBGQUVBODUw
MDBENkI0RUIgLyogUGFzc093blB0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDRERDQ4NTIwRkFFQTg1MDAwRDZCNEVCIC8qIFBhc3NPd25QdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NTE1MzlC
OTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAxOSw2ICsx
MDIwLDcgQEAKIAkJMkNGQzVCN0ExMkY0NDcxNDAwNDkxNEUyIC8qIENoYXJhY3Rlck5hbWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3Rlck5hbWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzU5Q0Y0MEZERDg5Q0IwMDIwNjE4MCAvKiBEYXRl
TWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlTWF0aC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzU5Q0Y1MEZERDg5Q0IwMDIwNjE4
MCAvKiBEYXRlTWF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRlTWF0
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzRBOEU3MDE0OTU2QTUwMDA5MTI2
RjcgLyogQVNDSUlGYXN0UGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBB
U0NJSUZhc3RQYXRoLmg7IHBhdGggPSB0ZXh0L0FTQ0lJRmFzdFBhdGguaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNFIC8qIE93blB0ckNvbW1v
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPd25QdHJDb21tb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZl
YXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZl
YXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NERE
NDg1MjBGQUVBODUwMDBENkI0RUIgLyogUGFzc093blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYXNzT3duUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMzE5LDYgKzIzMjEsNyBAQAogCQk4NjU2NTczRTExNUJFMzUyMDAyOTFGNDAgLyogdGV4dCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDM0QThFNzAx
NDk1NkE1MDAwOTEyNkY3IC8qIEFTQ0lJRmFzdFBhdGguaCAqLywKIAkJCQk4NjhCRkEwMDExN0NF
RkQxMDBCOTA4QjEgLyogQXRvbWljU3RyaW5nLmNwcCAqLywKIAkJCQk4NjhCRkEwMTExN0NFRkQx
MDBCOTA4QjEgLyogQXRvbWljU3RyaW5nLmggKi8sCiAJCQkJODZGMzg4NTgxMjExMzBDQTAwN0E3
Q0UzIC8qIEF0b21pY1N0cmluZ0hhc2guaCAqLywKQEAgLTI1NzYsNiArMjU3OSw3IEBACiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMEYyNDJEQTcx
M0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQzNEE4RTcxMTQ5NTZBNTAwMDkxMjZGNyAvKiBBU0NJSUZhc3RQYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTQwRTE2RjVDRDAwQjM0NDYwIC8q
IEFsd2F5c0lubGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0
NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi93dGYucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
d3RmLnBybwkocmV2aXNpb24gMTAzOTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93
dGYucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVENQYWNrZWRDYWNoZS5oIFwKICAgICBUQ1NwaW5Mb2NrLmggXAogICAgIFRDU3lzdGVtQWxs
b2MuaCBcCisgICAgdGV4dC9BU0NJSUZhc3RQYXRoLmggXAogICAgIHRleHQvQXRvbWljU3RyaW5n
LmggXAogICAgIHRleHQvQXRvbWljU3RyaW5nSGFzaC5oIFwKICAgICB0ZXh0L0F0b21pY1N0cmlu
Z0ltcGwuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQVNDSUlGYXN0
UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BU0NJ
SUZhc3RQYXRoLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvQVNDSUlGYXN0UGF0aC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2lmbmRlZiBBU0NJSUZhc3RQYXRoX2gKKyNkZWZpbmUgQVNDSUlGYXN0UGF0
aF9oCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2Rl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBBc3N1bWluZyB0aGF0IGEgcG9pbnRlciBpcyB0
aGUgc2l6ZSBvZiBhICJtYWNoaW5lIHdvcmQiLCB0aGVuCisvLyB1aW50cHRyX3QgaXMgYW4gaW50
ZWdlciB0eXBlIHRoYXQgaXMgYWxzbyBhIG1hY2hpbmUgd29yZC4KK3R5cGVkZWYgdWludHB0cl90
IE1hY2hpbmVXb3JkOworY29uc3QgdWludHB0cl90IG1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayA9
IHNpemVvZihNYWNoaW5lV29yZCkgLSAxOworCitpbmxpbmUgYm9vbCBpc0FsaWduZWRUb01hY2hp
bmVXb3JkKGNvbnN0IHZvaWQqIHBvaW50ZXIpCit7CisgICAgcmV0dXJuICEocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHBvaW50ZXIpICYgbWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGFsaWduVG9NYWNoaW5lV29yZChUKiBw
b2ludGVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4ocG9pbnRlcikgJiB+bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrKTsKK30K
KwordGVtcGxhdGU8c2l6ZV90IHNpemUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0cnVjdCBO
b25BU0NJSU1hc2s7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgVUNoYXI+IHsK
KyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHZhbHVlKCkgeyByZXR1cm4gMHhGRjgwRkY4MFU7
IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8NCwgTENoYXI+IHsKKyAgICBz
dGF0aWMgaW5saW5lIHVpbnQzMl90IHZhbHVlKCkgeyByZXR1cm4gMHg4MDgwODA4MFU7IH0KK307
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBOb25BU0NJSU1hc2s8OCwgVUNoYXI+IHsKKyAgICBzdGF0aWMg
aW5saW5lIHVpbnQ2NF90IHZhbHVlKCkgeyByZXR1cm4gMHhGRjgwRkY4MEZGODBGRjgwVUxMOyB9
Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgTm9uQVNDSUlNYXNrPDgsIExDaGFyPiB7CisgICAgc3Rh
dGljIGlubGluZSB1aW50NjRfdCB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgwODA4MDgwODA4MFVM
TDsgfQorfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgoraW5saW5lIGJv
b2wgaXNBbGxBU0NJSShNYWNoaW5lV29yZCB3b3JkKQoreworICAgIHJldHVybiAhKHdvcmQgJiBO
b25BU0NJSU1hc2s8c2l6ZW9mKE1hY2hpbmVXb3JkKSwgQ2hhcmFjdGVyVHlwZT46OnZhbHVlKCkp
OworfQorCisvLyBOb3RlOiBUaGlzIGZ1bmN0aW9uIGFzc3VtZSB0aGUgaW5wdXQgaXMgbGlrZWx5
IGFsbCBBU0NJSSwgYW5kCisvLyBkb2VzIG5vdCBsZWF2ZSBlYXJseSBpZiBpdCBpcyBub3QgdGhl
IGNhc2UuCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgoraW5saW5lIGJvb2wgY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgTWFjaGluZVdvcmQgYWxsQ2hhckJpdHMgPSAwOworICAgIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CisKKyAgICAvLyBQcm9s
b2d1ZTogYWxpZ24gdGhlIGlucHV0LgorICAgIHdoaWxlICghaXNBbGlnbmVkVG9NYWNoaW5lV29y
ZChjaGFyYWN0ZXJzKSAmJiBjaGFyYWN0ZXJzICE9IGVuZCkgeworICAgICAgICBhbGxDaGFyQml0
cyB8PSAqY2hhcmFjdGVyczsKKyAgICAgICAgKytjaGFyYWN0ZXJzOworICAgIH0KKworICAgIC8v
IENvbXBhcmUgdGhlIHZhbHVlcyBvZiBDUFUgd29yZCBzaXplLgorICAgIGNvbnN0IENoYXJhY3Rl
clR5cGUqIHdvcmRFbmQgPSBhbGlnblRvTWFjaGluZVdvcmQoZW5kKTsKKyAgICBjb25zdCBzaXpl
X3QgbG9vcEluY3JlbWVudCA9IHNpemVvZihNYWNoaW5lV29yZCkgLyBzaXplb2YoQ2hhcmFjdGVy
VHlwZSk7CisgICAgd2hpbGUgKGNoYXJhY3RlcnMgPCB3b3JkRW5kKSB7CisgICAgICAgIGFsbENo
YXJCaXRzIHw9ICoocmVpbnRlcnByZXRfY2FzdDxjb25zdCBNYWNoaW5lV29yZCo+KGNoYXJhY3Rl
cnMpKTsKKyAgICAgICAgY2hhcmFjdGVycyArPSBsb29wSW5jcmVtZW50OworICAgIH0KKworICAg
IC8vIFByb2Nlc3MgdGhlIHJlbWFpbmluZyBieXRlcy4KKyAgICB3aGlsZSAoY2hhcmFjdGVycyAh
PSBlbmQpIHsKKyAgICAgICAgYWxsQ2hhckJpdHMgfD0gKmNoYXJhY3RlcnM7CisgICAgICAgICsr
Y2hhcmFjdGVyczsKKyAgICB9CisKKyAgICBNYWNoaW5lV29yZCBub25BU0NJSUJpdE1hc2sgPSBO
b25BU0NJSU1hc2s8c2l6ZW9mKE1hY2hpbmVXb3JkKSwgQ2hhcmFjdGVyVHlwZT46OnZhbHVlKCk7
CisgICAgcmV0dXJuICEoYWxsQ2hhckJpdHMgJiBub25BU0NJSUJpdE1hc2spOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gQVNDSUlGYXN0UGF0aF9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCShyZXZpc2lvbiAxMDM5ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIC8vIFRoaXMgZmlsZSB3b3VsZCBiZSBjYWxsZWQgU3Ry
aW5nLmgsIGJ1dCB0aGF0IGNvbmZsaWN0cyB3aXRoIDxzdHJpbmcuaD4KIC8vIG9uIHN5c3RlbXMg
d2l0aG91dCBjYXNlLXNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCiAKKyNpbmNsdWRlICJBU0NJSUZh
c3RQYXRoLmgiCiAjaW5jbHVkZSAiU3RyaW5nSW1wbC5oIgogCiAjaWZkZWYgX19PQkpDX18KQEAg
LTYxLDcgKzYyLDYgQEAgc3RydWN0IFN0cmluZ0hhc2g7CiAKIC8vIERlY2xhcmF0aW9ucyBvZiBz
dHJpbmcgb3BlcmF0aW9ucwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4gaW5saW5lIGJv
b2wgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbGVuZ3RoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGludCBiYXNlID0gMTApOwogV1RG
X0VYUE9SVF9QUklWQVRFIGludCBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gMCwgaW50IGJhc2UgPSAxMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUg
dW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSAwLCBpbnQgYmFzZSA9IDEwKTsKQEAgLTQ4MiwxNyArNDgyLDYgQEAgaW5saW5lIGJv
b2wgU3RyaW5nOjpjb250YWluc09ubHlMYXRpbjEoKQogaW5saW5lIE5TU3RyaW5nKiBuc1N0cmlu
Z05pbElmRW1wdHkoY29uc3QgU3RyaW5nJiBzdHIpIHsgIHJldHVybiBzdHIuaXNFbXB0eSgpID8g
bmlsIDogKE5TU3RyaW5nKilzdHI7IH0KICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
VHlwZT4KLWlubGluZSBib29sIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb25zdCBDaGFyVHlwZSog
Y2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBDaGFyVHlwZSBvcmVkID0gMDsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBvcmVkIHw9IGNo
YXJhY3RlcnNbaV07Ci0KLSAgICBDaGFyVHlwZSBsb3dCaXRzID0gMHg3RjsKLSAgICByZXR1cm4g
IShvcmVkICYgfmxvd0JpdHMpOwotfQotCiBpbmxpbmUgYm9vbCBTdHJpbmc6OmNvbnRhaW5zT25s
eUFTQ0lJKCkgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDM5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMDMgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcHJvdmUgY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKCkgdG8gY29tcGFyZSBtdWx0aXBsZSBjaGFyYWN0ZXJzIGF0IGEg
dGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQw
NjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgZm9y
d2FyZGluZyBoZWFkZXIgZm9yIEFTQ0lJRmFzdFBhdGguaC4KKworICAgICAgICAqIEZvcndhcmRp
bmdIZWFkZXJzL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaDogQWRkZWQuCisKIDIwMTEtMTItMTYg
IE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBEZS12
aXJ0dWFsaXplIGRlc3RydWN0b3JzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdGV4dC9BU0NJSUZhc3RQYXRo
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVNDSUlGYXN0UGF0aC5oPgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAzOTg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMDMgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcHJvdmUgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KCkgdG8gY29tcGFyZSBtdWx0aXBsZSBjaGFyYWN0ZXJzIGF0IGEgdGltZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBNb3ZlIHNvbWUgcGFydCBvZiBUZXh0Q29k
ZWNBU0NJSUZhc3RQYXRoLmggdG8gV1RGIGluIEFTQ0lJRmFzdFBhdGguaC4KKyAgICAgICAgVGhl
IGZ1bmN0aW9uIGlzQWxsQVNDSUkoKSBpcyBjaGFuZ2VkIHRvIHRoZSB0ZW1wbGF0ZSB2ZXJzaW9u
IHdoaWNoIG5vdyB3b3JrcworICAgICAgICB3aXRoIGJvdGggTENoYXIgYW5kIFVDaGFyLgorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlGYXN0UGF0aC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBhdGguaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvcHlBU0NJSU1hY2hpbmVXb3JkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNM
YXRpbjE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OmRlY29kZSk6CisKIDIwMTItMDEt
MDMgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBNYWtlIHN1cmUgcm9vdCBkYW1hZ2UgcmVjdCBnZXRzIHBhc3NlZCB0byByZW5kZXJl
cgpJbmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvQVNDSUlG
YXN0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FTQ0lJRmFzdFBhdGhfaAorI2Rl
ZmluZSBXZWJDb3JlX0ZXRF9BU0NJSUZhc3RQYXRoX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BU0NJSUZhc3RQYXRoLmg+CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oCShyZXZpc2lvbiAxMDM5
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0FTQ0lJRmFzdFBh
dGguaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjUgKzI3LDExIEBACiAjaWZuZGVmIFRleHRDb2Rl
Y0FTQ0lJRmFzdFBhdGhfaAogI2RlZmluZSBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoX2gKIAotI2lu
Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdURjsKIAotLy8gQXNzdW1pbmcg
dGhhdCBhIHBvaW50ZXIgaXMgdGhlIHNpemUgb2YgYSAibWFjaGluZSB3b3JkIiwgdGhlbgotLy8g
dWludHB0cl90IGlzIGFuIGludGVnZXIgdHlwZSB0aGF0IGlzIGFsc28gYSBtYWNoaW5lIHdvcmQu
Ci10eXBlZGVmIHVpbnRwdHJfdCBNYWNoaW5lV29yZDsKLQotLy8gVGhpcyBjb25zdGFudCBoYXMg
dHlwZSB1aW50cHRyX3Qgc2luY2Ugd2Ugd2lsbCB1c2UgaXQgdG8gYWxpZ24KLS8vIHBvaW50ZXJz
LiBOb3QgYmVjYXVzZSBNYWNoaW5lV29yZCBpcyB1aW50cHRyX3QuCi1jb25zdCB1aW50cHRyX3Qg
bWFjaGluZVdvcmRBbGlnbm1lbnRNYXNrID0gc2l6ZW9mKE1hY2hpbmVXb3JkKSAtIDE7Ci0KLXRl
bXBsYXRlPHNpemVfdCBzaXplPiBzdHJ1Y3QgTm9uQVNDSUlNYXNrOwotdGVtcGxhdGU8PiBzdHJ1
Y3QgTm9uQVNDSUlNYXNrPDQ+IHsKLSAgICBzdGF0aWMgdW5zaWduZWQgdmFsdWUoKSB7IHJldHVy
biAweDgwODA4MDgwVTsgfQotfTsKLXRlbXBsYXRlPD4gc3RydWN0IE5vbkFTQ0lJTWFzazw4PiB7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSgpIHsgcmV0dXJuIDB4ODA4MDgw
ODA4MDgwODA4MFVMTDsgfQotfTsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8c2l6
ZV90IHNpemU+IHN0cnVjdCBVQ2hhckJ5dGVGaWxsZXI7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBVQ2hh
ckJ5dGVGaWxsZXI8ND4gewpAQCAtNzEsMjQgKzU3LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVUNo
YXJCeXRlRmlsbGVyPDg+IHsKICAgICB9CiB9OwogCi1pbmxpbmUgYm9vbCBpc0FsbEFTQ0lJKE1h
Y2hpbmVXb3JkIHdvcmQpCi17Ci0gICAgcmV0dXJuICEod29yZCAmIE5vbkFTQ0lJTWFzazxzaXpl
b2YoTWFjaGluZVdvcmQpPjo6dmFsdWUoKSk7Ci19Ci0KIGlubGluZSB2b2lkIGNvcHlBU0NJSU1h
Y2hpbmVXb3JkKFVDaGFyKiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdCogc291cmNlKQogewot
ICAgIFVDaGFyQnl0ZUZpbGxlcjxzaXplb2YoTWFjaGluZVdvcmQpPjo6Y29weShkZXN0aW5hdGlv
biwgc291cmNlKTsKLX0KLQotaW5saW5lIGJvb2wgaXNBbGlnbmVkVG9NYWNoaW5lV29yZChjb25z
dCB2b2lkKiBwb2ludGVyKQotewotICAgIHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pihwb2ludGVyKSAmIG1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBUKiBhbGlnblRvTWFjaGluZVdvcmQoVCogcG9pbnRlcikKLXsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHBvaW50ZXIpICYgfm1hY2hpbmVXb3JkQWxpZ25tZW50TWFzayk7CisgICAgVUNoYXJCeXRl
RmlsbGVyPHNpemVvZihXVEY6Ok1hY2hpbmVXb3JkKT46OmNvcHkoZGVzdGluYXRpb24sIHNvdXJj
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAJKHJldmlzaW9uIDEwMzk4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIFN0cmluZyBUZXh0Q29kZWNMYXRpbjE6OmRl
Y29kZShjb25zdCBjaGEKICAgICAgICAgICAgICAgICB3aGlsZSAoc291cmNlIDwgYWxpZ25lZEVu
ZCkgewogICAgICAgICAgICAgICAgICAgICBNYWNoaW5lV29yZCBjaHVuayA9ICpyZWludGVycHJl
dF9jYXN0X3B0cjxjb25zdCBNYWNoaW5lV29yZCo+KHNvdXJjZSk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpc0FsbEFTQ0lJKGNodW5rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFp
c0FsbEFTQ0lJPExDaGFyPihjaHVuaykpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVz
ZUxvb2t1cFRhYmxlOwogCiAgICAgICAgICAgICAgICAgICAgIGNvcHlBU0NJSU1hY2hpbmVXb3Jk
KGRlc3RpbmF0aW9uLCBzb3VyY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEY4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjguY3BwCShyZXZpc2lvbiAxMDM5ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDUsNyArMjQ1LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShjb25zdCBjaGFyKgog
ICAgICAgICAgICAgICAgIGlmIChpc0FsaWduZWRUb01hY2hpbmVXb3JkKHNvdXJjZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGFsaWduZWRFbmQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIE1hY2hpbmVXb3JkIGNodW5rID0gKnJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNvbnN0IE1hY2hpbmVXb3JkKj4oc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghaXNBbGxBU0NJSShjaHVuaykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQWxs
QVNDSUk8TENoYXI+KGNodW5rKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlBU0NJSU1hY2hpbmVXb3JkKGRlc3RpbmF0aW9u
LCBzb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlICs9IHNpemVvZihNYWNo
aW5lV29yZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>